webpack模块打包

模块打包的概念

什么是模块?模块可以理解为一段能够实现一个特定目的的代码段,大家为了方便代码管理,进行独立设计、开发和测试,最终通过接口将模块们组合在一起,构建出我们的应用,这无疑是更科学的管理方式。
在一开始js仅仅是通过script标签来引入文件,这意味着
1、需要手动维护js加载顺序
2、同时一个js文件意味着一次请求,在没有实现多路复用之前,由于浏览器的限制,会严重拖慢网页的渲染速度
3、引入文件会造成全局的作用域污染
而模块化管理就是为了解决这些问题,导入导出清晰的描述了模块之间的依赖关系,借助打包工具将资源打包成一个js文件大大减少了请求的次数,并且模块之前是隔离的,安全的。

模块规范

常见的模块规范有: CommonJS、es6 Module、AMD、UMD
其中es6 Module是专门为js模块标准化定义的,但是由于大多数的模块还是之前的CommonJs形式,并且暂不支持webpack的code spliting 和 tree sharking。
模块打包工具有两种,一种是根据模块的依赖生成单个的js文件,一次加载进页面,第二种是设置一个入口文件,其他模块进行异步加载。
选择webpack的原因:支持多种模块标准,具有完备的代码分割技术,通过loader可以处理各种类型的资源,有用强大的社区支持

混用原理:https://segmentfault.com/a/1190000012386576
先了解一下模块打包的标准

CommonJs

CommonJs是一个模块打包的标准,而node是作为一个实现采用了这个标准的一部分,并在标准的基础上做了一些调整,我们现在说的CommonJs其实一般代指Node中的版本,而非他的原始定义。那么COmmonJS是一种模块规范,将js文件看做一个个的模块,通过module.exports和 require将文件模块连接起来,那么node就是这种规范的实现,node可以实现服务端,图形化界面,命令行工具
node本身主要由两个模块:二进制的核心模块和文件模块,优先查找核心模块,之后按照路径查找,如果没有路径,则会尝试从引用的目录层层向上查找node_modules文件,根据该目录下的package.json或index.js或index.node文件来标识依赖包的路径,没有则向上查,直到根目录。


下一节CommonJs ES Module AMD UWD :https://www.jianshu.com/p/af7b1b7ff0be

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容