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' }*/