node中常用的几大模块

7 篇文章 0 订阅
2 篇文章 0 订阅

       最近一段时间工作不是很忙,抽空学习了一下node相关的知识,打算接下来学习一下VUE框架,配合VUE框架做一个小Demo。下面是小编总结的node中几个常用的模块。

Node中的模块分为三种类型

  1. node天生自带的模块(核心模块);
  2. node的第三方模块;通过npm包管理器下载的模块;
  3. 自定义模块(即自己写的js文件;在node环境中运行的js文件,一个文件就是一个模块)。

模块导入:

  1. require导入一个模块;如果是同级的自定义模块,必须加上‘./’;
  2. 如果文件的后缀名是.js、.json文件,那么可以省略后缀名;
  3. Require这个方法不在全局的对象global中;
  4. Require导入的模块会将模块中的代码从上到下执行。

模块导出:(module.exports/exports

  1. 把当前模块中的内容进行暴露,让其他模块可以使用;
  2. Module.exports可以用其他的空间地址进行覆盖;exports不能用其他的空间覆盖,只能给其新增属性;
  3. Module.exports不仅支持空间地址,还支持基本数据类型。

       在每个自定义模块的最外层,会默认添加一个闭包的函数,这个函数中会接收五个参数:

Exports:将当前模块的属性和方法导出;

__dirname:当前文件的父级目录的绝对路径;

__filename:当前文件的绝对路径

(function (module,exports,require,__dirname,__filename){

})()

 

fs模块

let fs = require(“fs”);      // 引入模块

fs.readFile(path,option,callback);       // 异步读取文件

// path:当前读取文件的路径

// option:读出来数据的编码格式

// callback:回调函数;该函数有两个参数:第一个参数代表错误信息;如果没有错误,那么默认值是null;第二个参数是读出来的数据,默认是undefined。

 

Fs.readFileSync(path,option);                              // 同步读取文件;读出来的数据默认是一个JSON格式的字符串;可以通过JSON.parse转成数组

Fs.writeFile(path,data,option,callback);                // 异步写入文件;当异步写入成功之后,执行这个回调;新的数据会将老的数据进行覆盖

Fs.writeFileSync(path,data,option);                      // 同步写入文件

Fs.appendFile(path,data,option,callback);            // 向文件的末尾追加内容;如果文件路径不存在,那么会默认创建一个文件,并且把文件内容写进去;会默认的调用toString方法,将其他的数据类型转成字符串

 

http模块

let http = require(‘http’);

let server = http.createServer(function(req,res){        // 请求一次,该函数执行一次

         // req:请求信息;当客户端请求时,会把当前请求的信息放入到这个参数中

         // res:响应信息;

         Console.log(req.path);     // 这个是路径

         Console.log(req.path);     // 这个是参数

         Console.log(req.path);     // 主机域名

         Console.log(req.path);     // 返回当前路径的参数

         Res.setHeader(‘Content-Type’,’text/plain;charset=utf-8’);    // 设置响应头,告诉浏览器按照什么类型进行解析和渲染

         res.end(‘this is a string’);           // 1、结束当前请求;2、把后端整理的数据返回给客户端,数据是字符串或者buffer类型的

}

// 端口号:0-65535; http默认端口号是80,HTTPS默认端口号是443

// 让当前的服务监听8000这个端口;当客户端访问8000端口时,会触发当前server的回调函数;

Server.listen(8000,function(){

         // 该回调函数只在端口成功启动时执行一次,启动失败不执行

         Console.log(‘端口启动成功’);

});

 

Url模块

let http = require(‘http’);

let url = require(‘url);

http.createServer(function(){

         // url.parse:用来处理路径的,pathname:当前的路径;query:参数组合的对象

         let {pathname,query} = url.parse(req.url,true);

}).listen(8000,function(){

         Console.log(‘端口启动成功’);

})

 

Mime模块

Let mime = require(‘mime’);

let http = require(‘http’);

let url = require(‘url);

 

http.createServer(function(){

         // url.parse:用来处理路径的,pathname:当前的路径;query:参数组合的对象

         let {pathname,query} = url.parse(req.url,true);

         // mime有个getType方法的返回值是当前文件对应的mime类型

        // 解决了不同的文件类型设置不同的响应头

         res.setHeader(‘Content-Type’,mime.getType(pathname));

}).listen(8000,function(){

         Console.log(‘端口启动成功’);

})

常见的Mime类型

.html     text/html

.css      text/css

.txt        text/plain

.js         application/javascript

.json     application/json

.png     image/png

.jpg      image/jpeg

 

Express模块

Let express= require(‘express);

Let app = express();       // express执行相当于创建一个服务

App.get(‘/listen’,function(req,res){

         Res.send(‘get’);

})

App.post(‘/listen2’,function(req,res){

         Res.send(‘post);

})

App.all(‘/listen3’,function(req,res){

         Res.send(‘all);

})

App.listen(8000,function(){

         Console.log(‘端口启动成功~’);

})

 

Node的优势

  1. 基于V8引擎运行的环境,速度很快;
  2. 基于事件驱动和非阻塞I/O模型;非阻塞即代表异步;I/O模型:读写文件;
  3. 采用异步单线程开发;
  4. Npm包管理器,全球最大的开源生态系统

 

Node的优点

  1. 高性能:因为避免了大量线程切换的开销;当大负荷的情况下,内存消耗很少;一般用于做中间层;用来缓冲大量的请求给服务器带来的压力;
  2. Node的单线程,底层是多线程的;采用非阻塞I/O操作;
  3. Node的单线程保证了线程的绝对安全,避免了多线程改变同一个变量造成的线程崩溃

 

Node的缺点

     如果其中一个请求发生错误,会导致整个服务崩溃。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值