Node JS基礎


  • 什么是NodeJS

JS是腳本語言,腳本語言都需要一個解析器才能運行。對于寫在HTML頁面里的JS,瀏覽器充當了解析器的角色。而對于需要獨立運行的JS,NodeJS就是一個解析器。
每一種解析器都是一個運行環(huán)境,不但允許JS定義各種數(shù)據(jù)結構,進行各種計算,還允許JS使用運行環(huán)境提供的內(nèi)置對象和方法做一些事情。

例如運行在瀏覽器中的JS的用途是操作DOM,瀏覽器就提供了document之類的內(nèi)置對象。而運行在NodeJS中的JS的用途是操作磁盤文件或搭建HTTP服務器,NodeJS就相應提供了fs、http等內(nèi)置對象。

  • 用途

NodeJS的作者說,他創(chuàng)造NodeJS的目的是為了實現(xiàn)高性能Web服務器,他首先看重的是事件機制和異步IO模型的優(yōu)越性,而不是JS。但是他需要選擇一種編程語言實現(xiàn)他的想法,這種編程語言不能自帶IO功能,并且需要能良好支持事件機制。JS沒有自帶IO功能,天生就用于處理瀏覽器中的DOM事件,并且擁有一大群程序員,因此就成為了天然的選擇。

如他所愿,NodeJS在服務端活躍起來,出現(xiàn)了大批基于NodeJS的Web服務。而另一方面,NodeJS讓前端眾如獲神器,終于可以讓自己的能力覆蓋范圍跳出瀏覽器窗口,更大批的前端工具如雨后春筍。
因此,對于前端而言,雖然不是人人都要拿NodeJS寫一個服務器程序,但簡單可至使用命令交互模式調(diào)試JS代碼片段,復雜可至編寫工具提升工作效率。

  • 常用內(nèi)置模塊
  1. fs 提供對文件的操作。http://nodejs.org/api/fs.html http://nodejs.org/api/stream.html

  2. path 簡化路徑相關操作,并提升代碼可讀性。http://nodejs.org/api/path.html

  3. http 提供服務端和客戶端兩種使用方式:http://nodejs.org/api/http.html

  4. https 與 http 模塊極為類似,區(qū)別在于 https 模塊需要額外處理SSL證書。http://nodejs.org/api/https.html

  5. url 解析URL、生成、拼接URL。http://nodejs.org/api/url.html

  6. querystring 用于實現(xiàn)URL參數(shù)字符串與參數(shù)對象的互相轉(zhuǎn)換。http://nodejs.org/api/querystring.html

  7. zlib 提供了數(shù)據(jù)壓縮和解壓的功能。http://nodejs.org/api/zlib.html

  8. net 用于創(chuàng)建Socket服務器或Socket客戶端http://nodejs.org/api/net.html

  • 推薦使用的框架和包:

npm install --save

  1. express 是 Node.js 應用最廣泛的 web 框架,現(xiàn)在是 4.x 版本,它非常薄。跟 Rails 比起來,完全兩個極端。 http://expressjs.com/

  2. utility 提供了很多常用且比較雜的輔助方法,如 utility.md5()。 https://github.com/node-modules/utility

  3. superagent 是個 http 方面的庫,可以發(fā)起 get 或 post 請求。http://visionmedia.github.io/superagent/

  4. cheerio 可以理解成一個 Node.js 版的 jquery,用來從網(wǎng)頁中以 css selector 取數(shù)據(jù),使用方式跟 jquery 一樣。https://github.com/cheeriojs/cheerio

  5. eventproxy將串行等待變成并行等待,提升多異步協(xié)作場景下的執(zhí)行效率,可用于控制并發(fā)數(shù)。https://github.com/JacksonTian/eventproxy

  6. iconv-lite 轉(zhuǎn)換編碼,如GBK轉(zhuǎn)UTF8。https://github.com/ashtuchkin/iconv-lite

  7. async 流程控制、并發(fā)控制。https://github.com/caolan/async

  • 推薦使用的開發(fā)包:npm install *** --save-dev
  1. supertest 是專門用來配合 express (準確來說是所有兼容 connect 的 web 框架)進行集成測試的。https://github.com/tj/supertest

  2. mocha 測試框架 http://mochajs.org/

  3. should 斷言庫 https://github.com/tj/should.js

  4. chai 斷言庫 http://chaijs.com/

  5. expect 斷言庫 https://github.com/LearnBoost/expect.js/

  6. istanbul 測試率覆蓋工具 https://github.com/gotwarlost/istanbul

  7. benchmark 基準測試,可用于測試相同功能函數(shù)的執(zhí)行速度。 https://github.com/bestiejs/benchmark.js

  • 推薦使用的開發(fā)工具:npm install -g
  1. node-dev 調(diào)試時代碼改動后自動重啟加載服務 https://github.com/fgnass/node-dev
  2. nodemon 調(diào)試時代碼改動后自動重啟加載服務 https://github.com/remy/nodemon
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前些日子從@張鑫旭微博處得一份推薦(Front-end-tutorial),號稱最全的資源教程-前端涉及的所有知識...
    谷子多閱讀 4,496評論 0 44
  • 老師說:在考場上就按照這樣的結構來寫,肯定沒有錯,考場上不是讓你創(chuàng)新的,考場上哪有那么多時間考慮,就按照這樣的格式...
    PervasvFragrce閱讀 378評論 0 0
  • 總覺得自己沒有拿的出手的東西來發(fā)表! 昨天見到一朋友激勵我堅持作畫,哪怕經(jīng)常來個小畫當練手也不要停下...
    用心畫畫的妖閱讀 217評論 2 3
  • 一、核心功能點 比如:程序員客棧:對接有技術開發(fā)需求的企業(yè),與全球優(yōu)質(zhì)開發(fā)者,做到1天內(nèi)進入開發(fā),97%的成功率,...
    喵在野閱讀 2,438評論 1 6

友情鏈接更多精彩內(nèi)容