Skip to content

模块的常用操作

  • 因为所有内容都在私有作用域中,需要明确引入和导出

导出方式

  • export 和 import + 各类声明 let function class 等
  • export 和 import + 声明好的变量名
  • 可在 export 和 import 时赋予别名 export
  • export default 的对象成为默认导出,导入时则默认接收这部分内容
    • 一种经验是 export xxx 给整个模块起个喜欢的名字,这样 导入时就可以随你喜欢

导入和导出时的大括号

  • 不是对象语法,而是特定的模块语法,导出不是对象字面量,引入也不是解构
  • export default + 大括号,基本就是一个对象了

引入方式

  • import * as xxx from './xxx' 获取模块全部内容并放入 xxx 对象中
  • 命名成员正常 {}引入
  • 默认成员需要用 as,也可以在{}外直接引入
  • 命名成员和默认成员可以在{}中按要求同时导入,也可以在{}内外分别引入
  • import defaultX, {xxx1, xxx2} from './xxx'

导入导出是复制还是引用

  • 是引用,在引入处表现为只读常量,无法修改
  • 可以通过在导入和导出处各自一个定时器检查读写变化来实现

引入的地址要求

  • 必须把后缀/扩展名写全,只是在打包工具支持下可以省略
  • 需要补全./或者使用/xxx 指定根目录
  • 可以指定一个完整的网络 url,可以引 cdn
  • 通过引入运行模块,而非使用具体的数据
    • import {} from './xxx'即可只运行模块
    • 可简写为 import './xxx' 直接省略指定数据部分

动态引入与引入的条件和时机

  • import from 实际是静态的,不能在运行时根据条件判断按需引入
  • import()函数实现了这个功能

导入后直接导出

  • export {xxx1, xxx2} from './xxx'

集中导出的开发经验

  • 当需要导入导出的数据较为繁琐时
  • 可以在某个文件(比如 index.js)中集中导入再导出