<node.js學習筆記(2)>

liangsheng0111發表於2018-11-13

1.npm的下載和釋出

npm是Node的包管理器。
初始化 :npm init
會產生一個package.json檔案,儲存資訊。
下載第三方依賴模組:在npm官網中找一個包名,例如: koa
npm install koa -g //-g表示全域性下安裝第三方包
npm install koa --save //--save表示在當前的資料夾下安裝該包/模組
在package.json檔案中會產生"dependencies":{"koa": "^2.6.2"}表明該包的版本號,dependencies表示當前專案所使用的依賴,也就是生產環境使用的模組。
npm install koa --save-dev
在package.json檔案中會產生"devDependencies:{}",devDependencies表示開發環境中使用的模組。

簡寫:

  1. install : i
  2. --save : -S
  3. --save-dev : -D

一個小案例

const koa = requrie("koa"); //匯入koa模組
console.log(koa); // [Function: Application] 是一個類,需要new執行
const app = new koa(); //例項物件
const main = function(ctx){
    ctx.body = "這是一個用來測試的簡單的web服務";
};//回撥函式
app.use(main); //接回撥函式
app.listen(3000); //監聽3000埠
複製程式碼

npm的釋出
npm login 輸入使用者名稱,密碼,郵箱。再通過npm publish釋出包


2.events模組

新建js檔案命名為demo.js

const EventEmitter = require("events"); //匯入核心模組events
const emitter = new EventEmitter(); //得到例項物件
//on事件繫結
emitter.on("myEvents", () => {
    console.log("1");
});
emitter.emit("myEvents"); //觸發事件
setTimerout(() => {
    console.log("2");
},1000);
複製程式碼

在終端執行
node demo
先輸出1,1秒後輸出2。


//off事件解綁
function fn(){
    console.log("這是非同步回撥執行後要呼叫的函式");
}
emitter.on("myEvents", fn); 
emitter.off("myEvents", fn); //解綁
emitter.emit("myEvents");
複製程式碼

在終端上執行不會列印結果。

//once一次性事件
function fn(){
    console.log("1");
}
emitter.once("myEvents", fn); 
emitter.once("myEvents", fn); 
emitter.once("myEvents", fn); 
emitter.emit("myEvents");
複製程式碼

在終端上執行只會列印一次1。


//newListener事件
emitter.on("newListener", () => {
   console.log("你又新增了新的事件");
});
複製程式碼

只要在on()新增事件,都會觸發newListener

emitter.on("myEvents", () => { console.log("1");});
emitter.on("myEvents", () => { console.log("1");});
emitter.on("myEvents", () => { console.log("1");});
複製程式碼

會觸發三次,列印三次"你又新增了新的事件".


getMaxListeners() :返回同一個事件最大限定值 (超出不會報錯,會有警告) setMaxListeners() :設定同一個事件個數值

console.log(emitter.getMaxListeners()); //10
emitter.setMaxListeners(20);
console.log(emitter.getMaxListeners());  //20
複製程式碼

listeners() :返回同一個事件有多少個回撥函式

emitter.on("myEvents", () => { console.log("1");});
emitter.on("myEvents", () => { console.log("1");});
emitter.on("myEvents", () => { console.log("1");});
console.log(emitter.listeners("myEvents")); 
複製程式碼

在終端執行
node npm 輸出 [[Function],[Function],[Function]]


path路徑

  1. __dirname : 當前檔案的資料夾的路徑
  2. __filename : 當前檔案的完整路徑
const path = require("path");
//join()方法:返回引數拼接起來的相對路徑
console.log(path.join("a", "b"));  // a\b
console.log(path.join("a", "b", ".."));  // a

//resolve()方法:返回絕對路徑
console.log(path.resolve());  //返回絕對路徑 例如E:\faith\vip\demo (不包含檔名)
console.log(path.resolve("a")); //E:\faith\vip\demo\a
console.log(path.resolve(__dirname, "/a")); // E:\a

//parse()方法:解析序列化成物件
//新建檔案命名為app.js 
console.log(path.parse(__filename));
/*{ root: 'E:\\',
  dir: 'E:\\faith\\vip\\demo,
  base: 'app.js',
  ext: '.js',
  name: 'app' }*/
複製程式碼

相關文章