大学学习Java的时候老师说过Java有个牛逼的特点就是“Write once, run everywhere”,想想当时还真是屌炸天,但是鄙人愚钝,学到高级Java课程的时候就学不进去了,要不现在就是Java工程师了,哈哈!
同构JavaScript应用指的是用JavaScript编写的应用,能够同时运行于客户端和服务器。因此,你只需编写一次代码,在服务器上执行它来实施静态页面,同时执行于客户端以允许快速的交互。所以这种方法在两个世界中都能取得最好的结果。既然能在服务器端运行,那后端构建语言只能是Node了,越来越多的企业开始对项目采用Node.js,在客户端和服务器之间共享代码变成一种更普遍自然的选择。这一趋势通过库(如React)共享模版得到增强。
有可能你还不太懂这是个怎么回事,那我就大白话的说一下。首先传统的网站应用都是后端渲染,现在为了前后端分离和JavaScript的大量使用基本上开发模式都改为了前端渲染,前后端交流使用的是约定好的API,但是前端渲染的话有个弊端就是SEO问题(目前谷歌爬虫已经支持JavaScript网站,国内现在支持较弱),但是后端渲染不利于前后端分离开发大部分公司已经摒弃。同构项目就可以很好的解决这个问题。
同构项目首先会在服务器端运行一遍JavaScript生成HTML页面字符串,然后将页面发送到前端,前端负责展示,接下来前端开始操作、交互什么的。这个时候前端运行的所有代码在后端已经运行了一遍,并将页面在首次加载的时候返回回来,这样就解决了SEO的问题。
同构项目在前端可以使用JavaScript仅限于是原生JavaScript或者是JQ这些直接操作DOM的js代码或者库,如果是React这类类库的话不能直接使用,需要激活一下,因为React使用的虚拟DOM,同构项目在前端的时候,你需要将虚拟DOM和真是的DOM绑定在一起(激活),这样你的React在前端才可以使用。(这完全基于React可以分层的思想)。
同构JavaScript项目实现JavaScript的 “Write once, run everywhere” ,可以说是比较前沿的开发模式,但是,同构项目的使用也是有局限性的。 你想一下,同构项目是前端的所有页面在后端都是先生成一遍然后传给前端,所以每一个前端页面在后端都有对应,所以如果前端会因为用户的不同而现实不同效果的话,你觉得后端会怎么样?后端会为每一个用户单独生成一个页面,这样下去是会狗带的。
所以,同构并不会适合每一个开发项目,所以在选择的时候要选择对自己项目最适合的架构。
文章评论