node

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

  • node在全局使用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){
})

第三方模塊安裝

  • 如果模塊需要被當作全局命令來使用,就全局安裝;如果只是引入使用,就本地安裝。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 個人入門學習用筆記、不過多作為參考依據(jù)。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,637評論 1 37
  • 內(nèi)容來自《Node.js開發(fā)指南》 核心模塊是 Node.js 的心臟,它由一些精簡而高效的庫組成,為 Node....
    angelwgh閱讀 964評論 0 1
  • Node.js是目前非?;馃岬募夹g,但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,720評論 2 41
  • 模塊化公布自己的模塊功能. 其他模塊調(diào)用另外的模塊. 公布方法 如果要輸出一個鍵值對象{},可以利用exports...
    httIsHere閱讀 592評論 0 0
  • 114days 我知妳還是很痛苦。 mama也很痛苦~人生需要一點變化。 妳每天都在迎接變化。 慢慢長大… 快快長大…
    sueva閱讀 217評論 0 0

友情鏈接更多精彩內(nèi)容