从web架构来认识nodejs

广告位招租
扫码页面底部二维码联系

nodejs出现的时候,我有一种冲动,就【转载请注明来源】本文版权归作者所有,未经授权不得转载。是在jquery和nodejs之间进行选【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】择,最后选择了jquery,那时我以为n转载请注明出处:www.tangshuang.net原创内容,盗版必究。odejs不过是和jquery一样的一种著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】js库,运行在服务端,听上去很牛逼,说不【作者:唐霜】【关注微信公众号:wwwtangshuangnet】定也就那样。但随着npm的出现,node【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。js的世界瞬间把jquery甩到九霄云外【转载请注明来源】本文作者:唐霜,转载请注明出处。,nodejs早已超出Javascrip【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。t的范畴,实际上,nodejs诞生的那天【作者:唐霜】本文版权归作者所有,未经授权不得转载。开始,就不是专为Javascript而生原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net的。

本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】【原创内容,转载请注明出处】

用Javascript作为后端语言【版权所有,侵权必究】

本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】【版权所有,侵权必究】

在我们以往的web开发中,我们经常会使用【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.netphp作为服务端开发语言,我们称之为后端本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】(backend)而使用css、js解决【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。页面的展示,我们称之为前端(fronte本文作者:唐霜,转载请注明出处。原创内容,盗版必究。nd)。但随着nodejs的盛行,Jav【原创不易,请尊重版权】转载请注明出处:www.tangshuang.netascript也可以开始作为后端语言,在【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。服务器上运行。这其实很好理解,以前我们使【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。php test.php在服务器上运行php文件,而现在我们使用nodejs test.js在服务器上运行js文件,js的功能和ph著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.netp的功能一样的,只不过用不同的运行环境去【原创内容,转载请注明出处】【未经授权禁止转载】运行它。但这种环境的改变,可能会给开发行【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】业带来巨大的变化,因为以前专注于前端的开【本文受版权保护】【转载请注明来源】发人员,将很快从web界面这个狭小的领域【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】,渗透到服务端、客户端(原生APP)的开【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】发中,这我会在下文慢慢讲到。

【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。

在服务端运行js文件对于以前一直专注于浏【原创内容,转载请注明出处】【转载请注明来源】览器前端的程序员其实有点难以理解,Jav【本文首发于唐霜的博客】【本文受版权保护】ascript怎么在服务器上跑起来呢?为本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。了突破这一阻碍,我们现在假设node运行【原创内容,转载请注明出处】原创内容,盗版必究。的不是Javascript,而是另外一个【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】叫test.nd的程序,而这个.nd程序本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net的语法竟然和Javascript一摸一样【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。,连它的机理、特性、线程都一摸一样,这时【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net你才反应过来,它就是Javascript【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net,不是别的。没错,在浏览器上面,Java【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。script是程序,由浏览器的脚本引擎去【转载请注明来源】转载请注明出处:www.tangshuang.net解释执行,而在服务器上,Javascri本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】pt还是程序,由nodejs去负责执行,【未经授权禁止转载】【转载请注明来源】浏览器的api和nodejs的api可不【转载请注明来源】【作者:唐霜】一样,因此在浏览器端写的js代码,有的可【本文首发于唐霜的博客】未经授权,禁止复制转载。以在nodejs环境中执行,而有的则不可著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】以,nodejs环境中写的js,大部分是本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】不能直接用在浏览器中运行的。

原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net

在nodejs环境中开发时,前端页面上要转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】用的js和在服务器上运行的js要分开,前【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net者可以按照你以前的写代码方式,无需任何改【版权所有,侵权必究】【转载请注明来源】变,而后者,就不必须按照nodejs所遵原创内容,盗版必究。本文作者:唐霜,转载请注明出处。循的CMD规范来写。现在,如果你打算在服【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net务器上一展身手,忘记你曾经在浏览器环境下著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。开发js时的一切,你现在已经掌握了js的著作权归作者所有,禁止商业用途转载。【本文受版权保护】语法、特性、机理,接下来,你只需要掌握n原创内容,盗版必究。【本文首发于唐霜的博客】odejs的开发规范(或者你可以理解为框【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。架里面的特定写法,同时使用一些特殊的ap【原创内容,转载请注明出处】【原创内容,转载请注明出处】i),就可以开始使用Javascript【版权所有,侵权必究】原创内容,盗版必究。来操作你的服务器执行一些牛逼的动作了。

【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。

基于NodeJS的web架构【版权所有,侵权必究】

原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。

当我们没有nodejs之前,我们一般想到原创内容,盗版必究。【版权所有,侵权必究】的是我们传统所说的3P(asp, php【未经授权禁止转载】本文作者:唐霜,转载请注明出处。, jsp)。以php为例,我们写一个网【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】站,首先要有数据库,然后使用php去连接【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。数据库,查询出数据,然后用php混杂着h【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.nettml代码,把页面的layout打印在浏【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。览器上,再用css、js去实现界面的效果转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。渲染。我们可以用一幅画来画出这个架构模型本文作者:唐霜,转载请注明出处。【未经授权禁止转载】

【原创内容,转载请注明出处】【原创不易,请尊重版权】【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】

tranditional-web-construct

【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net【转载请注明来源】【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net

而当我们有了nodejs后,我们可以把w【未经授权禁止转载】【未经授权禁止转载】eb架构改成如下的形式:

【未经授权禁止转载】【未经授权禁止转载】【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。

nodejs-web-construct

本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】

