Node.js模塊系統(tǒng)
在 Node.js 中章母,引入一個(gè)模塊 如:
var http=require('fs');
http.createServer(...);
Node.js中自帶了一個(gè)叫做"http"的模塊舵变,我們?cè)谖覀兊拇a中請(qǐng)求它并把返回值賦給一個(gè)本地變量倍踪。
這把我們的本地變量變成了一個(gè)擁有所有 http 模塊所提供的公共方法的對(duì)象清焕。
require方法接受以下幾種參數(shù)的傳遞:
http矛紫、fs仁热、path等耙厚,原生模塊参歹。
./mod或../mod仰楚,相對(duì)路徑的文件模塊。
/pathtomodule/mod犬庇,絕對(duì)路徑的文件模塊僧界。
mod,非原生模塊的文件模塊臭挽。
Node.js 路由
var url=require("url");//引入路由模塊
Node.js 異步編程的直接體現(xiàn)就是回調(diào)捂襟。
異步編程依托于回調(diào)來(lái)實(shí)現(xiàn),但不能說(shuō)使用了回調(diào)后程序就異步化了欢峰。
不像Apache一樣需要為每一個(gè)請(qǐng)求創(chuàng)建一個(gè)新的進(jìn)程葬荷。
例如,我們可以一邊讀取文件纽帖,一邊執(zhí)行其他命令宠漩,在文件讀取完成后,我們將文件內(nèi)容作為回調(diào)函數(shù)的參數(shù)返回懊直。這樣在執(zhí)行代碼時(shí)就沒(méi)有阻塞或等待文件 I/O 操作哄孤。這就大大提高了 Node.js 的性能,可以處理大量的并發(fā)請(qǐng)求
非阻塞代碼實(shí)例:
var fs=require('fs');//引入fs模塊;
fs.readFile('a.txt',function(err,data){
if(err){
return console.error(err);
}else{
console.log(data.toString());
console.log('執(zhí)行結(jié)束');
}
});
阻塞代碼實(shí)例:
var fs=require('fs');
var data=fs.readFileSync('a.txt');
console.log(data.toString());