【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方面相关知识,故文中涉及到的专有名词不做另外解 ...
随机推荐
- JS引擎的执行机制:探究EventLoop(含Macro Task和Micro Task)
在我看来理解好JS引擎的执行机制对于理解JS引擎至关重要,今天将要好好梳理下JS引擎的执行机制. 首先解释下题目中的名词:(阅读本文后你会对这些概念掌握了解) Event Loop:事件循环Micro ...
- Magento 2.2.5和2.2.6的bug 产品设置special price又删除后价格排序有误
Magento 2.2.5和2.2.6的bug 产品设置special price又删除后价格排序有误 一.问题描述:版本2.2.5和2.2.6均有此问题,为Magento2的系统bug.为产品设置s ...
- javascript的对象内容对比
vue是这样对比的 function looseEqual (a, b) { if (a === b) return true const isObjectA = isObject(a) const ...
- line-height的定义
line-height 定义: 即行高,两行文字基线之间的距离 三问: 什么是基线? 形象可理解为字母x的下边缘 为什么是基线? 在css中基线乃各种线的基础 需要两行吗? 实例: <!doct ...
- (转) NAS(神经结构搜索)综述
NAS(神经结构搜索)综述 文章转载自:http://www.tensorinfinity.com/paper_136.html 本文是对神经结构搜索(NAS)的简单综述,在写作的过程中参考了文献[1 ...
- 6.4 SpringData JPA的使用
引言:该文档是参考尚硅谷的关于springboot教学视屏后整理而来.当然后面还加入了一些自己从网上收集整理而来的案例! 一.SpringData JPA初步使用 1. springdata简介 2. ...
- Visual Studio color schemes
Vs环境主题配置 下载地址:https://studiostyl.es/ Son of Obsidian 下载:son-of-obsidian_vs2015.zip Litle monokai vst ...
- C#防盗链处理类的代码
如下的内容是关于C#防盗链处理类的内容. public class FileHandler:IHttpHandler{public FileHandler(){} public void Proces ...
- 使用npm私有服务器保存公司内部强业务类型组件(三):关于业务性组件的一点思考
编写业务性组件最难的地方不在于技术,而在于沟通, 1:前端将业务给封装了起来,必然导致产品在设计的时候多了一层考虑,在新增功能的时候 他要考虑这个功能是不是在其他项目也需要,如果不是的话,就不应该放在 ...
- python实现单线程多任务非阻塞TCP服务端
代码 # coding:utf- from socket import * # .创建服务器socket sock = socket(AF_INET, SOCK_STREAM) # .绑定主机和端口 ...