模块化规范简单实现(理解使用和原理)

a 1. 模块化
模块化就是指将一个复杂的系统分解到多个模块方便编码,但是在js当中是没有模块体系的,在之前我们实现模块化普遍采用的是命名空间的方式,但是通过这种方式来组织代码会造成以下不好的几点:

  • 命名空间冲突,两个库可能会使用同一个名称;
  • 无法合理的管理项目的依赖和版本;
  • 无法方便的控制依赖的加载顺序。

所以出现了几种模块加载方案,比如CommonJSAMD

2. CommonJS

CommonJS是一种使用广泛的JavaScript模块化规范,核心思想是通过require方法来同步的加载依赖的其他模块,通过module.exports导出需要暴露的接口,node的模块化就是通过CommonJS实现的。

用法如下:

// 导入
const moduleA = require('./moduleA');
// 导出
module.exports = moduleA;

下面看一下怎么使用:

// a.js
module.exports = '人生不是一蹴而就';
// b.js
let str = require('./a.js');
console.log(str);  // 人生不是一蹴而就

通过以上的导入导出方法就可以读取另一个文件中的内容,下面通过简单的实现看一下require导入的原理,先大概知道个思想,其实就是将a.js的文件内容引进来了(通过node中的fs文件模块),并且用一个闭包包起来,然后执行这个闭包:

// a.js
module.exports = '人生不是一蹴而就';
// b.js
let fs = require('fs');
function req(moduleName) {
    let content = fs.readFileSync(moduleName, 'utf8');
    // 最后一个参数是函数的内容体 也就是将文件内容用一个闭包包起来
    let fn = new Function('exports', 'module', 'require', '
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值