博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在多个文件中import同一个文件,webpack会多次打包吗
阅读量:6819 次
发布时间:2019-06-26

本文共 1576 字,大约阅读时间需要 5 分钟。

最近自己在练习写React,Vue的时候,会在不同的子组件中多次import同一个文件,例如:import React from 'react'import Vue from 'vue',引入的次数多了慢慢让我产生了疑惑,引入这么多次,webpack会多次打包吗?直觉告诉我webpack并不傻,不会愚蠢的打包多次使打包后的文件异常臃肿,如果不会的话为什么不会呢?怀着好奇心在谷歌搜索很久也没有找到让我信服的的答案,于是我自己做了个,来证明自己的猜想:

1.模拟react/vue环境

第一步是安装相关webpack、babel等相关依赖以及建好目录 webpack设置:

//webpack.config.jsmodule.exports = {  entry: './app.js',  output: {    filename: 'bundle.js'  },  module: {    loaders:[      {        test: /\.js[x]?$/,        exclude: /node_modules/,        loader: 'babel-loader?presets[]=es2015&presets[]=react'      },    ]  }}复制代码

package.json所需依赖:

//package.json{  "name": "test",  "version": "0.0.1",  "devDependencies": {    "webpack": "^1.14.0"  },  "dependencies": {    "babel-core": "^6.21.0",    "babel-loader": "^6.2.10",    "babel-preset-es2015": "^6.18.0",    "babel-preset-react": "^6.16.0"  }}复制代码

其他用于测试的文件:

//demo.js--相当于vueexport default {  test(argu) {    console.log(argu)  }}//test1.js --相当于某个组件import demo from './demo'export default {  test1() {    demo.test(1)  }}//test2.js --相当于另一个组件import demo from './demo'export default {  test1() {    demo.test(2)  }}//add.js --入口文件import Test1 from './test1'import Test2 from './test2'Test1.test1()Test2.test2()复制代码

我在test1.js,test2.js中都引入demo.js,并且exoprt 出依赖demo.js的方法,然后再在app.js中引入test1.js,test2.js webpack打包后打开,找到demo部分。

我们发现在
bundle.js中引入的文件都被分成了带有序号(num)的“代码片”,通过
__webpack_require__(num)来引入对应的模块,而我们
import两次用来测试的
demo.js也只是被打包成了序号为
2的代码块,由此我们可以推论出:

不同文件中多次import同一个文件,webpack并不会多次打包,只会在打包后的文件中会多次引用打包后的该文件对应的函数。

问题终于搞清楚了,很舒服!!?

转载于:https://juejin.im/post/5a30fe686fb9a04506719ebb

你可能感兴趣的文章
显示磁盘信息
查看>>
基于spark和sparkstreaming的word2vec
查看>>
C++系统学习之五:表达式
查看>>
JPA多对一单向关联
查看>>
系统查看硬件相关信息命令
查看>>
sublime 3 text 中运行Java
查看>>
前序遍历
查看>>
loadrunner检查点设置失败,日志中SaveCount无法被正常统计出来
查看>>
循环结构进阶
查看>>
bzoj 2809: [Apio2012]dispatching
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
记录一款Unity VR视频播放器插件的开发
查看>>
webApi跨域问题
查看>>
读取文件
查看>>
json字符串转换对象的方法1
查看>>
浅谈网站路径分析 转自“蓝鲸网站分析博客”
查看>>
C# Note36: .NET unit testing framework
查看>>
我的博客第一天
查看>>
Aptana studio 3前端开发编辑器推荐
查看>>
RMAN restore fails with ORA-01180: can not create datafile 1 (文档 ID 1265151.1)
查看>>