zoukankan      html  css  js  c++  java
  • NODE.JS之我见

    NODE.JS之我见

     

    先说说为什么有这篇文章,关注NODE.JS 也有一段时间了,不敢说大彻大悟,但是对于NODE.JS能干什么,还是有一定的了解,笔者多年以前就研究过JavaScript引擎V8,可以说是国内最早编译并研究V8代码的人之一,这一点有博客为证。虽然NODE.JS的成功是有目共睹的,在社区的火爆程度也是路人皆知的,但是从笔者的角度来看,NODE.JS并没有给计算机科学带来任何的新东西,对于我来说它也并没有任何的新意,对于这一点,笔者并不愿意挑起任何的争论,但是欢迎讨论,也欢迎不同的意见。虽然NODE.JS可以让前端开发人员可以使用JavaScript写后端的代码,但是这并不能代表什么,也没什么意义。

     

    下面是简单的从网上找到的NODE.JS存在的意义

         1. Nodejs基于Javascript语言,不用再单独新学一门陌生的语言,从而减低了学习的门槛。

      我之见:这根本不是理由,每种工具的存在自然有他存在的意义,弹弓是不适合打飞机的, NODE.JS是可以做到这一点,但是他却没有其他的技术成熟,NODE.JS最多也就是做了其他工具早已经可以完成的事情。

         2.  Nodejs并没有重新开发运行时环境,而是选择了目前最快的浏览器内核V8做为执行引擎,保证了Nodejs的性能和稳定性。

    我之见:V8是cc++写的,难道cc++做不到NODE.JS在服务器端可以做到的事情么?

         3.Nodejs的开发非常高效,而且代码简单,得益于Nodejs的单线程机制。而Nodejs的另一个特点异步编程,让Nodejs处理IO密集型应用有了明显的优势。用Nodejs比Java做Web开发要高效10倍,比PHP的代码还要简单。

    我之见:你是从哪知道效率快10倍的?NODE.JS的这种异步编程模型早就存在了,好多的web服务器早已经将其应用到生产环境中了,C#, JAVA,C++ 也早就存在这方面的支持,从哪来的优越感呢?

       4. Nodejs的社区在壮大,不仅包的数量在快速增加,而且包的质量也要明显好于其他语言的。很多明星级的包,都是简单而灵巧的,为了开发者的使用习惯而设计。我最常用到的工具包,如socket.io, moment.js, underscore.js, async.js, express.js, bower.js, grunt.js, forever.js…,确实在改变我以前的编程习惯。

    我之见:NODE.JS社区比JAVA社区还大么?框架比JAVA社区还成熟么?不见得吧。

     

    综上来看,笔者认为NODE.JS是个好东西,它里面的好多的理念是好的,确实值得大家去学习一番,但是NODE.JS并没有好多人认为的那么牛,因为这里面对计算机科学来说没有任何的新东西。我认为,对于任何东西大家都不要盲从,不要人云亦云,不传谣,不信谣,真刀真枪的代码才最有说服力。

    可能很多人不太了解,因为被吹蒙了,NODE.JS真正强大的是对于网络协议的封装,包括对于http的封装,下面我们简单的看一个例子。

    下面的代码用NODE.JS实现了一个简单的http服务器,运行起来会在13333端口监听http请求,当有http请求来的时候会返回Hi There! 仅此而已,就这个功能,随便写几句C++代码也可以完成同样的功能。

     

    var http = require('http');

    http.createServer(function (req, res) {

      res.writeHead(200, {'Content-Type': 'text/plain'});

      res.end(Hi There! ');

    }).listen(13333, '127.0.0.1');

    console.log('Server running at http://127.0.0.1: 13333/');

     

    再来看一个例子,这个例子在13334端口监听TCP请求,来什么返回什么,仅此而已,同样也就是几行C++代码的事。

     

    var net = require('net');

     

    var server = net.createServer(function (socket) {

      socket.write('Echo server ');

      socket.pipe(socket);

    });

     

    server.listen(13334, '127.0.0.1');

     

    总结

    本人无意和大家就NODE.JS进行任何的争论,但是欢迎正面的讨论,共同进步,NODE.JS本身是个好东西,但是大家不要将其神化,认为所有的现有技术都一无是处了,JavaScript统一全栈恐怕只能是一个笑话。

  • 相关阅读:
    jquery的内容(html,.text,val)及其属性(attr,prop,data)
    jquery对象的遍历
    jquery的选择器和过滤器
    jquery的基础认知
    解决跨域的四种常见方法
    HTTP中的消息头
    使用js实现ajax加载json文件的组件开发
    IDEA工具第四篇:项目导航Project Navigation下工程包的折叠与展开
    IDEA工具第三篇:启动时报错javax.imageio.IIOException: Can't get input stream from URL!
    IDEA工具第一篇:细节使用-注意事项
  • 原文地址:https://www.cnblogs.com/pugang/p/4374681.html
Copyright © 2011-2022 走看看