这是我参与「第四届青训营 」笔记创作活动的第6天
NODE 的导入导出
node的开发是模块化开发- 每一个 js 文件都是一个独立的模块
- 都有自己独立的作用域
- 我们可以通过 导入导出 的方式把多个 js 文件合并在一起
导入
-
在 node 里面,我们使用
require来导入一个文件// 我是 index.js 文件 require('./a.js') console.log('我是 index.js 文件') -
当我在命令行运行
index.js文件的时候- 首先会把
a.js文件运行一遍 - 然后再继续执行我自己文件内部的代码
- 首先会把
-
也可以再导入的时候接受另一个文件导出的内容
// a 接受到的内容就是 a.js 这个文件导出的内容 // 如果 a.js 文件中什么都没有导出,那么接受到的就是一个 空对象 const a = require('./a.js')
导出
-
我们在写一个 js 文件的时候,可以向外导出一些内容
-
将来在这个文件被导入的时候,就可以接受到一些内容
// 我是 a.js // 每一个 js 文件都会有一个对象叫做 module // 在 module 里面有一个成员,叫做 exports // 每一个 js 文件会默认把 module.exports 导出 // 也就是说,我们向 module.exports 中添加什么内容 // 那么就会导出什么内容 module.exports.name = 'Jack' module.exports.age = 18 -
将来这个文件被导入的时候,接受到的内容就是一个对象,里面有两个成员
// 我是 index.js const a = require('./a.js') console.log(a) // { name: 'Jack', age: 18 }
模块化
-
在 node 的开发过程中
-
我们是把每一个功能独立做成一个模块
-
然后在使用 导入导出 的方式把他们关联在一起
- 利于维护
- 准确定位
-
我们一般把模块分为三种
- 内置模块 (node 天生就带有的模块)
- 自定义模块 (我们自己写的文件)
- 第三方模块 (从网上下载的别人写好的模块)
NODE 常用的内置模块
- 刚才是我们自己写的模块
- 现在我们来聊聊常见的内置模块
FS 模块
-
fs是 node 的一个内置模块 -
专门用来操作文件的
-
使用的时候直接导入就可以使用了
const fs = require('fs') // 接下来就可以使用 fs 这个变量去操作文件了
异步读取文件内容
-
异步的读取某一个文件内的内容
const fs = require('fs') // 因为是异步读取,所以要在回调函数里面获取结果 fs.readFile('./text.txt', 'utf8', function (err, data) { // err 表示读取的时候出现的错误 // data 表示读取到的内容,如果出现错误,那么是 data 是没有内容的 })
同步读取文件内容
-
同步读取某一个文件的内容
const fs = require('fs') // 因为是同步读取,所以直接以返回值的形式接收读取的内容就可以 const res = fs.readFileSync('./text.txt', 'utf8') // 同步读取的时候,如果出错会直接在控制台报错,并中断程序继续执行 // 如果没有错误,res 就会得到文件中的内容
异步写入文件
-
异步的向某一个文件中写入内容
const fs = require('fs') // 写入内容的时候,一般不会出现错误 // 因为如果没有这个文件的话,会创建一个这个文件在向里面写入内容 // 所以回调函数一般没什么用处,只不过是在写入文件结束后做些事情而已 // 虽然没有用处,但是必须要写 fs.writeFile('./text.txt', '我是要写入的内容', function () { console.log('写入完成') })
同步写入文件
-
同步的向某一个文件内写入内容
const fs = require('fs') // 因为是写入文件 // 没有返回值,因为一般都会写入成功 fs.writeFileSync('./text.txt', '我是要写入的内容')
HTTP 模块
-
因为 node 是一个服务端语言
-
所以 node 一定也可以开启一个服务器,开启一个服务
-
http这个模块就是专门用来开启服务,并且接受请求,返回响应的 -
http也是一个内置模块,直接导入使用就行const http = require('http') // 接下来就可以使用 http 这个模块去开启服务了
\