webpack有啥用

本文详细解释了Webpack如何作为连接前端与后端的桥梁,解决了JS代码在不同环境下的兼容性问题,通过将多个JS文件打包成一个bundle.js,避免了全局变量的暴露,使代码在浏览器环境中也能顺利运行。

1,什么是webpack,它的作用:

浏览器自使用到现在经历了好几代标准,为了使得新的标准能够兼容旧的标准,webpack帮助开发者填坑。

2,解决的具体问题:

js和其他的语言不同,js想要使用另一个文件中的变量,只能将文件中的变量暴露为全局变量。(当然了,如果B文件想要调用A文件变量,a.js只要在b.js之前引入即可,就像使用jqeury.js一定要放在最前面引入。)

a.js文件:

(function(){ 

window.hi="hello";

})();

b.js文件:

console.log(hi);        //hello

以前js只能在浏览器中运行,因为浏览器中有运行js的环境V8引擎,我们电脑的操作系统上没有V8引擎无法运行,但是现在出了一个node环境,安装在我们电脑上即可运行js。但是node比浏览器好的地方 就i是,浏览器想要共享变量,只能暴露为全局变量,而node不一样,在node眼里,所有的文件都是模块,每个模块有一个入水口一个出水口,这个出水口就是将自己模块中的变量暴露出去的接口,入水口显然就是获取其他模块变量的接口。所以在node中可以使用:

出水口:a.js

function d(){

var  msg="hello";

modules.exports={msg1:msg};  对象的形式暴露出去;

}

入水口:b.js

var msg2=require("../a").msg1;     

在浏览器中正常的,B问价要调用A文件的变量,需要把A文件引入在B文件之前,但是由于NODE使用了require,可以直接寻找文件,就不需要加载A文件了。

以上都是在讲,node环境比浏览器好的地方,可是这和webpack有啥关系?别急

js代码这样写在node中是可以解析,但是在浏览器中不可以。webpack的作用就是将在node中写好的代码(后端)解析为在浏览器下(前端)可以运行的代码;

所以打包的意思就是,不用再像浏览器那样,先引入a.js再引入b.js,完事儿a.js还要暴露为全局变量。而是直接将两个js打包成为一个bundle.js,然后在网页中直接引入bundle.js就行了。

3,关于webpack的安装问题可以参考另一篇博文:https://mp.youkuaiyun.com/postedit/81022261

### `CommonsChunkPlugin` 中 `async` 参数的含义与使用方式 在 Webpack 构建过程中,`CommonsChunkPlugin` 是一个用于提取多个入口点之间共享代码的插件。该插件允许开发者将公共模块打包到一个单独的 chunk 中,以优化加载性能和减少重复代码。 其中,`async` 是 `CommonsChunkPlugin` 的一个可选参数,用于指定是否将提取出的公共模块异步加载。当设置 `async: true` 时,Webpack 将生成一个异步加载的 chunk,并且不会立即包含在主 bundle 中。这种方式适用于按需加载的场景,例如路由懒加载或组件级代码拆分[^1]。 若 `async` 被省略或设为 `false`,则公共模块会被同步加载,并作为初始 chunk 的一部分输出。这通常用于构建基础库(如第三方依赖)并确保其在页面加载时即可用。 以下是一个使用 `CommonsChunkPlugin` 并启用 `async` 模式的示例配置: ```javascript const webpack = require('webpack'); module.exports = { entry: { main1: './src/main1.js', main2: './src/main2.js' }, output: { filename: '[name].bundle.js', path: __dirname + '/dist' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name: 'common', chunks: ['main1', 'main2'], async: true }) ] }; ``` 在上述配置中,`common` chunk 将被异步加载,并仅在需要时通过动态导入(如 `import()`)触发加载。该模式有助于提升首屏加载速度,因为它减少了初始加载的 JavaScript 体积。 需要注意的是,`CommonsChunkPlugin` 在 Webpack 4 中已被弃用,并由 `optimization.splitChunks` 替代。新版本推荐使用更灵活、更智能的代码分割机制,而非手动配置 chunk 插件[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值