Node.js 的本质 [转]

下面是一条数据的旅程,这条数据我们叫他req

req在浏览器很无聊,通过网络跑到了Node.js服务器,它的目的是想见到国王server.js(你编写的代码),req想和server.js要一个html文件,可它进入服务器时,迎接它的是个大臣,大臣告诉他,server.js正在接待另一个req,请他等0.1毫秒。终于req见到了国王,国王的会议室挺漂亮的,下面是会议室的大体样子:

server.on(“request”,function(req,res){

})

req和server.js要一个hello.html的网页文件,这时候它看到会议室外面还有几个req在等待,server.js国王把任务交给了 fs大臣,然后马上就去接待另一个req了,req心里想国王的效率好高啊,难道这就是传说中的永不阻塞的 I/O 吗,这时候fs大臣帮它把hello.html文件送上了返程的列车res

server.on(“request”,function(req,res){
    fs.createReadStream(“hello.html”).pipe(res);
})

req回到浏览器后,感慨Node.js 国家办事效率,它在日记中写下:

通过集权的编码方式,让代码更加好管理、更好维护,避免多线程带来的死锁等后遗症。通过非阻塞异步 I/O 的调用,把耗时的工作交给底下人去办,而不是等待I/O完成后再进行下一步的工作,而是通过事件模式,监听工作进度,这段时间里,Node.js还可以不 间断的处理其他请求。等到I/O处理完毕后,会接收到一个事件。

Node.js是什么?

Node提供一种简单的构建可伸缩网络程序的方法。在 Java 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。

Node更改了连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程。它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。它的服务器能支持数万个并发连接。

Node.js背后真正的优势

Node.js 有很多优势,在我看来除了高性能外,它统一了前后端语言和数据 (json),这才是它最大优势。paypal公司全面转至Node.js技术,主要原因是Node.js提高了开发效率,同时也节省了成本。

难学吗?

只要会javascript基本知识即可,javascript的运行环境通常是浏览器,Node.js给了javascript在服务器端运行环境,这个环境下,还配备了一套API,包括I/O、网络等功能。


发表评论

登录 后参与评论

评论列表 (7条)

  • jues117
    1 年前
    @gdhzkk  希望能改善下希望能改善下
  • doramart [  管理员]
    2 年前
    @a614530112  情况存在,由于想尽量简单,就把邮箱验证这块省了,会纳入doracms2.0中考虑,感谢您的建议!
  • a614530112
    2 年前
    注册的时候有bug,我用任何一个邮箱注册都能成功,虽然是给邮箱发邮件了,但是没啥卵用,有可能我把别人的邮箱给注册了,别人想注册就不能注册了。
  • a614530112
    2 年前
    可不可考虑加一个多用户发布的功能,这样文章就来自多人了,用户量就多了,类似cnode
  • a614530112
    2 年前
    第一次用过来看看,感觉还不错,但是新注册的用户没有发表文章的地方啊
  • doramart [  管理员]
    2 年前
    @gdhzkk  确实有优化的空间,后台主要是angularjs,可以通过ng-bind来优化显示代码的问题,后面我优化一下,谢谢
  • gdhzkk
    2 年前
    刷新网页,input提示信息显示又隐藏了 体验不好呀,还有后台的那些有数据的地方,刷新页面显示的是代码 然后又显示数据,希望能改善下