Node内置模块及模块化导入导出


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)=> {})

  1. param1 — 要读取的文件路径
  2. 文件的编码格式
  3. 回调函数,如果有错误,err不为空,没有错误,err为null,data为文件读取内容

1.2.2 fs.writeFile()

语法:fs.writeFile(param1, param2, param3, (err)=> {})

  1. param1 — 要写入的文件路径
  2. param2 — 要写入的文件内容
  3. param3 — 写入文件的编码格式
  4. 回调函数,写入错误,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()              // 我是模块内部的变量

猜你喜欢

转载自blog.csdn.net/weixin_46801545/article/details/125542091
今日推荐