升级4.x遇到的一个问题
来源:3-4 npm和webpack的初始化

李行知
2018-09-20
老师的代码
common/index.js
require('./layout.css');
require('node_modules/font-awesome/css/font-awesome.min.css');
require('./footer/index.css');
index/index.js
require('./index.css');
require('page/common/nav/index.js');
require('page/common/header/index.js');
require('util/slider/index.js');
var navSide = require('page/common/nav-side/index.js');
var templateBanner = require('./banner.string');
var _mm = require('util/mm.js');
webpack.config.js
var getHtmlConfig = function(name, title){
return {
template : './src/view/' + name + '.html',
filename : 'view/' + name + '.html',
favicon : './favicon.ico',
title : title,
inject : true,
hash : true,
chunks : ['common', name]
};
};
---------------
entry: {
'common' : './src/page/common/index.js',
-------------
optimization:{
runtimeChunk: false,
splitChunks: {
cacheGroups: {
common: {
name: "common",
chunks: "all",
minChunks: 2
}
}
}
},
我的
common/index.js
require("./layout.css");
require("font_awesome/css/font-awesome.min.css");
require("./nav/nav.js");
require("./footer/footer.css");
require("./header/header.js");
var navSide = require("./nav-side/nav-side.js");
navSide.init({
name: "user-center"
});
index/index.js
index/index.js
require("./index.css");
var mm = require("util/mm.js");
var tepalateBanner = require("./banner.string");
// var tepalateBanner = require("./banner2.string");
require("util/slider/index.js");
而如果我也是老师这个样子的webpack.config.js得话,那么打包之后很多的内容就没调用了
因为我所有的公共的引用都在common.js里面引用了再直接在webpack.config.js里面进行了注入
所以需要使用
webpack.config.js
const getHtmlConfig = function (name, title) {
return {
template: './src/view/' + name + '.html',
// filename: 'view/'+name + '.html',
filename: name + '.html',
title: title,
favicon: "./favicon.jpg",
inject: true,
hash: true,
chunks: ['vendor','common', name]
}
----------------
optimization: {
runtimeChunk: false,
splitChunks: {
cacheGroups: {
common: {
name: "vendor",
chunks: "all",
minChunks: 2
}
}
}
},
然后如果我再common/index.js里面有js代码
require('./layout.css');
require('node_modules/font-awesome/css/font-awesome.min.css');
require('./footer/index.css');
console.log('common');
这个是老师的代码,这样这个console就不会执行,这个是为什么呢?
按照这种情况我给出的一个解释了是,splitChunks是抽离代码,然后如果一段代码重复了两次,那么就会被抽出去放到common.js里面去,这样就把原来的common.js给覆盖了,导致了common.js里面的内容没有执行,但是这个样子为什么css又可以加载呢?为什么原来的common.js里面的代码又不执行了呢?
感觉有点疑惑
写回答
2回答
-
代码打包发我吧
022018-09-20 -
李行知
提问者
2018-09-20
最终结果为。common/index.js里面的代码也被打包进去了,但是没有执行js代码,但是如果是require的,就会执行,require有效00
相似问题