28
2016
03

什么是同构JavaScript 应用?

什么是同构? 

“Write once, run everywhere”这是一句形容Java的语句。现在Nodejs出来后Javascript也可以用这句话来描述了。这就引出了同构JavaScript应用的概念:一份代码同时在客户端和服务端渲染的JavaScript应用。

单页应用的问题

同构JavaScript应用一直以来就是人们追寻的目标,单页应用是其中之一。单页拥有良好的交互体验,却带来一些其他问题: SEO和性能。

  1. SEO可以说是单页应用的硬伤,这导致很多需要搜索引擎的页面不能体验到单页的良好交互体验。

  2. 同时首屏性能也是单页的一个瓶颈,有些需要高性能首屏展示的网站也只能与单页应用插件而过。

根本原因我们可以看到是JavaScript只在客户端运行,而服务端生成出来客户能看到的内容。

传统解决方案

之前为了解决单页这样的问题我们通常有三种做法:

  1. 利用服务端语言重写一套供搜索引擎索引的页面

  2. 利用服务端语言将首屏渲染出来给到客户端

  3. 写一个JavaScript解析器来解析客户端的脚本语言(例如服务端嵌入v8)

从这里看,前两种属于代码重复率高的方案,而第三种却牺牲了部分性能来达到目的。是否有其他方案呢?当然有,这就是本文的概念:同构

同构JavaScript应用来解决单页问题

同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。这样就解决了上面两个问题。

这里Arain觉得,Nodejs才是同构的关键。我们来看看现在的一些应用:

当前流行的模板引擎React.js, Handlebars, jade,这些我们完全可以nodejs和前端单页用同一套。

JavaScript框架Rendr,Meteor, underscore等。


同构的目标:一码多地运行,更少的代码,更优的方案

« 上一篇下一篇 »

评论列表:

看了这篇文章收获很大!!!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。