[前端笔记024]Node.js之模块化

前言

模块化简介

  • 模块化高内聚,低耦合,jquery算一种模块,但无法选择瑶引入模块的哪些内容
  • commonjs模块化标准,社区定义的,nodejs默认使用;此外还有个ES模块化标准

CommonJS规范

  • 引入模块使用require(“path”)函数来引入,
  • 定义模块时,模块中的内容默认是不能被外部看见的,可以通过exports来设置向外暴露的内容
  • 访问exports的方式有两种,exports和module.exports,两个对象全等,该对象作为require的返回值
  • 可以通过exports.xxx=xxx一个一个暴露,也可以通过module.exports={xxx:xxx}的方式同时暴露多个值
  • 引入自定义模块时,path以./或…/开头,扩展名可省略,node会按照js,json,node的顺序依次查找;引入核心模块时,直接写核心模块名字即可,也可以在核心模块前添加node:加快查找速度
  • cjs为扩展名时,表示是一个CommonJS标准的模块,js在没有特殊配置时,也默认CommonJS模块
  • 文件夹作为模块时,默认文件为index.js
  • 原理,所有 CommonJS模块会被包装在一个函数中,(function(exports,require,moudle,__filename,__dirname){ xxxxx });

ES模块化规范

  • 使用ES模块,两种方式,使用mjs作为扩展名,或者修改package.json将模块化规范设置为ES模块
  • ES模块虽然麻烦点,但性能好,还是异步的
  • 向外导出内容,使用export;引入模块,import {a, b as hello, c} from “./路径.mjs”,官方标准下不可省略扩展名,abc与导出时的变量一一对应,可以使用as指定别名
  • 设置默认导出,一个模块中只能有一个默认导出,export default function sum(a,b){retunr a+b };导入时,随便起别名且不需要括号,import hello from “./路径.mjs”
  • 通过ES模块导入的内容都是常量,不能修改。ES模块都是运行在严格模式下的。
  • ES模块化在浏览器中同样支持,但有兼容性问题,通常不会直接使用,结合打包工具使用。

核心模块

  • 核心模块是node的内置模块,可以在node中直接使用,ES标准下全局对象的标准名应该为globalThis,在浏览器中指window,在node中指global
  • process,表示当前的node进程,通过该对象可以获取进程的信息,或者对进程做各种操作,是一个全局变量可以直接使用;
  • process常用方法:process.exit(状态码)结束当前进程,终止node;process.nextTick( () = > {})表示将函数插入到tick队列中,在微任务队列和宏任务队列之前执行。早期微任务队列的替代品
  • path,非全局变量,需要引入,核心模块直接写名字即可;常用方法:path.resolve(),直接调用则返回当前工作目录的绝对路径,参数为相对路径时,生成绝对路径,这两种会根据工作目录的不同,返回不同的绝对路径;前两种方法一般不用,最终形态,path.resolve(__dirname,“相对路径”)
  • fs,需要引入,node中的文件操作,I/O;
  • fs常用方法:fs.readFileSync(“最好使用path生成的绝对路径”),同步读取文件,会阻塞,不推荐使用
  • 异步读取,fs.readFile(path,(err,buffer)=>{}),容易出现回调地狱
  • 使用promise版fs方法,引入require(fs/promise),fs.readFile().then().catch()或者使用立即执行函数+async+await的方式解决
  • fs.appendFile(path,data),创建新文件,或将数据添加到已有文件中。
  • fs.mkdir(path,可选参数),创建目录
  • fs.rmdir(path,可选参数),删除目录
  • fs.rm(),删除文件
  • fs.rename(path,path),重命名,相当于剪切
  • fs.copyFile(path,path),复制文件,相当于复制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值