《深入浅出webpack》有感.docx
《《深入浅出webpack》有感.docx》由会员分享,可在线阅读,更多相关《《深入浅出webpack》有感.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、对于前端仔来说,相信大家对webpack都再熟悉不过了,但是你对webpack的了解程度又有多深呢,笔者花了几天时间看了一下深入浅出webpack,虽然说书中大局部介绍的是配置和使用相关的,但是如果你对webpack的配置、使用、原理和构建流程 更加熟悉的话,对于你的开发可以说是百里无一害!本文不会局限 于介绍配置,也不会详细介绍打包原理(后面打算写一篇有关webpack打包原理的),更多着重于webpack打包的思想介绍。没有打包构建的日子nodejs的出现对于构建工具具有重要的意义,在没有nodejs之前,js只能执行 在浏览器环境下,所以意味着对发布前的js文件要进行处理,十分局限,没有
2、 打包工具,只能用PHP脚本来处理文件,甚至还需要借助一些在线压缩网站, 开发体验十分差劲,在史前时代存在以下几个痛点:1、缺乏文件处理工具,对文件进行编译或其他预处理,进行打包压缩等工作;2、缺乏文件的模块化,引入第三方库直接用cdn引入,需要处理依赖管理,人 为控制脚本的加载顺序,并且存在全局变量命名冲突的问题;3、缺乏代码校验和自动化测试,在代码被提交到仓库前需要校验代码是否符合 规范,以及单元测试是否通过。有了打包构建工具的日子随着nodejs的诞生,我们可以在开发环境下书写nodejs代码脚本,对我们的前 端代码做预处理,编译压缩等工作,最初诞生的是grunt和gulp, Grunt
3、和Gulp 都属于任务流工具Tast Runner,两者都是通过配置好配置文件,但是相比之下, gulp通过函数式编写配置文件,以及前端人员所熟悉的链式调用,让大家觉得更易懂更易上手,gulp本身借鉴了 grunt的经验进行升级和加入一些新特性。正因为流管理多任务配置输出方式的提高,人们逐渐选择使用Gulp而放弃grunto有了 grunt和gulp,文件压缩处理的工作解决了,代码校验和测试也可以处理 了,但是模块化仍没有结果?其实前端的痛点还远不止模块化那么简单,频繁的DOM节点处理,JS里杂糅了交互逻辑、请求逻辑、数据处理和校验逻辑、DOM操作逻辑,导致JQ书写的 代码就更意大利炒大便,呸
4、!意大利炒面一样。在团队开发中,可能你的代码要 给别人维护,这就非常痛苦了。webpack诞生记工、模块化思想隔离不同的js文件,模块化开发,仅暴露当前模块所需要的其他模块,这是模 块化思想想要传递给我们的。nodejs诞生后,后端所采取的模块化思想是 commonjs,然而,不同于后端,前端的代码运行在浏览器端,有两点不同之处:1、没有nodejs执行环境,不支持module.exports的书写格式;2、后端require一个文件,是读取本地文件的形式,速度极快,而对于前端而 言,需要去动态加载一个js文件,存在额外耗时。于是AMD思想应运而生,对此的相应实现是requireJS,允许你定
5、义好模块名称、模块依赖以及当前的模块代码(function),通过广度优先遍历的方式,递归加 载父模块所依赖的子模块,但是这也暴露出了一些问题:1、通过js加载执行后再去加载其依赖的子模块,这个递归加载过程本身是耗时 的;2、模块化思想提倡我们分隔逻辑,管理好各个js文件内的逻辑,一旦分割的JS 文件过多,最终造成前端资源加载压力。不过不用担忧,requires提供了 rjs来处理发布前的模块合成,帮助你把多个 JS文件打包成一个文件。再到后来,国内出现了 CMD的思想,不同于AMD的声明依赖的形式,允许你 动态加载依赖,但是其实现以及具体的运行结果被大家诟病。再到后后来,为了解决这种不同库的
6、模块实现不一致的问题,提出了 UMD,其 实很简单,只是写一段hack,让你的模块能够兼容不同的模块加载场景,无论 是commonjs还是AMD,如果都没有的话就直接声明为一个全局变量的形式。下面引用一段UMD的代码:(fuictioi (global, factory) tgpcof exports = object1 & typeof module != filled1 ? iodule.exports 二facto丫g。:typeof define = fix八ctio八& define。md ? deffactory):(global = global | self, global.V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入浅出webpack 深入浅出 webpack 有感
限制150内