最近一段时间工作不是很忙,抽空学习了一下node相关的知识,打算接下来学习一下VUE框架,配合VUE框架做一个小Demo。下面是小编总结的node中几个常用的模块。
Node中的模块分为三种类型:
- node天生自带的模块(核心模块);
- node的第三方模块;通过npm包管理器下载的模块;
- 自定义模块(即自己写的js文件;在node环境中运行的js文件,一个文件就是一个模块)。
- require导入一个模块;如果是同级的自定义模块,必须加上‘./’;
- 如果文件的后缀名是.js、.json文件,那么可以省略后缀名;
- Require这个方法不在全局的对象global中;
- Require导入的模块会将模块中的代码从上到下执行。
- 把当前模块中的内容进行暴露,让其他模块可以使用;
- Module.exports可以用其他的空间地址进行覆盖;exports不能用其他的空间覆盖,只能给其新增属性;
- 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类型
.htmltext/html
.csstext/css
.txttext/plain
.jsapplication/javascript
.jsonapplication/json
.pngimage/png
.jpgimage/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的优势
- 基于V8引擎运行的环境,速度很快;
- 基于事件驱动和非阻塞I/O模型;非阻塞即代表异步;I/O模型:读写文件;
- 采用异步单线程开发;
- Npm包管理器,全球最大的开源生态系统
Node的优点
- 高性能:因为避免了大量线程切换的开销;当大负荷的情况下,内存消耗很少;一般用于做中间层;用来缓冲大量的请求给服务器带来的压力;
- Node的单线程,底层是多线程的;采用非阻塞I/O操作;
- Node的单线程保证了线程的绝对安全,避免了多线程改变同一个变量造成的线程崩溃
Node的缺点
【PHP|node中常用的几大模块】如果其中一个请求发生错误,会导致整个服务崩溃。
推荐阅读
- 数据库|SQL行转列方式优化查询性能实践
- mysql|一文深入理解mysql
- 达梦数据库|DM8表空间备份恢复
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- 谈灾难恢复指标(RTO与RPO是什么鬼())
- RPO与RTO
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...