nodejs在服务器端,直接像前端提供l【转载请注明来源】未经授权,禁止复制转载。ayout和data,成为前端和服务器打【作者:唐霜】【关注微信公众号:wwwtangshuangnet】交道的直接对象。另外,nodejs自己提转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】供了服务器环境,无需安装apache就可本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。以像用户提供服务。

【本文受版权保护】【本文首发于唐霜的博客】【本文首发于唐霜的博客】

但是在上面这个模型中,你会看到,在nod【本文受版权保护】【原创内容,转载请注明出处】ejs和数据库之间,仍然存在一个需要由其【版权所有】唐霜 www.tangshuang.net【作者:唐霜】他程序完成的数据连接和处理过程,这是因为【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。目前nodejs直接操作数据库的功能还不【原创内容,转载请注明出处】【转载请注明来源】成熟,因此在大部分项目中,使用其他语言去本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。查询、添加、修改数据库中的数据,并向no本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】dejs中运行的js提供data api【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】,再由nodejs完成所有的逻辑处理。

【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net

精简一点,我们可以把上面的模型简化为:【未经授权禁止转载】

原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】

nodejs-web-construct-simple

原创内容,盗版必究。转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。【作者:唐霜】

在这个简化的模型图中,与之前的传统模型中转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】相比,就是独立多出了NodeJS的部分,本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net看上去没有什么改进。但实际上,这种变化的著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。巨大的,因为NodeJS拥有非常不同的异本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】步I/O的特性,所以它才在众多环境中逐渐本文版权归作者所有,未经授权不得转载。【作者:唐霜】上升,NodeJS的特性是它之所以被越来本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】越多的开发者接受和喜爱的根本原因。而这个【未经授权禁止转载】原创内容,盗版必究。模型的意义除了把NodeJS作为和前端交【未经授权禁止转载】【未经授权禁止转载】互的一个中介之外,还有一个重要的意义,就【作者:唐霜】【转载请注明来源】是在整个web开发中,Javascrip【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】t将占据更大的比例,而php等原来的后端本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】语言,会退缩到只和数据库打交道的位置,不【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net再参与业务逻辑的处理,这就压缩了原来作为本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。后端语言盛行的一些语言。当然,其实这也是本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】一个契机,可以让这些语言更加专注于做它所未经授权,禁止复制转载。原创内容,盗版必究。具备的特质的事。

原创内容,盗版必究。原创内容,盗版必究。【未经授权禁止转载】【作者:唐霜】

Javascript不仅向后端扩展,而实原创内容,盗版必究。本文作者:唐霜,转载请注明出处。际上,在往APP开发的道路上,js也一直【作者:唐霜】【转载请注明来源】昂首阔步,Native.js, Reac【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。t Native等项目声名鹊起,使得AP转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。P开发者也受到了来自前端的压力。

著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。

当然nodejs还有一些不足之处,这是作【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】为一门新兴技术,不可避免的,我们希望它有【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net一天可以实现和数据库稳健的交互,这样通晓【原创不易,请尊重版权】原创内容,盗版必究。一门Javascript,将可以在未来各【版权所有,侵权必究】【本文首发于唐霜的博客】个领域发挥作用。

转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net【版权所有,侵权必究】【作者:唐霜】

NodeJS还可以干什么【版权所有,侵权必究】

未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net原创内容,盗版必究。

除了作为web的用途之外,nodejs其【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。实还有其他的用处,因为nodejs不是J【原创内容,转载请注明出处】【原创不易,请尊重版权】avascript,nodejs是一个程未经授权,禁止复制转载。【版权所有,侵权必究】序、一个软件、一个环境,它是可以运行js原创内容,盗版必究。【原创内容,转载请注明出处】代码的程序,甚至可以把它称为js的一种解著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。释器(编译器),用js写的代码,不仅可以【版权所有】唐霜 www.tangshuang.net【转载请注明来源】实现和web相关的功能,甚至可以实现和其【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。他大部分语言一样的功能,甚至做的更优秀。【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net下面是我总结的一个方面:

【原创内容,转载请注明出处】原创内容,盗版必究。【作者:唐霜】

nodejs-feature

【原创不易,请尊重版权】未经授权,禁止复制转载。【本文首发于唐霜的博客】

nodejs可以实现编译、数据运算、开发原创内容,盗版必究。【作者:唐霜】环境等功能,这使得无论是nodejs也好【原创内容,转载请注明出处】原创内容,盗版必究。,还是js也好,都将在将来大为有用,甚至【本文首发于唐霜的博客】【作者:唐霜】因此出现更加让人惊叹的新产品。

【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。

2016-05-19 12680

为价值买单,打赏一杯咖啡

本文价值126.8RMB
已有4条评论
  1. loszer 2017-09-16 16:39

    有部分说的不太合适,有了nodejs取代了前端显示的职责后(附带处理部分轻量的业务逻辑),php、java这些语言依然负责主要的业务逻辑并且提供给nodejs以接口。

    • 否子戈 2017-09-17 13:27

      谢谢指出

  2. […] 随着前后端分离的思想出现之后,上面这种完全后端主导的局面也逐渐瓦解了,前后端分离是指前端和后端专注(甚至只)做一件事,所以在我写的《从web架构来认识nodejs》这篇文章里,就勾画了大致的新的前后端分工: […]

  3. […] 随着前后端分离的思想出现之后,上面这种完全后端主导的局面也逐渐瓦解了,前后端分离是指前端和后端专注(甚至只)做一件事,所以在我写的《从web架构来认识nodejs》这篇文章里,就勾画了大致的新的前后端分工: […]