You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// main.js -> 执行它varrequirejs=require("requirejs");requirejs.config({//Pass the top-level main.js/index.js require//function to requirejs so that node modules//are loaded relative to the top-level JS file.nodeRequire: require,});// foo -> a 模块的返回值,同理,bar 是 b 模块的返回值,c 是 c 模块的返回值requirejs(["a","b","c"],function(foo,bar,c){//foo and bar are loaded according to requirejs//config, but if not found, then node's require//is used to load the module.console.log(foo);console.log(bar);console.log(c)});// a.js// 定义一个模块define('a',[],function(){return'a';});// b.jsdefine('b',['a'],function(a){returna+'b';});// c.js// require 已经不是 CommonJS 规范那个 require 了// 导入和使用require(["a"],(a)=>{console.log(a)})// 定义一个模块define('c',[],()=>{return'c'})// 输出结果 -> a ab c a
module
1. 模块化
模块化是指把一个复杂的系统分解到多个模块以方便编码。
1.1 命名空间
开发网页要通过命名空间的方式来组织代码
1.2 CommonJS
CommonJS 是一种使用广泛的
JavaScript
模块化规范,核心思想是通过require
方法来同步地加载依赖的其他模块,通过module.exports
导出需要暴露的接口。1.2.1 用法
采用 CommonJS 导入及导出时的代码如下:
1.2.2 原理
a.js
b.js
1.3 AMD
AMD(Asynchronous Module Definition) 也是一种 JavaScript 模块化规范,与 CommonJS 最大的不同在于它采用异步的方式去加载依赖的模块。 AMD 规范主要是为了解决针对浏览器环境的模块化问题,最具代表性的实现是 requirejs。
AMD 的优点:
AMD 的缺点:
1.3.1 用法
安装:
在浏览器端使用:
在服务端使用:
➹:RequireJS 异步模块加载 - 粉丝日志
➹:RequireJS in Node
1.3.2 原理
1.4 ES6 模块化
ES6 模块化是
ECMA
提出的JavaScript
模块化规范,它在语言的层面上实现了模块化。浏览器厂商和Node.js
都宣布要原生支持该规范。它将逐渐取代CommonJS
和AMD
规范,成为浏览器和服务器通用的模块解决方案。 采用 ES6 模块化导入及导出时的代码如下:ES6 模块虽然是终极模块化方案,但它的缺点在于目前无法直接运行在大部分 JavaScript 运行环境下,必须通过工具转换成标准的 ES5 后才能正常运行。
2. 自动化构建
构建就是做这件事情,把源代码转换成发布到线上的可执行 JavaScrip、CSS、HTML 代码,包括如下内容。
3. Webpack
Webpack 是一个打包模块化 JavaScript 的工具,在 Webpack 里一切文件皆模块,通过 Loader 转换文件,通过 Plugin 注入钩子,最后输出由多个模块组合成的文件。Webpack 专注于构建模块化项目。
一切文件:JavaScript、CSS、SCSS、图片、模板,在 Webpack 眼中都是一个个模块,这样的好处是能清晰的描述出各个模块之间的依赖关系,以方便 Webpack 对模块进行组合和打包。 经过 Webpack 的处理,最终会输出浏览器能使用的静态资源。
3.1 安装 Webpack
在用 Webpack 执行构建任务时需要通过「webpack 可执行文件」去启动构建任务,所以需要安装 「webpack 可执行文件」
3.1.1 安装 Webpack 到本项目
💡:
-D
的意思?npm i -D 是
npm install --save-dev
的简写,是指安装模块并保存到package.json
的devDependencies
"dependencies"
: Packages required by your application in production."devDependencies"
: Packages that are only needed for local development and testing.➹:Specifying dependencies and devDependencies in a package.json file - npm Docs
3.1.2 安装 Webpack 到全局
安装到全局后你可以在任何地方共用一个 Webpack 可执行文件,而不用各个项目重复安装
其实,官方 不推荐 全局安装 webpack。因为这会将你项目中的 webpack 锁定到指定版本,并且在使用不同的 webpack 版本的项目中, 可能会导致构建失败。
3.2 使用 Webpack
3.2.1 依赖其它模块
The text was updated successfully, but these errors were encountered: