前两天为了优化公司的代码打包项目,恶补了很多 webpack4 的知识.要是放在几年前让我学习 webpack 我肯定是拒绝的,之前看过 webpack 的旧文档,比我们内部项目的文档还要简陋. 但是最近看了一下 webpack4 的文档,发现 webpack官网的 指南 写的还不错,跟着这份指南学会 webpack4 基础配置完全不是问题,想系统学习 webpack 的朋友可以看一下. 今天我主要分享的是一些 webpack 中的易混淆知识点,也是面试的常见内容.我把这些分散在文档和教程里的内…
hidden modules是什么: chunk,module,bundle的区别 总结: module是指任意的文件模块,等价于commonjs中的模块 chunks是webpack处理过程中被分组了的modules,如代码分割时一个异步加载的chunk可能包含多个module Bunldes是指打包出来的…
webpack 将 chunk 划分为三类: 入口 chunk.入口 chunk 包含 webpack runtime 和将要加载的模块. 普通 chunk.普通 chunk 不包含 webpack runtime,这些 chunk 可以在应用运行时动态加载. 初始 chunk.初始 chunk 也是一个普通 chunk,用来计算应用的加载时间.作为普通用户,需要考虑的是前两个.…
在新建的webpack.config.js文件中配置好style-loader和css-loader,注意顺序为:style-loader,css-loader,less-loader,postcss-loader.下面为工程目录: 配置好的webpack.config.js文件: 如果以上步骤都没问题了.还是出现该错误,应该考虑缓存的问题,解决办法: 1.使用配置好的npm start在控制台重新打包: 2.然后重新启动服务(命令:npm run server): 关于这两个命令需要配置,具体…
webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.js,但是这样看着不是很直观,所以要自己配置单独打包的chunk名字,好吧开始踩坑 最初的代码: window.onclick=function(){ require.ensure([],function(){ var $=require('jquery') console.log($("body&q…
webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.js,但是这样看着不是很直观,所以要自己配置单独打包的chunk名字,好吧开始踩坑 最初的代码: 1 2 3 4 5 6 7 window.onclick=function(){ require.ensure([],function(){ var $=require('jquery') console…
文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Webpack编译输出文件的配置过程中,如果需要为文件加入hash指纹,Webpack提供了两个配置项可供使用:hash和chunkhash.那么两者有何区别呢?其各自典型的应用场景又是什么?本文结合笔者工作中遇到的问题,简单记录一下以上问题的解决方案. 1. hash与chunkhash 首先我们先看一…
之前介绍过webpack3的新特性,里面提到webpack2支持了ES6的import和export,不需要将ES6的模块先转成CommonJS模块,然后再进行打包处理.正基于此,webpack2引入了tree-shaking技术,能够在模块的层面上做到打包后的代码只包含被引用并被执行的模块,而不被引用或不被执行的模块被删除掉,以起到减包的效果. webpack的tree-shaking案例 下面结合实际代码来解释webpack2是如何实现tree-shaking的,示例代码可到github进行…
vue.react对于开发单页应用来说带来了很好的用户的体验,但是同样有缺点,比如首页加载慢,白屏或SEO等问题的产生.为什么会出现这种情况呢?我们之前开发单页应用是这样开发的,比如首页 index.html页面或许是这样的: <!DOCTYPE html> <html> <head> <title>webpack+vue项目架构</title> <meta charset="utf-8"> <meta na…
1.安装 vue包:npm i vue -S 2.由于在webpack中,推荐使用.vue这个组件模版文件来定义组件,不然会出现vue.js移动和一些高级语法的不支持,因此需要安装能解析这种文件的loader:npm i vue-loader vue-template-complier -D 3.在main.js中,导入vue模块:import Vue from 'vue' 4.定义一个.vue结尾的组件,其中组件有三部分组成:template script style 5.使用 import…