重温前端之模块化

module 模式

最开始,并没有出现模块化规范,一般使用一种 module 模式来解决 js 作用域污染问题

使用对象

jq 比较出名

语法

let myModule = (function (window) {
  let name = "module";
  function setName(value) {
    name = value;
  }
  return { setName }; // 将函数暴露
})(window);

CommonJS

第一种比较规范的规范出现

使用对象

nodejs 是主要实践者,使用 exports/require 进行引入导出

语法

//文件x.js
let x = 1;
function add() {
  return ++x;
}
module.exports.x = x;
module.exports.add = add;
//也可以抛出对象
module.exports={
    x:x;
    add:add;
}


//文件main.js
let xm = require("./x.js");
console.log(xm.x);
console.log(xm.add());

AMD

  • 使用了异步加载,模块被当作回调函数
  • 需要提前加载所有模块

CMD

  • 同时支持同步和异步加载
  • 按需加载模块
  • 依赖就近书写

es6 模块化

常规导入导出

  • 导出export let myName="name";
  • 导入import {myName} from "./test.js"

对象整体导入导出

  • 导出
let name = "name";
let getName = () => name;
export { name, getName };
  • 导入
import { name, getName } from "./test.js";

使用 as 重命名导入导出

  • 导出时
let name = "name";
let getName = () => name;
export { name as name_out, getName as getName_out };
  • 导入时
import { name as name_in, getName as getName_in } from "./test.js";

整体导入

import * as all from "./test.js";
console.log(all.name);

默认导入导出

  • 导入
export default {
  name: "name",
  getName: function () {
    return this.name;
  },
};
  • 导入
import all from "./test.js"; //注意,默认导出不需要大括号
console.log(all.name, all.getName());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值