学习Node.js之前,我们还需要对前后端分离这个概念做出一定的了解
Node.js促进了前后端分离,具体是如何促进的
这里需要补充一个node的概念
Node百度认识:
Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境使用了一个事件驱动、非阻塞式I/O模型。
Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。
前后端分离
SPA(Single-page application)
前端:只负责View层 controller层
后端:边缘层Controller层 负责Model层,业务处理/数据等
SPA模式:后端通过异步接口(Ajax/Json)的方式提供数据,前端显示数据。
SPA模式在当时,从某种意义上实现了前后端分离,在当时是一种解决方案。但随着技术的不断精进劣汰,SPA开发模式在前后端分离上已经不能再作为一种通用的方法。他的局限性和存在的问题逐渐被人们发现。SPA认为的前后端分离,只在物理层做区分(客户端即前端,服务器端即后端),其次SPA开发仅能涉及接口异步开发模式,但更多情况下,项目开发需要同步/异步/同步+异步混合接口开发模式。
基于Node的前后端分离
前端:只负责View层 Controller层
后端:负责Model层,业务处理/数据等
将后端边缘层controller层划分为前端,而对于前端来说后端的controller层如何来实现呢?这时想到文章开头Node的特点。在这种高并发,I/O密集,少量业务逻辑的情况下,Node.js就是实现这个的桥梁作为controller层以实现后端与前端交互。使用Node.js路由将前端静态页面代码以字符串的形式发送到客户端(浏览器),Node路由提供给浏览器一组api接口,返回数据为页面代码的字符串。用Node.js作为桥梁架接服务器端API输出的JSON。
Node.js实现了前后端的分离
Web(浏览器)不再像之前请求JSP的API,转为 :
1)浏览器请求服务器端Node
2)Node再发起HTTP请求JSP
3)JSP根据API输出JSON给Node
4)Node收到JSON后渲染HTML页面
5)Node将HTML响应到浏览器
这里对出现的概念作简单解释:
1.SPA: 在计算机中称为:单页面应用,是一种Web应用程序的架构模式,目标是为了减少服务器的负载,减轻服务端压力的同时提高用户体验。在Web页面加载时,只加载一个HTML文件,通过JavaScript来实现动态更新页面,同时要利用到前端路由和数据驱动的视图模型。
2.前端路由:处理URL和页面之间的映射关系,用户事件与事件处理函数之间的对应关系。
3.数据驱动视图:数据与视图间的联动,双向绑定联系,数据的改变会对应视图的更新,视图的更新会对应数据的替换。
4.同步及异步:同步和异步在学习Ajax时会着重详解,在Node中先做了解
同步(Synchronous):任务执行进行过程中,等待任务顺序执行,不能开启其他任务。
异步(Asynchronous):任务执行进行过程中,当前任务执行缓慢(请求及响应),用户在此期间
可执行其他任务,可以同时进行,在这里会涉及到线程的概念 。