Webpack ECMAScript 模块详解

 更新时间:2023年12月01日 14:29:21   作者:鋜斗  
ECMAScript 模块(ESM)是在 Web 中使用模块的规范, 所有现代浏览器均支持此功能,同时也是在 Web 中编写模块化代码的推荐方式,这篇文章主要介绍了Webpack ECMAScript 模块,需要的朋友可以参考下

前言

标题一

ECMAScript 模块(ESM)是在 Web 中使用模块的规范。 所有现代浏览器均支持此功能,同时也是在 Web 中编写模块化代码的推荐方式。

webpack 支持处理 ECMAScript 模块以优化它们。

导出

关键字 export 允许将 ESM 中的内容暴露给其他模块:

export const CONSTANT = 42;
export let variable = 42;
// 对外暴露的变量为只读
// 无法从外部修改
export function fun() {
  console.log('fun');
}
export class C extends Super {
  method() {
    console.log('method');
  }
}
let a, b, other;
export { a, b, other as c };
export default 1 + 2 + 3 + more();

导入

关键字 import 允许从其他模块获取引用到 ESM 中:

import { CONSTANT, variable } from './module.js';
// 导入由其他模块导出的“绑定”
// 这些绑定是动态的. 这里并非获取到了值的副本
// 而是当将要访问“variable”时
// 再从导入的模块中获取当前值
import * as module from './module.js';
module.fun();
// 导入包含所有导出内容的“命名空间对象”
import theDefaultValue from './module.js';
// 导入 `default` 导出的快捷方式

将模块标记为 ESM

默认情况下,webpack 将自动检测文件是 ESM 还是其他模块系统。

Node.js 通过设置 package.json 中的属性来显式设置文件模块类型。 在 package.json 中设置 “type”: “module” 会强制 package.json 下的所有文件使用 ECMAScript 模块。 设置 ​"type": "commonjs"​ 将会强制使用 CommonJS 模块。

{
  "type": "module"
}

除此之外,文件还可以通过使用​.mjs​​.cjs​扩展名来设置模块类型。 ​.mjs​ 将它们强制置为 ESM,​.cjs​ 将它们强制置为 CommonJs

在使用text/javascriptapplication/javascript mime typeDataURI中,也将使用 ESM

除了模块格式外,将模块标记为 ESM 还会影响解析逻辑,操作逻辑和模块中的可用符号。

导入模块在 ESM 中更为严格,导入相对路径的模块必须包含文件名和文件扩展名(例如 *.js 或者 *.mjs),除非你设置了 fullySpecified=false

Tip
依旧支持导入包,例如 import “lodash” .

non-ESM 仅能导入 default 导出的模块,不支持命名导出的模块。

CommonJs 语法不可用: ​require​, ​module​, ​exports​, ​__filename​, ​__dirname​.

Tip
HMR 使用 import.meta.webpackHot 代替 module.hot。

到此这篇关于Webpack ECMAScript 模块的文章就介绍到这了,更多相关Webpack ECMAScript 模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现倒计时(天数、时、分、秒)

    JS实现倒计时(天数、时、分、秒)

    这篇文章主要为大家详细介绍了JS实现倒计时,精确到天数、时、分、秒,还为大家分享了parseInt() 函数的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • javascript设计简单的秒表计时器

    javascript设计简单的秒表计时器

    这篇文章主要介绍了javascript设计简单的秒表计时器,该秒表将包括两个按钮和一个用于显示时间的文本框,当单击开始按钮时开始计时,最小单位为0.01秒,此时再次单击按钮则停止计时,文本框显示经过的时间,需要的朋友可以参考下
    2015-11-11
  • 用JavaScript做一个简易计算器的三种方法举例

    用JavaScript做一个简易计算器的三种方法举例

    这篇文章主要给大家介绍了关于用JavaScript做一个简易计算器的三种方法,JS中实现一个简单的计算器并不困难,我们只需利用基本的数学运算符和JavaScript的语法即可,需要的朋友可以参考下
    2023-10-10
  • javascript中Date()函数在各浏览器中的显示效果

    javascript中Date()函数在各浏览器中的显示效果

    本文给大家分享的是javascript中Date()函数在各浏览器中的显示效果,由于各大浏览器的兼容性问题,本文做了这个测试,希望有需要的小伙伴可以少走些弯路
    2015-06-06
  • JS实现计算小于非负数n的素数的数量算法示例

    JS实现计算小于非负数n的素数的数量算法示例

    这篇文章主要介绍了JS实现计算小于非负数n的素数的数量算法,可实现针对一定范围内素数个数的统计功能,涉及javascript数值运算相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • javascript验证身份证号

    javascript验证身份证号

    这篇文章主要介绍了javascript验证身份证号,十分的详细,需要的朋友可以参考下
    2015-03-03
  • 微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法

    微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法

    这篇文章主要介绍了微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法,涉及事件绑定及this.setData动态设置属性数据的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • 微信小程序网络请求模块封装的具体实现

    微信小程序网络请求模块封装的具体实现

    大家做小程序项目的时候肯定会遇到数据对接需求,下面这篇文章主要给大家介绍了关于微信小程序网络请求模块封装的具体实现,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • JavaScript版TAB选项卡效果实例

    JavaScript版TAB选项卡效果实例

    tab选项卡效果就是当我指上或经过时就会显示这个选项卡下面的内容,下面我来给大家介绍一款纯js实现的TAB选项卡效果,有需要的朋友可以参考一下
    2013-08-08
  • 一个JS的日期格式化算法示例

    一个JS的日期格式化算法示例

    本文为大家介绍下一个JS的日期格式化算法,具体实现如下,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-07-07

最新评论