資料原文:http://nqdeng.github.io/7-days-nodejs/
概念
JS是腳本語(yǔ)言,腳本語(yǔ)言都需要一個(gè)解析器才能運(yùn)行
對(duì)于寫在HTML頁(yè)面里的JS族沃,瀏覽器充當(dāng)了解析器的角色
而對(duì)于需要獨(dú)立運(yùn)行的JS频祝,NodeJS就是一個(gè)解析器
用處
實(shí)現(xiàn)高性能Web服務(wù)器
運(yùn)行
- 在終端輸入
node console.log('Hello World')
- 創(chuàng)建一個(gè)hello.js文件,輸入
console.log('Hello World')
脆淹, 然后在終端輸入node hello
模塊
require
require
函數(shù)用于在當(dāng)前模塊中引用別的模塊常空,也可以引用一個(gè)json文件。如:
var foo1 = require('./foo');
var foo2 = require('./foo.js');
var foo3 = require('/home/user/foo');
var data = require('./data.json');
exports
exports
對(duì)象是當(dāng)前模塊的導(dǎo)出對(duì)象盖溺,用于導(dǎo)出模塊公有方法和屬性漓糙。如:
exports.hello = () => {
console.log('Hello World!');
};
module
通過(guò)module
對(duì)象可以訪問(wèn)到當(dāng)前模塊的一些相關(guān)信息,但最多的用途是替換當(dāng)前模塊的導(dǎo)出對(duì)象咐柜,導(dǎo)出一個(gè)函數(shù)兼蜈。如:
module.exports = function () {
console.log('Hello World!');
};
exports
和module
的區(qū)別:在require引用的時(shí)候,exports導(dǎo)出的為對(duì)象拙友,而module導(dǎo)出的是函數(shù)为狸。
模塊初始化
一個(gè)模塊中的JS代碼僅在模塊第一次被使用時(shí)執(zhí)行一次,并在執(zhí)行過(guò)程中初始化模塊的導(dǎo)出對(duì)象遗契。之后辐棒,緩存起來(lái)的導(dǎo)出對(duì)象被重復(fù)利用。
主模塊
通過(guò)命令行啟動(dòng)程序的模塊成為主模塊,如:node main
, main.js
就是主模塊漾根。
總結(jié)
NodeJS是一個(gè)JS腳本解析器泰涂,任何操作系統(tǒng)下安裝NodeJS本質(zhì)上做的事情都是把NodeJS執(zhí)行程序復(fù)制到一個(gè)目錄,然后保證這個(gè)目錄在系統(tǒng)PATH環(huán)境變量下辐怕,以便終端下可以使用node命令逼蒙。
終端下直接輸入node命令可進(jìn)入命令交互模式,很適合用來(lái)測(cè)試一些JS代碼片段寄疏,比如正則表達(dá)式是牢。
NodeJS使用CMD模塊系統(tǒng),主模塊作為程序入口點(diǎn)陕截,所有模塊在執(zhí)行過(guò)程中只初始化一次驳棱。