Webpack ECMAScript 模块

简介: Webpack ECMAScript 模块

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:webpack

🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹

💖感谢大家支持!您的观看就是作者创作的动力

标题一


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。


后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力


目录
相关文章
|
4天前
|
前端开发 JavaScript 开发者
深入了解Webpack:前端模块打包工具
深入了解Webpack:前端模块打包工具
8 1
|
5月前
|
前端开发 JavaScript 开发者
webpack模块打包器
Webpack是一种前端资源构建工具,可以将多个文件和模块打包成一个或多个bundle。它具有高度的可配置性,支持各种类型的文件和插件,可以自定义打包过程和结果。Webpack的核心概念包括入口、出口和模式,可以分别用于指示打包的起点、输出位置和优化级别。Webpack还具有自动化构建过程,通过Tapable机制组织多个处理流程,并允许插件监听特定事件来参与整个构建过程。总之,Webpack是一个功能强大的前端资源构建工具,提供了高度可配置的选项和插件机制,方便开发者进行自定义和扩展。
|
6月前
|
移动开发 JSON 自然语言处理
Vue系列教程(16)- 模块打包器(webpack)
Vue系列教程(16)- 模块打包器(webpack)
48 0
|
12月前
|
前端开发 JavaScript 调度
Webpack5模块联邦源码探究
虽然webpack5已经发布了一段时间了,但一直都没有研究过,最近正好在做微前端相关的调研,恰好看到了webpack5的模块联邦与微前端的相关方案,便想着探究下模块联邦的相关源码。
243 0
|
前端开发 JavaScript
webpack 核心模块 —— loader & plugins(下)
webpack 核心模块 —— loader & plugins
99 0
|
JSON 前端开发 JavaScript
webpack 核心模块 —— loader & plugins(上)
webpack 核心模块 —— loader & plugins
89 0
|
算法
webpack原理篇(五十六):webpack流程:模块构建和chunk生成阶段
webpack原理篇(五十六):webpack流程:模块构建和chunk生成阶段
121 0
webpack原理篇(五十六):webpack流程:模块构建和chunk生成阶段
|
前端开发 JavaScript CDN
webpack优化篇(四十五):进一步分包:预编译资源模块
webpack优化篇(四十五):进一步分包:预编译资源模块
154 0
webpack优化篇(四十五):进一步分包:预编译资源模块
|
XML 缓存 JSON
webpack(一)——资源模块,loader,代码分离,缓存
安装webpack 安装webpack需要两个主包,在Vscode上新建一个文件夹,在终端打开, 输入node -v检测是否安装了nodejs 输入npm -v 输入npm install webpack webpack-cli --global安装webpack,会产生一个文件package.json 输入命令webpack -v是否安装成功
110 0
webpack(一)——资源模块,loader,代码分离,缓存
|
资源调度 JavaScript 前端开发
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块
「使用 webpack 5 从0到1搭建React + TypeScript 项目环境」3. 资源模块