【webpack学习笔记】a07-代码分离
官方文档说进行代码分离有三种方法:
- 入口起点:使用
entry配置手动分离。 - 防止重复:使用
CommonsChunkPlugin插件去重合分离chunk
注:在webpack4中,CommonsChunkPlugin已经被废弃,改用optimization.splitChunks - 动态分离
 
但是在个人理解:2是对1的缺陷补充,所以其实就只有两种分离方法:
- 入口起点手动静态分离
 - 动态分离
 
静态分离:
index.js
import _ from 'lodash';
function component (){
    var element = document.createElement('div');
    element.innerHTML = _.join(['hello','2019~'], ' ');
    return element;
}
document.body.appendChild(component());
another-module.js
import _ from 'lodash';
console.log(
    _.join(['Another','module','loadsh!'],' ')
)
webpack.config.js
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
    entry: {
        index: './src/index.js',
        another: './src/another-module.js'
    },
    devtool: 'inline-source-map',
    plugins:[
        new CleanWebpackPlugin(['dist']),
        new HtmlWebpackPlugin({
            title: 'Code Splitting',
            template: './src/index.html'
        })
    ],
    optimization:{
        splitChunks: {
            cacheGroups: {
                commons: {
                    name: "commons",
                    chunks: "initial",
                    minChunks: 2
                }
            }
        }
    },
    output: {
        filename: '[name].build.js',
        path: path.resolve(__dirname, 'dist')
    }
}
动态分离:
index.js
function getComponent(){
    return import(/* webpackChunkName:'lodash' */'lodash').then(_ => {
        var element = document.createElement('div');
        element.innerHTML = _.join(['Hello','2019~'], ' ');
        return element;
    }).catch(error => 'An error occurred while loading the component');
}
getComponent().then(component => {
    document.body.appendChild(component);
})
webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
    entry:{
        index: './src/index.js'
    },
    plugins:[
        new CleanWebpackPlugin(['dist']),
        new HtmlWebpackPlugin({
            title: 'Code splitting',
            template: './src/index.html'
        })
    ],
    output:{
        filename: '[name].bundle.js',
        chunkFilename: '[name].bundle.js',
        path:path.resolve(__dirname,'dist')
    }
}
												
											【webpack学习笔记】a07-代码分离的更多相关文章
- webpack学习笔记--压缩代码
		
浏览器从服务器访问网页时获取的 JavaScript.CSS 资源都是文本形式的,文件越大网页加载时间越长. 为了提升网页加速速度和减少网络传输流量,可以对这些资源进行压缩. 压缩的方法除了可以通过 ...
 - 更博不能忘——webpack学习笔记
		
webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...
 - Webpack学习笔记九 webpack优化总结
		
webpack 优化笔记 webpack4 自带的优化包括 swingTree(摇摆树)和作用域提升 swingTree 比如入口文件 index.js引入通用方法 util, 里面有 10个方法, ...
 - 【原】webpack学习笔记
		
之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ...
 - webpack学习笔记一
		
主要参考: https://blog.madewithlove.be/post/webpack-your-bags/ 起因: 作为运维狗, 对前端一窍不通但心向往之, 最近做一个Dashboard, ...
 - webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件
		
一 .webpack学习环境准备: 1:window系统 2:安装node.js 官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...
 - Webpack 学习笔记(1) 开始
		
目录 参考资料 1. 基础设定 2. 创建一个包 3. 使用配置文件完成打包命令 4. 使用 NPM Scripts 完成打包命令 参考资料 Getting Started | Webpack web ...
 - webpack学习笔记一(入门)
		
webpack集成了模块加载和打包等功能 ,这两年在前端领域越来越受欢迎.平时一般是用requirejs.seajs作为模块加载用,用grunt/gulp作为前端构建.webpack作为模块化加载兼容 ...
 - webpack学习笔记(二)-- 初学者常见问题及解决方法
		
这篇文章是webpack学习第二篇,主要罗列了本人在实际操作中遇到的一些问题及其解决方法,仅供参考,欢迎提出不同意见. 注:本文假设读者已有webpack方面相关知识,故文中涉及到的专有名词不做另外解 ...
 
随机推荐
- Python模块1
			
序列化模块: 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 序列化的目的 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. jso ...
 - linux启动httpd服务出现 Could not reliably determine the server`s fully qualified domain name.
			
安装好apache启动httpd服务时,出现httpd: Could not reliably determine the server's fully qualified domain name, ...
 - Java构造器与构建器的使用
			
我们在平常类的构建过程中,可能会面临很多问题,可扩张性.安全性等等.想象一下,这样一个场景,我们现在要创建一个类,其中有6个属性,其中又有4个属性的值是不太确定的(可能某个对象就不需要其中的某个值), ...
 - Bootstrap3基础 栅格系统 1行最多12列
			
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
 - oracle 结果集合并
			
SELECT case ' then ()) FROM T_UEP_DB_UNION A ' ' start with A.UNION_CODE = U.UNION_CODE CONNECT BY P ...
 - 让selenium中的Cromerderive不加载图片设置
			
把配置参数(chrom_opt)设置好后将其添加到 browser = webdriver.Chrome(executable_path="chromedriver.exe的路径" ...
 - Codeforces Round #544 (Div. 3)解题报告
			
A.Middle of the Contest 考虑把输入的时间单位化成分钟,相加除以2就好了 #include<bits/stdc++.h> using namespace std; # ...
 - 分治(超级easy 不要看)
			
P1226快速幂 #include<bits/stdc++.h> using namespace std; #define int long long ; int f(int b,int ...
 - BZOJ 4259 残缺的字符串
			
思路 同样是FFT进行字符串匹配 只不过两个都有通配符 匹配函数再乘一个\(A_i\)即可 代码 #include <cstdio> #include <algorithm> ...
 - webpack 4.X 基础编译
			
webpack4.x的打包已经不能用webpack 文件a 文件b的方式,而是直接运行webpack --mode development或者webpack --mode production,这样便 ...