global對象(模塊)
window 和 global的區(qū)別
在瀏覽器上如果全局變量或者函數(shù),不屬于任何一個對象,那么就屬于window
在nodejs中,如果var聲明的變量不會屬于global對象,沒有用var聲明的全局變量是屬于global對象的。全局函數(shù)也不屬于global對象
var myname = 'enco';
myname2 = 'enco';
console.log(myname); // undefined
console.log(myname2); // enco
function fn(){
console.log('xixi');
}
global.fn(); // not a function
this
console.log(this); // {}
node函數(shù)中的this仍然指向的是調(diào)用者,如果一個函數(shù)沒有明確的調(diào)用者,就用global調(diào)用
function fn(){
console.log(this);
}
fn(); // 打印global
events 模塊
nodejs內(nèi)置模塊(非全局模塊,需要引入)
是nodejs的核心模塊,只有一個對象 eventEmitter
var events = require('events'); //引入模塊
var emitter = new events.EventEmitter(); // 創(chuàng)建EventEmitter對象實例
//設置時間的監(jiān)聽
emitter.on('myevent',function(num1,num2,num3){
console.log(num1+num2+num3);
});
emitter.addListener('myevent',function(num1,num2,num3){
console.log(num1*num2*num3);
});
//只會觸發(fā)一次
emitter.once('myevent',function(num1,num2,num3){
console.log(num1*num2*num3);
});
//發(fā)射事件
emitter.emit('myevent',1,2,3);
移除事件監(jiān)聽
emitter.removeListener('myevent',function(){});
注意:不能移除匿名監(jiān)聽器
emitter.removeAllListeners(); 移除全部監(jiān)聽器
http 模塊
搭建服務器
var http = require('http');
var server = http.createServer(function(request,response){
response.end('hello!');
})
server.listen(8080);
response
res.writeHeader();寫入相應頭信息
res.write();寫入相應體信息
res.end(); 結束本次請求
response.writeHeader(200,{
'Content-Type':'text/plain:charset=utf-8'
})
response.write("你好!不會亂碼");
response.end();
創(chuàng)建一個固定大小的Buffer對象的方法
var buffer = new Buffer.alloc(size, content,encoding);
buffer是個對象
request
url
var url = require("url");
var urlobj = url.parse(req.url);
url網(wǎng)站字符串的解析
url 模塊
url.parse 將整個url轉換成對象,url第二個參數(shù)填true,使參數(shù)部分變?yōu)閷ο?br>
url.format 功能相反
querystring 模塊
parse 將參數(shù)部分轉換為對象
stringify 功能相反
fs
fs.readFile(filePath[,options],callback);
post和get區(qū)別
post請求的參數(shù)會封裝在請求體,比較安全
get請求的參數(shù)會直接加在請求的url中
原生處理表單
if (req.method.toLowerCase() === 'post') {
res.writeHeader(200, {
'Content-Type': 'text/html;charset=utf-8'
})
var postbody = '';
req.on('data', function(chunk) {
postbody += chunk;
})
if (urlobj.pathname === '/login') {
req.on('end', function() {
var postobj = querystring.parse(postbody);
res.end('登錄成功!' + postobj.username + ':' + postobj.password);
})
} else if (urlobj.pathname === '/regist') {
req.on('end', function() {
var postobj = querystring.parse(postbody);
res.end('注冊成功!' + postobj.username + ':' + postobj.password + ':' + postobj.confirm-password);
})
}
fs.rename(oldpath,newpath,callback);
node.js 下的post
node認為post請求過大,所以將請求體分塊通過異步的方法傳輸,使用事件監(jiān)聽data和end事件
req.on(“data”,function(chunk){
})
req.on(“end”,function(chunk){
})
第三方模塊安裝
如果模塊需要被當作全局命令來使用,就全局安裝;如果只是引入使用,就本地安裝。
最后編輯于 :2017.12.10 07:34:55
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者 【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。 平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。