react-engine与其他模板引擎

时间:2015-09-16 21:35:26

标签: reactjs template-engine isomorphic-javascript react-engine

我想知道使用PayPal的反应引擎(https://github.com/paypal/react-engine),但我有些怀疑:

与Handlebars等其他模板引擎有什么好处?

为什么要上传.jsx文件,而不是(jsx预编译/转换).js文件? (这个应该更快,因为不必处理服务器上的转换)。

我一直在研究,但我感到困惑。

由于

1 个答案:

答案 0 :(得分:1)

react-engine和模板引擎之间的主要区别仅在于浏览器允许用户与浏览器页面进行交互时。然而,机器如何访问个人数据非常重要。

假设我们想要运行一个简单的网页。只是滚动和打开文本信息。通常,当浏览器请求命中服务器时,使用模板引擎(如Handlebars.js),它会尝试弄清楚如何响应以及如何操作。也就是说,模板引擎可以从存储在本地和可访问源中的文件中引用现有的提取数据。那些正在加载有关网站模板文件的所有已定义数据( headmetatitle等),并且呈现不完整的 HTML 字符串。然后将此 HTML 发送回浏览器并进行渲染。

react-engine,在同一侧发生使用相同的渲染机制。但是,它使用JSX代替模板引擎语义,或者如果需要,我们也可以使用JavaScript。因此,JSX比模板引擎更广泛。 Hajime Yamasaki Vukelic的一篇好文章从JSX and HTML templates之间的不同角度对待问题的分离。

  

使用模板引擎,您可以为库提供一个字符串(通常但不是   必然是HTML),然后转换成一段JavaScript   在执行时生成虚拟DOM结构的代码。在设计上   时间,模板只是字符串,所以我们没有直接访问权限   周围的代码。例如,我们无法导入辅助函数,   或者调用方法。这些东西只能通过抽象来实现   调用指令(可能还有其他名称取决于你所在的位置)   来自(哪里)。指令是HTML和HTML之间的粘合剂   的JavaScript。

到目前为止,两种解决方案之间没有相关的区别。指向下一个或上一个简单网页的链接只是简单的<a href="/webpage>Next</a>元素。

目前,当我们决定实施某些互动时,react-engine将成为赢家。虽然react-engine呈现不需要在客户端运行JavaScript,但它会在搜索时启用 SEO

模板引擎也有这种 SEO 支持,但影响较小。我们无法在此处全部JavaScript运行 HTML 。甚至像jQuery这样的库也需要实时访问浏览器窗口对象,这在服务器端无法轻易模拟。因此模板引擎的工作效率会降低。

总之,模板引擎可以与react-engine渲染相同。也许不是同样容易或同样快,但两种工具都是合格的。您还可以阅读有关此主题的其他优秀thread