「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战」
为什么需要打包:
模块化,让我们可以把复杂的程序细化为小的文件;还有就是浏览器不能识别一些扩展程序,类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能直接使用的特性,并且之后还能能装换为JavaScript文件使浏览器可以识别;例如scss,less等CSS预处理器
工具:
npm:
npm 是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系
webpack:
是一个前端资源加载/打包工具。前端所有资源文件(js/json/css/img…)都会作为模块处理,它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源
webpack是npm生态中的一个模块,我们可以通过全局安装webpack来使用webpack对项目进行打包
vue项目可以直接通过vue-cli 和webpack进行打包操作,通过npm安装命令后执行npm run build对项目进行打包
AMD
- 是异步模块规范
- 通过define函数定义模块,通过require函数引入一个模块
- 在AMD内部会创建script标签,加载模块代码
- 目前绝大多数三方库都支持AMD
commonJS
- 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存
- 同步加载模块,启动就开始加载模块,运行时只会使用模块,文件与模块一一对应
- 通过module.exports 导出成员,require载入模块,exports 是 module.export 的别名
ESModules
- 每一个module都运行在私有作用域中,避免全局污染问题
- 不需声明 'use strict'
- 通过CORS方式请求外部JS模块