nodejs入門教程一:概念與用法簡介
本文實例講述了nodejs概念與用法。分享給大家供大家參考,具體如下:
一. nodejs 的特點
1.nodejs 是一個javaScript 的運行平臺,采用了Google Chrome瀏覽器的V8引擎。
2.擁有事件驅(qū)動:當(dāng)web server接收到請求,就把它關(guān)閉然后進行處理,然后去服務(wù)下一個web請求。當(dāng)這個請求完成,它被放回處理隊列,當(dāng)?shù)竭_隊列開頭,這個結(jié)果被返回給用戶。
示例:點餐
在基于線程的方式中(thread-based way):收銀員接待你點餐開始,收銀員不能接待下一個人,直到你拿到食物離開。
現(xiàn)實中是這樣,(基于事件驅(qū)動方式)只要你把點餐單給收銀員,他給你一個號,你就坐著等,收銀員開始接待下一個客戶。如果你的食物準備好了,就呼叫你的號碼讓你去柜臺取。關(guān)鍵的一點是,你沒有阻塞下一個客戶的訂餐請求。呼叫你取餐,在編程領(lǐng)域,我們稱為回調(diào)(callback function)。
3.異步編程,單線程:高并發(fā)時,更加靈活,非阻塞,性能好。
二. npm 命令
npm是一個node包管理和分發(fā)工具,已經(jīng)成為了非官方的發(fā)布node模塊(包)的標準。有了npm,可以很快的找到特定服務(wù)要使用的包,進行下載、安裝以及管理已經(jīng)安裝的包。
1、npm install moduleNames:安裝Node模塊
安裝完畢后會產(chǎn)生一個node_modules目錄,其目錄下就是安裝的各個node模塊。
node的安裝分為全局模式和本地模式。
一般情況下會以本地模式運行,包會被安裝到和你的應(yīng)用程序代碼的本地node_modules目錄下。
在全局模式下,Node包會被安裝到Node的安裝目錄下的node_modules下。
全局安裝命令為:
$npm install -g moduleName
獲知使用:
$npm set global=true
來設(shè)定安裝模式。
使用:
$npm get global
可以查看當(dāng)前使用的安裝模式。
示例:
npm install express
默認會安裝express的最新版本,也可以通過在后面加版本號的方式安裝指定版本,如npm install express@3.0.6
npm install <name> -g
將包安裝到全局環(huán)境中
但是代碼中,直接通過require()
的方式是沒有辦法調(diào)用全局安裝的包的。全局的安裝是供命令行使用的,就好像全局安裝了vmarket
后,就可以在命令行中直接運行vm命令
npm install <name> --save
安裝的同時,將信息寫入package.json中,項目路徑中如果有package.json文件,直接使用npm install方法就可以根據(jù)dependencies配置安裝所有的依賴包,這樣代碼提交到github時,就不用提交node_modules這個文件夾了。
2、npm view moduleNames:查看node模塊的package.json文件夾
注意事項:如果想要查看package.json文件夾下某個標簽的內(nèi)容,可以使用$npm view moduleName labelName
3、npm list:查看當(dāng)前目錄下已安裝的node包
注意事項:Node模塊搜索是從代碼執(zhí)行的當(dāng)前目錄開始的,搜索結(jié)果取決于當(dāng)前使用的目錄中的node_modules下的內(nèi)容。$ npm list parseable=true可以目錄的形式來展現(xiàn)當(dāng)前安裝的所有node包
4、npm help:查看幫助命令
5、npm view moudleName dependencies:查看包的依賴關(guān)系
6、npm view moduleName repository.url:查看包的源文件地址
7、npm view moduleName engines:查看包所依賴的Node的版本
8、npm help folders:查看npm使用的所有文件夾
9、npm rebuild moduleName:用于更改包內(nèi)容后進行重建
10、npm outdated:檢查包是否已經(jīng)過時,此命令會列出所有已經(jīng)過時的包,可以及時進行包的更新
11、npm update moduleName:更新node模塊
12、npm uninstall moudleName:卸載node模塊
13、一個npm包是包含了package.json的文件夾,package.json描述了這個文件夾的結(jié)構(gòu)。訪問npm的json文件夾的方法如下:
$ npm help json
此命令會以默認的方式打開一個網(wǎng)頁,如果更改了默認打開程序則可能不會以網(wǎng)頁的形式打開。
14、發(fā)布一個npm包的時候,需要檢驗?zāi)硞€包名是否已存在
$ npm search packageName
15、npm init:會引導(dǎo)你創(chuàng)建一個package.json文件,包括名稱、版本、作者這些信息等
16、npm root:查看當(dāng)前包的安裝路徑
npm root -g:查看全局的包的安裝路徑
17、npm -v:查看npm安裝的版本
18、npm prune -x:將會移除package.json中沒有列舉的node_modules的包,當(dāng)執(zhí)行 npm list 報 err 時,就可以使用該命令。
19、npm -g install npm@x.xx.xx : 升級(降級)npm,然后復(fù)制 C:\Users\你的windows用戶名\AppData\Roaming\npm\node_modules\npm下的所有文件到你的Nodejs安裝目錄的 \nodejs\node_modules\npm 中,替換掉所有所有的文件。
三. nodejs exports、module.exports 與require() 結(jié)合使用
每一個node.js執(zhí)行文件,都自動創(chuàng)建一個module對象,同時,module對象會創(chuàng)建一個叫exports的屬性,初始化的值是 {},只有通過exports或module.exports將其暴露出去,外部才能通過require() 進行訪問。
① module.exports 初始值為一個空對象 {}
② exports 是指向的 module.exports 的引用
③ require() 返回的是 module.exports 而不是 exports
④ 綜上,可以說 exports 是給 module.exports 添加屬性和方法?。?!
示例:fool.js
exports.a = function(){ console.log('a') } exports.a = 1; module.exports = {a: 2}; exports.a = 3;
執(zhí)行 test.js
var c = require('./fool'); //require() 返回的是 module.exports 而不是 exports console.log(c.a);//2
他們之間的關(guān)系就像:
var a = new Object();//a相當(dāng)于module.exports var b = a; //b相當(dāng)于exports
5.在深入一點:exports返回的是一個json對象,而module.exports可以返回任何形式的數(shù)據(jù)格式,例如數(shù)組,字符串,數(shù)字等類型時,我們必須要用module.exports
//test.js module.exports = '我是module.exports暴露的字符串'; exports.name = '我是exports暴露的name'; exports.method = function(){ console.log('我是exports暴露的method'); }; console.log("我是console.log(exports)的結(jié)果:"); console.log(exports); console.log();
//fool.js var obj = require('./test.js'); console.log("我是console.log(module.exports)的結(jié)果:"); console.log(module.exports); console.log(); console.log("我是console.log(obj)的結(jié)果:"); console.log(obj);//require() 返回的是 module.exports 而不是 exports
執(zhí)行 fool.js :
我是console.log(exports)的結(jié)果: { name: '我是exports暴露的name', method: [Function] } 我是console.log(module.exports)的結(jié)果: {} 我是console.log(obj)的結(jié)果: 我是module.exports暴露的字符串
希望本文所述對大家nodejs程序設(shè)計有所幫助。
- nodejs入門教程五:連接數(shù)據(jù)庫的方法分析
- nodejs入門教程四:URL相關(guān)模塊用法分析
- nodejs入門教程三:調(diào)用內(nèi)部和外部方法示例
- nodejs入門教程二:創(chuàng)建一個簡單應(yīng)用示例
- NodeJS測試框架mocha入門教程
- Nodejs極簡入門教程(三):進程
- Nodejs極簡入門教程(二):定時器
- Nodejs極簡入門教程(一):模塊機制
- nodejs教程 安裝express及配置app.js文件的詳細步驟
- NodeJS框架Express的模板視圖機制分析
- Nodejs的express使用教程
- nodejs入門教程六:express模塊用法示例
相關(guān)文章
Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻
傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價值,感興趣的可以了解一下2024-04-04如何用node.js作為后臺,讀寫xml文件,Node.js的文件系統(tǒng)的Api
這篇文章主要介紹了如何用node.js作為后臺,讀寫xml文件,Node.js的文件系統(tǒng)的Api,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08深入理解Commonjs規(guī)范及Node模塊實現(xiàn)
本篇文章主要介紹了深入理解Commonjs規(guī)范及Node模塊實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05node.js入門教程之querystring模塊的使用方法
querystring模塊主要用來解析查詢字符串,下面這篇文章主要介紹了關(guān)于node.js中querystring模塊使用方法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02nodejs做個爬蟲爬取騰訊動漫內(nèi)容簡單實現(xiàn)
這篇文章主要為大家介紹了nodejs做個爬蟲爬取騰訊動漫內(nèi)容簡單實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07