前端代码模块化

CommonJS 规范

基于文件系统,不适用于浏览器

node 端

模块文件

// m1.js

const mod = {
  a: 1,
  b: 3,
  fn() {
    console.log("hello");
  },
};
module.exports = {
  mod,
};

引入模块

// m2.js

const { mod } = require("./m1.js");
mod.fn(); // hello

AMD 规范

requireJS 是 AMD 规范的一种实现,可用于浏览器

// 模块文件 a.js
define(function () {
  let a = 1;
  let b = 2;
  return { a, b };
});

/*
// 或者这样写

define(function (require, exports, module) {
  let a = 1;
  let b = 2;

  module.exports = {
    a,
    b,
  };
});

*/
// 主文件 b.js
// 这里的第一个参数中,可以在数组里面引入多个模块,逗号分隔,第二个函数参数中每一个形参都跟引入的模块一一对应
define(["./a.js"], function (a) {
  console.log(a);
});

/*
// 或者这样写

define(function (require, exports, module) {
  let a = require("./a");
  console.log(a);
});


*/
<!-- 浏览器中引入主模块 -->

<html>
  <body>
    <!-- 这里的 require.js 是 AMD 规范的实现 -->
    <script src="./require.js" data-main="./b.js"></script>
  </body>
</html>

ESM

ES6 的模块化方式

// a.js

let a = 1;
let b = 2;
function fn() {
  console.log("a  module :", a + b);
}

// 需要导出的数据列表
export { a, b, fn };
// b.js
import * as A from "./a.js";
console.log(A.a);
A.fn();

/*
// 当然也可以通过解构引入

import { a, b, fn } from "./a.js";
console.log(a);
fn();

*/
<html>
  <body>
    <!-- 浏览器中,type ='module' 是关键 -->
    <script type="module" src="./b.js"></script>
  </body>
</html>
动态导入模块
// a.js 模块

let a = 1;
let b = 2;
function fn() {
  console.log("a  module :", a + b);
}

export { a, b, fn };
// b.js 模块

document.onclick = function () {
  // 这里 import 会返回一个 promise
  import("./a.js").then((data) => {
    data.fn();
  });

  // 当然也支持 async + await
  // let m1 = await import("./a.js")
};
<!-- 当点击页面的时候才会加载 b.js  -->
<html>
  <body>
    <script type="module" src="./b.js"></script>
  </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值