Array-Huang / webpack-seed

这是一个基于webpack的多页应用脚手架
https://segmentfault.com/a/1190000006843916
MIT License
1.19k stars 283 forks source link

dll引用问题 #25

Closed wang-ran closed 7 years ago

wang-ran commented 7 years ago

使用的你的最新代码测试使用dll打包时遇到问题,请求支援 我对源文件做了如下修改:

  1. 将build-file.config.js的注释去掉
  2. 将plugins.config.js中关于dll的注释去掉
  3. 将footer/html.ejs中引用jquery的语句去掉
  4. 在header/html.ejs中加入dll文件的引用
  5. 运行npm run dll ,npm run build,npm run start 浏览器控制台报错时浏览器抛出错误Uncaught TypeError: $ is not a function,找不到jeuery,从浏览器控制台中可以看到,在html加载后dll文件开始加载。 qq20170327-0 2x
Array-Huang commented 7 years ago

之前升级webpack2的时候,搞不清楚在webpack2里expose-loader是怎么用的,所以就把jquery提出来直接用<script>来加载,再辅以externals了。 所以如果你把jquery打包进dll文件里,必须把externals给关掉,然后把expose-loader开起来

wang-ran commented 7 years ago

我试了你的方法,dll文件报错,“Uncaught ReferenceError: jQuery is not defined”

![Uploading 微信截图_20170327152149.png…]() ,去掉externals.config.js文件中对jquery的配置 ![Uploading 429.png…]() ,在common.page.js中引用jquery

我猜测是dll中包含jquery和bootstrap.min.js文件,bootstrap.min.js依赖jqerry所以报错

Array-Huang commented 7 years ago

除了开expose-loader,我还建议把provide-plugin开起来

Array-Huang commented 7 years ago

就像我文章里写的一样

wang-ran commented 7 years ago

不折腾了,这些都开开估计jquery又打包进bundle中了

Array-Huang commented 7 years ago

不会的,只要你在dll文件里打包了jquery,无论怎么折腾都不会进主bundle里。不过我倒是觉得放<script>里直接加载也挺不错的