node的模块分为三大类:全局模块、系统模块、自定义模块
全局模块
- 定义:何时何地才能访问,不需要引用
- 常用的全局模块:
process.env
---------- 全局环境__dirname
--------- 当前所在绝对路径
- DEMO示例
// 1.js
console.log(process.env)
if(process.env.dev){
console.log('我是开发环境')
}else{
console.log('我是生产环境')
}
console.log(__dirname)
系统模块
-
定义: 需要require(),但不需要单独下载
-
常用的系统模块
path
: --------- 用于处理文件路径和目录路径的模块fs
-------- 文件读写操作模块http
---------- 服务器对象:http.createServer() 快速搭建服务器
-
DEMO示例
1、path模块的示例
// 2.js let path = require('path') //了解上传的文件 console.log(path.dirname('/node/a/b/c')); // 返回上一级目录 console.log(path.basename('/node/a/b/c')); // 返回路径的最后一级 console.log(path.extname('/node/a/b/c/index.html')); //返回指定路径文件的扩展名 console.log(path.resolve(__dirname,'index.html')) //返回绝对路径,即将__dirname所获取的路径与后者相拼
2、http、fs模块的示例 http.js
let http = require('http') let fs = require('fs') // http.createServer().listen(端口) // 创建了一个端口为88的服务器 http.createServer((request,response)=>{ console.log(request.url); // 表示访问的地址 fs.readFile(`./${request.url}`,(err,data)=>{ if(err){ console.log(err) response.writeHead(404) // 返回的状态码 response.end('404 not found') //返回的内容 }else{ response.writeHead(200) response.end(data) } }) }).listen(88)
在窗口中运行该js文件即可启动服务,这里是
node http.js
,服务启动后,打开浏览器,输入localhost:88,即可看到页面
自定义模块
- 定义:自己封装的模块,
封装时需要用exports导出,引入时需要用require引入
- 注意:require引入时,
如果指定了路径,就按路径去找,
如果没有指定路径,就直接去node_modules里面找 - DEMO示例
第一步,自定义的导出模块 mod.js
第二步,引入自定义的模块//exports.a = 1 //导出模块 //exports.b = 2 //相等于如下 module.exports = { a:1, b:2 }
//引入自定义的模块,有路径,根据路径去找 const mod1 = require('./mod.js') //引入自定义的模块,无路径,则去node_modules中查找 //const mod2 = require('mod.js') console.log(mod1)