問:什么是Nodo.js?###
答:Node.js 是基于Google V8 引擎的JavaScript 運(yùn)行環(huán)境,使用事件驅(qū)動示括、非阻塞式I/O的模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集的實(shí)時(shí)應(yīng)用痢畜。
問:怎么學(xué)習(xí)Node.js垛膝?###
答:
- www.nodejs.org 關(guān)注Node.js的版本升級鳍侣,新特性的加入,重要bug 的修復(fù);
- www.npmjs.com Node.js模塊社區(qū);
- www.github.com 開源平臺;
- www.stackoverflow.com 技術(shù)問答社區(qū)吼拥。
問:Node.js如何選擇版本倚聚?###
答:Node.js 偶數(shù)位為穩(wěn)定版本,如:-0.6.x凿可、-0.8.x惑折、-0.10.x;奇數(shù)位為不穩(wěn)定版本枯跑,如:-0.7.x唬复、-0.9.x、-0.11.x 全肮。
問:Windows如何安裝Node.js敞咧?###
答:
- 下載 Git bash 安裝;
- 下載 Node.js 安裝辜腺;
-
配置環(huán)境變量休建,例:Win8右鍵左下角小磁塊-系統(tǒng)-高級系統(tǒng)設(shè)置-系統(tǒng)變量-Path-編輯,在其后追加Node.js 的安裝路徑评疗;
-
測試是否安裝成功测砂,打開Git或命令行,輸入node -v百匆、npm -v返回版本號即安裝成功砌些。
啟動一個(gè)Web服務(wù)器###
- 新建工作目錄-新建server.js文件
文件內(nèi)容
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log('Server running at http://${hostname}:${port}/'); });
- 打開命令行,切換到工作目錄加匈,輸入node server.js存璃,打開瀏覽器訪問http://127.0.0.1:3000/,頁面中返回Hello World 雕拼。
瀏覽器執(zhí)行環(huán)境與Node.js執(zhí)行環(huán)境的異同###
相同點(diǎn):都能執(zhí)行普通的js代碼纵东;
不同點(diǎn):全局變量不同,例如:window啥寇,document等只能在瀏覽器中取到偎球,而process只能在node中取到,Node.js 本質(zhì)上是一個(gè)js的運(yùn)行環(huán)境辑甜,其封裝和底層的處理賦予了更強(qiáng)的能力衰絮。
Node.js 的模塊與Commonjs 的規(guī)范###
JS天生缺少命名管理機(jī)制,來隔離實(shí)現(xiàn)不同功能的js片段磷醋,避免相互污染猫牡。
為了解決此問題,我們經(jīng)常采用命名空間子檀,把變量和函數(shù)限制在某個(gè)特定的作用域內(nèi)镊掖。
不同于jQuery,commonjs是一套規(guī)范褂痰。包括modules模塊亩进、packages包、system系統(tǒng)缩歪、binary二進(jìn)制归薛、console控制、 encodings編碼匪蝙、sokets套接字主籍、unit test單元測試。來約定js應(yīng)該怎么來組織逛球,應(yīng)該怎么去編寫千元。
首先是把這些執(zhí)行不同任務(wù)的特定的代碼塊或文件,看做是一個(gè)獨(dú)立的模塊颤绕,每個(gè)模塊可以看做是一個(gè)獨(dú)立的作用域幸海,但不是孤立的,可能存在依賴關(guān)系奥务。
對于一個(gè)模塊可能分成三個(gè)關(guān)鍵部分:定義物独、標(biāo)識、引用氯葬。這種設(shè)計(jì)規(guī)范挡篓,不斷成長壯大,對很多開源項(xiàng)目有很大影響帚称。
nodejs和Couchdb就是對Commonjs的實(shí)現(xiàn)官研,而且規(guī)范和實(shí)現(xiàn)互為促進(jìn),形成一個(gè)良性的循環(huán)鏈闯睹。
nodejs借鑒了commonjs的這種模塊組織理念阀参,實(shí)現(xiàn)了一套模塊管理系統(tǒng)。在nodejs里面每個(gè)js文件可以看做是一個(gè)獨(dú)立的模塊瞻坝,在它里面不需要有命名空間蛛壳。不必?fù)?dān)心變量、方法的污染所刀、隔離衙荐。
同時(shí)這些模塊(或者說是文件)通過彼此的引入,可以組合起來形成一個(gè)更強(qiáng)大的模塊(或者是功能包)浮创。
我們安裝nodejs時(shí)會自動安裝npm這個(gè)包管理工具忧吟。通過npm包管理工具,我們可以往項(xiàng)目里面引入各種形形色色的功能模塊斩披。他們或簡單或復(fù)雜溜族,但每個(gè)都是獨(dú)立的讹俊,完整的。
Node.js模塊的分類###
- 核心模塊
- 文件模塊
- 第三方模塊
模塊的流程###
創(chuàng)建模塊-導(dǎo)出模塊-加載模塊-使用模塊