您的位置:首页 > Web前端 > Node.js

关于使用node进行网站前后端分离设想和问题解决

2016-03-16 22:05 706 查看
自从出现了node这门技术之后,前端的世界发生天翻地覆的改变,各类工具(npm、grunt、gulp、webpack)等让前端项目更加工程化。

angular、vue、react等MVVM前端框架的成熟应用在各个网站中,让前端更加独立,稳定。

因此,貌似前端 和 后端之间的耦合度不再那么高了,如果设想,把一个网站当成一个app来开发,而不是将前端与后端糅合在一起开发,是不是会让前端更加前端,后端更加后端呢?从而符合让自己的工作更加单纯?

类似app的开发想法是好,优点很明显,就是让前后端分离,从而达到前后端同步开发,提高开发效率,节省时间。但是同时问题也很多?那么如果要实现利用node技术达到前后端分离,需要解决哪些问题呢?

1. 前端需要懂得服务器的基础知识?

解决:利用node技术搭建简易服务器,如果访问量够大,也有成熟的解决方案来负载平衡,但是要求前端工作人员必须懂得服务器知识,如下:

如何用http请求调用后端的api接口
必须懂得node中成熟的web app解决方案,如:express+jade
.......
这些都加大了前端的工作量,但是一旦前端框架熟悉起来,其实反而更能减少工作量,因为一般情况,前端在与后端协同开发的过程,尤其是在类似jsp混合数据的页面中,这要求前端对java jsp的语法有一定了解,否则则是要求后端人员对前端html、css、js有一定要求,因为需要后端人员对前端提供的html静态页面进行二次开发。

2. 网站一旦出现问题,很难追溯源头?
解决:这个问题压根就不用担心,如果是前后端分离,一般项目维护工作就会在前端上,出任何问题,先找前端,由前端追溯到后端,到底是数据问题,还是前端代码处理错误。其实如果非前后端分离开发的网站,一旦网站出了问题,一般都是找后端,如果后端对前端页面不够熟悉(因为很有可能他只是增加ajax请求或者jsp内嵌数据),那么就悲剧了,出了问题就得找都前端来解释代码是什么意思,这就是前后端耦合过高会产生的问题。

3.网站的安全性与稳定性?
解决:这两个混合在一起讲,说白了,就是java等后端工作人员觉得node这门技术太轻,貌似很不稳定。其实node发展到现在,从2009年开始Ryan Dahl在github上发布了Node的最初版本,到现在(2016年)的V4.4 稳定版和V5.8开发版,经历很多,而且node让javascript 语言一向从程序语言排名一路飙升到名列前茅。
而且ECMAScript6 标准在2015年的通过,在javascript语言的规范更加标准,更加高逼格,而不再是各位程序猿中只会用在浏览器不停alert的东西,javascript的适用范围也不仅仅是浏览器了。

4.最近不是很流行全栈工程师,为什么还要分离呢?
关于这一点,在知乎有个讨论很详细,分别说明了几种,我本身是java出身的,开发过几年java,不算是全栈,但是对打代码还是很感兴趣,这几年积累了很多东西。但是在很多方面还是等于0,所以在国内而言,当你一个人搞不定一份工作的时候,就是要协同工作,那么既然前后端分离能加快项目的进度,为什么不做呢?
知乎讨论地址:《Web 前后端分离的意义大吗?》

5.前后端分离,后端和前端如何协商接口数据格式呢?有没有可以制定协议呢?
解决:前后端分离后,最重要的消耗时间上的就是双方协商API接口返回的数据结构了,如果当有个工具可以制定某种协议,让双方都遵守该协议下制定的数据格式,后端写完接口后需要测试一下是否符合格式,前端人员则直接按照该格式下的数据进行页面展示,这不就是直接省去很多时间咯。

网上提供解决方案:《前后端分离了,然后呢?》

其他参考博客:
《前后端完全分离初探》

目前,网站前后端分离,各大公司都在搞,BAE等,外国的就更不用说了,所以还是要持续关注这个点,因为我想应该能在公司里推广该方案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: