为什么需要webpack

1、项目本身业务代码的js文件依赖与外部的js三方库时,加载顺序必须js第三方库在前,或者说某个js文件依赖于另一个js文件,那么加载顺序必须有先后,否则就会出错,这样久而久之代码难以维护;

2、那么如果我们把所有代码放入一个js文件中,就会解决问题1,那么文件会太大,网络加载也会出现瓶颈随着项目的增大加载会出现白屏的时间越长,并且也会导致作用域的问题(很多全局变量都会挂在到window上,会严重污染window对象,造成window的臃肿),可读性差,可阅读性很差,代码也不好维护;

3、那么如何解决作用域的问题:最早是使用任务执行器:grunt和gulp来管理我们的资源(安全拼接和组合我们的js文件),原理:利用js的立即调用函数表达式,表达式内的变量会被隔离,外部不能访问,这样就不会污染外部环境;

4、如何解决js文件过大的问题呢:如引入的第三方库我们只需要其中一个方法,确引入了整个库,网路需要加载整个库,这样是非常不友好的;nodejs 使js的模块诞生了,nodejs可以运行js,node中的commonjs,引入require的机制(允许在当前文件中引入我们需要的模块,开箱即用);

5、但是浏览器是不支持commonjs的,那么浏览器中如何加载模块呢:在早期使用了 browserify和require(解决命名冲突和文件依赖的问题)这样的打包工具来让浏览器支持模块,require提供了一种规范(AMD);随着js的发展,es6中import导入模块,export和export default暴露模块;

对于es6模块化浏览器支持还不是很完整, 是否有一种方式,不仅能让我们随意编写模块并且还可以支持任何的模块格式,webpack(基于node)解决了此问题,不仅可以支持commonjs、esmodule,还可以支持静态资源的打包等功能;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值