1、nodeJS的特點
- 單線程:
好處:是減少了內(nèi)存開銷屯烦;
缺點:就是一個用戶造成了線程的崩潰,整個服務都崩潰了,其他人也崩潰了驻龟。 - 非阻塞I/O
不會傻等I/O語句結束甸箱,而會執(zhí)行后面的語句。 - 事件驅動event-driven:不管是新用戶的請求迅脐,還是老用戶的I/O完成芍殖,都將以事件方式加入事件環(huán),等待調(diào)度谴蔑。
2豌骏、HTTP模塊
Node.js中,將很多的功能隐锭,劃分為了一個個mudule窃躲,大陸的書翻譯為模塊;這是因為钦睡,有一些程序需要使用fs功能(文件讀取功能)蒂窒,有一些不用的,所以為了效率荞怒,你用啥洒琢,你就require啥。
//這個案例簡單講解http模塊
//引用模塊
const http = require("http");
//創(chuàng)建一個服務器褐桌,回調(diào)函數(shù)表示接收到請求之后做的事情
const server = http.createServer(function(req,res){
//req參數(shù)表示請求衰抑,res表示響應
console.log("服務器接收到了請求" + req.url);
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
//設置響應頭:文字編碼
res.end();
});
//監(jiān)聽端口
server.listen(3000,"127.0.0.1");
- req的作用:
最關鍵的就是req.url屬性,表示用戶的請求URL地址荧嵌。所有的路由設計呛踊,都是通過req.url來實現(xiàn)的。
我們比較關心的不是拿到URL啦撮,而是識別這個URL谭网。
識別URL,用到兩個新模塊赃春,第一個就是url模塊愉择,第二個就是querystring模塊
- 字符串查詢,用querystring處理
- 使用URL模塊
3聘鳞、模塊
- node中的模塊分為三部分:
1薄辅、系統(tǒng)自帶模塊
2、自定義模塊:js文件和js文件之間有兩種合作的模式:- 某一個js文件中抠璃,提供了函數(shù)站楚,供別人使用。 只需要暴露函數(shù)就行了搏嗡; exports.msg=msg;
- 某一個js文件窿春,描述了一個類拉一。 module.exports = People;
3、第三方模塊
- 我們可以使用文件夾來管理模塊旧乞,比如
var bar = require("bar");
那么Node.js將會去尋找node_modules目錄下的bar文件夾中的index.js去執(zhí)行蔚润。
每一個模塊文件夾中,推薦都寫一個package.json文件尺栖,這個文件的名字不能改嫡纠。node將自動讀取里面的配置。有一個main項延赌,就是入口文件:
{
"name": "wwr",
"version": "1.0.1",
"main" : "app.js"
}
package.json文件除盏,要放到模塊文件夾的根目錄去。
- 我們可以用package.json來管理依賴挫以。
在cmd中者蠕,使用npm init可以初始化一個package.json文件,用回答問題的方式生成一個新的package.json文件掐松。
- 這樣解決兩個問題
1.我們的依賴包踱侣,可能在隨時更新,我們永遠想保持更新大磺,或者某持某一個版本抡句;
2.項目越來越大的時候,給別人看的時候量没,沒有必要再次共享我們引用的第三方模塊玉转。
別人使用我們的項目的時候,只需要npm install 即可安裝相應的模塊