PHP嵌入了V8 JavaScript引擎http://www.php.net/manual/en/book.v8js.php。我想知道什么是可能的用例,尤其是。考虑到PHP是同步的,JavaScript是异步的。
答案 0 :(得分:5)
此扩展的一个强大功能是可以在客户端和服务器端使用相同的代码,在服务器端和js客户端重用PHP中相同代码的实现。
可能的用例是使用相同的JS代码提供服务器和客户端验证。客户端,代码将在浏览器中运行,服务器端则使用V8JS执行。
其他潜在用途可能是模板或客户端和服务器端都需要的任何其他业务逻辑。
但是,看起来你仍然会在这里未知领域。我没有看到任何库使用V8JS这样的东西。答案 1 :(得分:4)
我在PHP中使用JS集成的一种方法是为最终用户提供一种简单的方式,以便在基于PHP的应用程序中安全地执行用户提供的代码(a.k.a.脚本)。通过隐式隔离,可以限制可用的输入和功能,以保护用户隐私和系统安全,同时允许在服务器上下文中进行各种用户定义的脚本操作。
我必须承认,在数据库记录中查看可执行的javascript代码有时令人不安!你确实克服了它。 :)
答案 2 :(得分:2)
一个用例可以是javascript模板或框架的服务器端呈现,简称SSR。
可以使用像Vue.js这样的javascript框架编写模板,或者使用v8js进行反应和渲染。
一旦php呈现模板并将其发送到浏览器,javascript框架就可以选择它并使其成为交互式。
这里的两个好处是加载网页应用程序更快,没有恼人的javascript页面闪烁。
答案 3 :(得分:1)
对于构建爬虫,它从HTML中提取有用数据,模拟Javascript运行时特别有用,因为某些HTML数据可能被Javascript代码隐藏/损坏。因此,除非您想自己在PHP中编写Javascript解析器 - 唯一的选择是使用已经为此目的构建的V8引擎。
答案 4 :(得分:0)
PHP和Javascript是语言,说一个是同步的而一个不同步是没有意义的。非正式地说,这意味着围绕该语言使用I / O的大多数库都使用异步/同步IO。
在核心语言和V8中,没有什么是异步的。
为什么要使用它? V8上的Javascript比规范的PHP实现快几个数量级(注意还有其他PHP实现,like Facebook's HHVM),同时仍然是同样强大的脚本语言。通常,您将被迫为PHP编写C扩展以获得原始性能。
答案 5 :(得分:-1)
很抱歉碰到/添加一个古老的问题,但是在Web 2.0 / 3.0时代的一个相当明显的用例将是"当file_get_contents()只是没有削减它时。&#34 ;
虽然它可能不是最佳选择,但PHP也不是机器人,蜘蛛,刮刀等最糟糕的选择。除非执行它们的JavaScript,否则越来越多的网页都不会完整/渲染。