NODE 的导入导出

134 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第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.jsconst a = require('./a.js')
    ​
    console.log(a) // { name: 'Jack', age: 18 }
    

模块化

  • 在 node 的开发过程中

  • 我们是把每一个功能独立做成一个模块

  • 然后在使用 导入导出 的方式把他们关联在一起

    • 利于维护
    • 准确定位
  • 我们一般把模块分为三种

    1. 内置模块 (node 天生就带有的模块)
    2. 自定义模块 (我们自己写的文件)
    3. 第三方模块 (从网上下载的别人写好的模块)

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 这个模块去开启服务了
    

\