多次引用相同文件的打包问题
//demo.js--相当于vue
export 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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
在 test1.js, test2.js中都引入demo.js,并且exoprt 出依赖demo.js的方法,然后再在app.js中引入 test1.js, test2.js webpack打包后打开bundle.js,找到demo部分
我们发现在bundle.js中引入的文件都被分成了带有序号(num)的“代码片”,通过__webpack_require__(num)来引入对应的模块,而我们import两次用来测试的demo.js也只是被打包成了序号为2的代码块,由此我们可以推论出:
不同文件中多次import同一个文件,webpack并不会多次打包,只会在打包后的文件中会多次引用打包后的该文件对应的函数
编辑 (opens new window)
上次更新: 2023/07/09