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表示開發環境中使用的模組。
簡寫:
- install : i
- --save : -S
- --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路徑
- __dirname : 當前檔案的資料夾的路徑
- __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' }*/
複製程式碼