<node.js学习笔记(2)>

1,236 阅读2分钟

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