模块化模式

Module

概述
最初被定义为在传统软件工程中为类提供私有和公共 封装 的一种方法
能够使一个单独的对象拥有公共|私有的方法和变量,从而屏蔽来自全局作用域的特殊部分
有助于 减少 函数名在页面中与其它脚本区域内定义的函数名 冲突 的可能性
使用该模式,只需返回|导出一个公有API,其它都维持在私有域中
应用
导出函数:每个业务逻辑对应一个js,避免把所有的业务逻辑集中到一个js
导出变量:很少单独导出一个变量,而是以json对象的形式给出,特别是配置文件
推荐写法:js只有一个业务逻辑,采用默认导出
引用时,请使用import;不要使用require
引用时,可以省略后缀名js - 需要检验
引用时注意路径的问题,大多数开发环境要求是相对路径
参考代码
默认导出,只能整体引入
Module:test.js,默认导出全部
let count = 0;
function dec() {
  return --count;
}
function inc() {
  return ++count;
}
export default {
  dec, inc
}
Module:全部导入,纯js需指定script的type为module
<script type="module">
  import test from './test.js'
  console.log(test);
  console.log(test.inc());
  console.log(test.inc());
  console.log(test.inc());
</script>
参考代码
普通导出,可以按需引入
Module:test.js,普通导出
let count = 0;
function dec() {
  return --count;
}
function inc() {
  return ++count;
}
export {
  dec, inc
}
Module:按需导入
<script type="module">
  import { inc } from './test.js'
  console.log(inc());
  console.log(inc());
  console.log(inc());
</script>
定义配置信息
Module:person.js,默认导出
export default {
  "name": 'gl',
  "age": 24
}
Module:按需导入
<script type="module">
  import person from './person.js'
  console.log(person);
</script>