升级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回答

Rosen

2018-09-20

代码打包发我吧

0
2
李行知
非常感谢!
2018-09-20
共2条回复

李行知

提问者

2018-09-20

最终结果为。common/index.js里面的代码也被打包进去了,但是没有执行js代码,但是如果是require的,就会执行,require有效
0
0

真实数据对接 从0开发前后端分离的企业级上线项目

【毕设项目精品】前端实战,对接真实服务端数据,开发完整项目

4268 学习 · 4120 问题

查看课程