清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • ECMAScript6

    • 简介
    • let
    • const
    • 解构赋值
    • 对象简写
    • 箭头函数
    • 参数默认值
    • 剩余参数
    • 可选链操作符
    • 空值合并运算符
    • 逻辑空赋值
    • 模板字符串
    • 扩展运算符 (展开语法)
    • Array 扩展
    • String 扩展
    • Number 扩展
    • Object 扩展
    • 迭代器
    • 生成器
    • BigInt
    • Set
    • Map
    • class
    • 模块化
    • globalThis
    • Promise
    • async-await

模块化

ES6 引入了模块化的概念,模块化是指将代码分割成独立的文件或模块,每个模块都有自己的作用域和功能。这样可以提高代码的可维护性和可重用性。其实在 ES6 以前,JavaScript 就有模块化的概念,它是通过 CommonJS 和 AMD 等规范实现的。ES6 的模块化是通过 import 和 export 关键字来实现的,提供了更为标准和简洁的语法。

export 和 import

  • 分别导出

    // a.js
    export let phone = 'xiaomi'
    
    export function foo() {
    console.log('123')
    }
    
    <script type="module">
    import * as ma from './a.js'
    
    ma.foo()
    console.log(ma.phone)
    </script>
    

    注意,VS Code 要在 live serve 下运行。

  • 统一导出

    let phone = 'xiaomi'
    
    function foo() {
    console.log('123')
    }
    
    export {phone, foo}
    
  • 默认导出

    一个文件中只能有一个默认导出。

    export default {
    name: '123',
    foo() {
        console.log('hello')
    }
    }
    
  • 解构赋值

    import { foo, bar } from 'xxx'
    import { foo as foo1, bar } from 'xxx'
    
    // 针对默认导出
    import { default as a} from './a.js'
    

    注意,并不是所有浏览器都支持 ES6,所以通常要用 Babel 将其转换为 ES5 的语法。

Babel

Babel 是一个 JavaScript 编译器,可以将 ES6+ 的代码转换为向后兼容的 JavaScript 代码,以便在旧版本的浏览器或环境中运行。Babel 支持将 ES6 模块化语法转换为 CommonJS 或 AMD 等模块化规范。

本地安装 babel-preset-es2015 和 babel-cli:

npm install --save-dev babel-cli babel-preset-es2015

项目根目录新建 .babelrc 文件,输入以下内容:

{
  "presets":[
    "es2015"
  ],
  "plugins":[]
}

提示

转换请参考 https://www.jianshu.com/p/701a48c81371。但是在转了之后,浏览器还是无法识别,因为有 CommonJS,所以还需要下载 browserify。

想要编辑此页?
上次更新: 2025/6/5 23:39
贡献者: Junfeng Dai
←classglobalThis→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号