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是c\c++寫的,難道c\c++做不到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!\n');

}).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\r\n');

  socket.pipe(socket);

});

 

server.listen(13334, '127.0.0.1');

 

總結

本人無意和大家就NODE.JS進行任何的爭論,但是歡迎正面的討論,共同進步,NODE.JS本身是個好東西,但是大家不要將其神化,認為所有的現有技術都一無是處了,JavaScript統一全棧恐怕只能是一個笑話。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM