关于使用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等,外国的就更不用说了,所以还是要持续关注这个点,因为我想应该能在公司里推广该方案。
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等,外国的就更不用说了,所以还是要持续关注这个点,因为我想应该能在公司里推广该方案。
相关文章推荐
- NodeJS实战
- PAT--1115. Counting Nodes in a BST
- ZeroC Ice IceGrid Node和IceGrid
- IceGrid Node和IceGrid
- Leetcode 19 Remove Nth Node From End of List 链表
- 222. Count Complete Tree Nodes LeetCode
- This Node源码分析
- 边走边学Nodejs (基础入门篇)
- install nodejs npm git on ubuntu14.04.1
- LeetCode Populating Next Right Pointers in Each Node II
- hdfs格式化hadoop namenode -format错误
- node.js 的事件驱动
- NodeJS和Socket.IO搭建聊天室应用
- node.js之流学习(Stream)
- hadoop 集群开启之后datanode没有启动
- js 读取xml 文件,nodeType 枚举值
- nodejs开发指南阅读记录
- Rolling patch与Minimum downtime以及All-Node Patch解释(mos 244241.1)
- Windows环境下安装NodesJS
- Windows下通过nvmw安装NodeJS v4.4.0的问题及解决办法