文章目录
Node内置模块及模块化导入导出
提示:以下是本篇文章正文内容,下面案例可供参考
前言
node是基于commonjs的模块化规范的,我们要通过require来引入模块
一、node内置模块
1.1 path模块
1.1.1 path.join() ---- 路径拼接方法
const path = require('path')
path.join('/c','./d','a')
// 输出 c/d/a
path.join('a/b/c','../d','./a', 'e')
// 输出 a\b\d\a\e
// '../d',向前进了一级菜单,抵消了'c'
1.1.2 __dirname,获取当前文件的绝对路径
const path = require('path')
console.log(__dirname)
// 输入当前文件所在的绝对路径 例如: C:\Users\liu\Desktop\node>
// 与path.join结合
path.join(__dirname, 'index.js')
// 输入 例如: C:\Users\liu\Desktop\node\index.js
1.1.3 ___filename,获取当前文件的绝对路径,包含当前文件名
const path = require('path')
console.log(__filename)
// 输出 C:\Users\liu\Desktop\node\01_path.js
1.2 fs模块
1.2.1 fs.readFile()
语法: fs.readFile(parma1, parma2, (err, data)=> {})
- param1 — 要读取的文件路径
- 文件的编码格式
- 回调函数,如果有错误,err不为空,没有错误,err为null,data为文件读取内容
1.2.2 fs.writeFile()
语法:fs.writeFile(param1, param2, param3, (err)=> {})
- param1 — 要写入的文件路径
- param2 — 要写入的文件内容
- param3 — 写入文件的编码格式
- 回调函数,写入错误,err不为空,写入正确,err为null
需要注意的地方:
文件写入时,会覆盖文件原有内容
文件写入时,如果没有要写入的文件,会自动创建文件,但是没有相关的路径,不会创建路径,会报错
// 引入fs模块
const fs = require('fs')
// 引入path模块
const path = require('path')
let textCon = '我是要写入2.text中的内容'
fs.readFile(path.join(__dirname, 'index.text'), 'utf-8', (err, data)=> {
if(err) {
return console.log(err.message)
}
console.log('data')
})
fs.writeFile(path.join(__dirname, '2.text'), textCon, 'utf-8', (err)=> {
if(err) {
return console.log(err.message)
}
console.log('文件写入成功了')
})
1.3 http模块
http模块是node自身的模块,可以用来创建http服务。
const http = require('http')
cosnt server = http.createServer()
//
server.on('request',(req, res)=> {
// 监听被请求的url地址
// 如果 请求http://localhost:1000,req.url 为 '/'
// 如果 请求http://localhost:1000/demo/list,req.url 为 '/demo/list'
req.url
// 获取请求方式,post || get
req.method
// res可以设置返回体
res.setHeader("Content-Type", "text/html;charset=utf-8")
res.end('我是请求的返回内容')
})
server.listen(1000, ()=> {
console.log('sever running at http://localhost:1000')
})
二、模块化
每一个js文件都是一个模块,模块间的变量都是隔离的,在一个模板要使用另外一个模块的变量或者方法,首先要将这个模块的方法和变量向外暴露
2.1 require
通过require()
方法可以引入模块
2.2 module.exports
通过module.exports
可以向外暴露模块,可以将整个模块向外暴露,也可以单独暴露一部分方法和变量
// 整体向外暴露
module.exports = {
a : '我是变量a',
fun() {
console.log(this.a + ',哈哈哈哈')
}
}
// 引入这个模块
const demo = require('./06_整体向外暴露模块.js')
console.log(demo.a) // 我是变量a
demo.fun() // 我是变量a,哈哈哈哈
// 部分向外暴露
const b = '我是模块内部的变量'
fun = ()=> {
console.log(b)
}
const c = '我被向外暴露了'
module.exports = {
fun,
c
}
const demo2 = require('./07_部分向外暴露.js')
console.log(demo2.b) // undefined
console.log(demo2.c) // 我被向外暴露了
demo2.fun() // 我是模块内部的变量