在日常的项目开发中,我们会用到各种第三方库来提高效率,但随之带来的问题就是打包后的vendor.js体积过大,导致加载时空白页时间过长,给用户的体验太差.为此我们需要减少vendor.js的体积,从本质上来解决这种问题. webpack的外部扩展(externals)可以有效的解决.externals 配置选项提供了「从输出的 bundle 中排除依赖」的方法.相反,所创建的 bundle 依赖于那些存在于用户环境(consumer's environment)中的依赖.防止将某些 import…
文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Webpack编译输出文件的配置过程中,如果需要为文件加入hash指纹,Webpack提供了两个配置项可供使用:hash和chunkhash.那么两者有何区别呢?其各自典型的应用场景又是什么?本文结合笔者工作中遇到的问题,简单记录一下以上问题的解决方案. 1. hash与chunkhash 首先我们先看一…
webpack中可以写commonjs格式的require同步语法,可以写AMD格式的require回调语法,还有一个require.ensure,以及webpack自己定义的require.include,再加上ES6的import语法,这么多岂不是会把人给搞乱.本篇就来梳理一下这些require各自的特点,以及都在什么场景下使用. commonjs同步语法 经典的commonjs同步语法如下: var a = require('./a'); a.show(); 此时webpack会将a.js…
Webpack有几个和模块化相关的loader,imports-loader,exports-loader,expose-loader,比较容易混淆.今天,我们来理一理. imports-loaders 文档介绍的是:用于向一个模块的作用域内注入变量(Can be used to inject variables into the scope of a module.),官方的文档总是言简意赅但是不太好懂.我们来举个例子.例子完整的代码可以点这里jqGreen.js文件里仅一行代码 //没有模块…
在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原始方式显示出来,以方便查找问题. 具体优势可自行百度或参看官方介绍:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification 这里仅简单记录下如何使用. 首先,如果是使用的ASP.NET MVC4基本或者其他内容更丰富的模板,B…
转自:http://www.cnblogs.com/xwgli/p/3296809.html 在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原始方式显示出来,以方便查找问题. 具体优势可自行百度或参看官方介绍:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification 这里仅简…
commonjs同步语法 经典的commonjs同步语法如下: var a = require('./a'); a.show(); 此时webpack会将a.js打包进引用它的文件中.这是最普遍的情形,不必赘述. commonjs异步加载 在commonjs中有一个Modules/Async/A规范,里面定义了require.ensure语法.webpack实现了它,作用是可以在打包的时候进行代码分片,并异步加载分片后的代码.用法如下: require.ensure([], function(r…
如果我们希望在页面引入图片(包括img的src和background的url).当我们基于webpack进行开发时,引入图片会遇到一些问题. 其中一个就是引用路径的问题.拿background样式用url引入背景图来说,我们都知道,webpack最终会将各个模块打包成一个文件,因此我们样式中的url路径是相对入口html页面的,而不是相对于原始css文件所在的路径的.这就会导致图片引入失败.这个问题是用file-loader解决的,file-loader可以解析项目中的url引入(不仅限于css…
html-webpack-plugin clean-webpack-plugin 一.html-webpack-plugin 由于打包时生成的css样式文件和js脚本文件会采用hash值作为文件命名的一部分,每一次调试打包结果都需要手动修改名称,这种做法就违背了webpack的自动化打包的初衷,而且还有需求就是要对html文件进行优化压缩,也不能直接在源文件上进行操作,还有清除注释等一系列操作. npm install html-webpack-plugin --save-dev 更详细的教程文…
首先进行全局安装webpack npm install -g webpack cmd跳转到项目的文件夹,安装webpack npm install --save-dev webpack 接着需要packjson.sj文件,全部enter掉就好了,默认值就行了 npm init 接着在项目文件夹接着安装,css-loader 和 style-loader处理样式表 npm install --save-dev style-loader css-loader 在项目文件夹新建webpack.conf…
该总结参考博文地址:http://www.cnblogs.com/xwgli/p/3296809.html 1.首先了解Bundle的作用:Bundles用于打包CSS和javascript脚本文件,优化对它们的组织管理. 2.如何使用呢 添加BundleConfig.cs的文件: 在cs里面添加绑定代码:有CssBundle和ScriptBundle分别绑定css和js文件 在App_Start文件里设置为启动文件, 同时,在WebConfig里面也要配置命名空间<add namespace=…
在webpack中有三种的方式生成哈希值,分别为hash.chunkhash和contenthash.这三种方式有着不同的用处,或者说在webpack的不同环境中,会使用不同的方式生成哈希值.那为什么要这样的一个区分呢?我们一起探讨下: hash 主要用于webpack的开发环境,在项目构建编译中根据文件是否更改,生成一个统一的hash值.就是说只要构建编译过程中只要一个文件修改了,则整个项目的hash值都会统一改变(整个项目的hash值是一样的).这样一来在每次的开发中,文件都不会让浏览器器缓…
为什么要使用url-loader 在前面已经介绍了css文件可以使用第三方loader去加载. 在一个项目中,也不仅仅只有html,js和css文件,还有图片文件,字体文件等等.当我们给一个css样式设置背景图片时: 你会发现,webpack打包的时候会报错. 报错:无法处理这种格式的文件,解决这个问题就需要url-loader或者file-loader. 安装url-loader 安装url-loader,cnpm install url-loader file-loader –D 在webp…
router官网的说明如下: ********************************************我是官网说明分隔符--开始*************************************************************** 类型: string 默认值: "hash" (浏览器环境) | "abstract" (Node.js 环境) 可选值: "hash" | "history"…
webpack是前端构建工具,称为模块打包机,webpack支持模块化:构建前端开发过程中常用的文件,如:js,css,html,img等:使用简单方便,自动化构建.webpack是通过loader(加载器)和plugins(插件)对资源进行处理的. Glup侧重于前端开发的整个过程的控制管理,我们可以通过给glup配置不同的task来让glup实现不同的功能,从而构建整个前端开发流程.(通过gulp中的gulp.task()方法配置,比如server.sass/less预编译.文件的合并压缩等…
一.安装 npm install --save-dev babel-loader babel-core babel-preset-env 二.在webpack.config.js中配置module 1 2 3 4 5 6 7 8 9 module: {   rules: [     {       test: /\.js$/,       exclude: /(node_modules|bower_components)/,       loader: 'babel-loader'     }…
Babel是一个javascript编译器,可以将ES6和更新的js语法转换成ES5的,使代码在较老的浏览器里也能正常运行. 一.安装 npm install --save-dev babel-loader babel-core babel-preset-env 二.在webpack.config.js中配置module module: { rules: [ { test: /\.js$/, exclude: /(node_modules|bower_components)/, loader:…
项目发布时,为了解决缓存,需要进行md5签名,这时候就需要用到 hash 和 chunkhash等. 问题一:hash问题 使用 hash 对js和css进行签名时,每一次hash值都不一样,导致无法利用缓存 原因是因为, hash 字段是根据每次编译compilation的内容计算所得,也可以理解为项目总体文件的hash值,而不是针对每个具体文件的.(所以每一次编译都会有一个新的hash,并不适用) 解决:不用hash,而用 chunkhash (js和css要使用chunkhash), ch…
hash.chunkhash.contenthash hash一般是结合CDN缓存来使用,通过webpack构建之后,生成对应文件名自动带上对应的MD5值.如果文件内容改变的话,那么对应文件哈希值也会改变,对应的HTML引用的URL地址也会改变,触发CDN服务器从源服务器上拉取对应数据,进而更新本地缓存.但是在实际使用的时候,这几种hash计算还是有一定区别.我们先建一个测试案例来模拟下: 项目结构 我们的项目结构很简单,入口文件index.js,引用了index.css.然后新建了jquery…
webpack中对于输出文件名可以有三种hash值: 1. hash 2. chunkhash 3. contenthash 这三者有什么区别呢? hash 如果都使用hash的话,因为这是工程级别的,即每次修改任何一个文件,所有文件名的hash至都将改变.所以一旦修改了任何一个文件,整个项目的文件缓存都将失效.如: 可以从上图清晰的看见每个压缩后的文件的hash值是一样的,所以对于没有改变的模块而言,这样做显然不恰当,因为缓存失效了嘛.此时,chunkhash的用途随之而来. chunkhas…
table th:first-of-type { width: 90px; } hash 类型 区别 hash 每一次打包都会生成一个唯一的 hash chunkhash 根据每个 chunk 的内容来生成:chunk打包时,output.filename.output.chunkFilename 推荐使用 chunkhash. contenthash 根据提取文件的内容生成的 hash:在使用 ExtractTextWebpackPlugin(webpack 3.x)或MiniCssExtra…
移动手机版要求我们在制作嵌入h5的时候去适配不同的手机.适配有多重模式,有flex.百分比等.字体大小的控制也有px.百分比.rem等单位,webpack中 px转rem. vue项目中postcss-pxtorem的使用及webpack中的配置 css中单位px和em,rem的区别 1 安装依赖包   npm install postcss-pxtorem --save-dev 2 创建 .postcss.js文件,做webpack相关配置 配置项 autoprefixer: 添加浏览器前缀…
一:在普通网页中使用 vue 使用 script 标签,引入 vue 包 在 ndex 页面中,创建一个 id 为 App 的 div 容器 通过 new Vue 得到一个 vue 实例 二:在 webpack 中使用 vue 执行命令 : npm i vue -S 把 vue 包安装成项目运行依赖 main.js: //入口文件 //如何在 webpack 构架的项目中,使用 Vue 进行开发 // 执行命令 npm i vue -s ,把 vue 包安装成项目运行依赖 //在 webpack…
1.require常见使用场景: var path = require('path') var utils = require('./utils') 此时webpack会将path/utils/config三个文件打包进引用它的文件中 2.import常见于ES6语法中,也是一种模块引入语法,import会被转化为commonjs格式或者是AMD格式,webpack下babel默认会把ES6的模块转化为commonjs规范的 所以如下写法是等价的: import utils from './ut…
回顾包的查找规则: 1.找项目根目录中有没有node_modules的文件夹 2.在node_modules中根据包名,找对应的vue文件夹 3.在vue文件夹中,找一个叫做package.json的包配置文件 4.在package.json文件中,查找一个main 属性[main属性指定了这个包在被加载时候的入口文件] 引入vue.js不全的话会提示如下信息 vue.runtime.esm.js:620 [Vue warn]: You are using the runtime-only bu…
在vue.js 框架搭建好后,其vue-cli 自动构建的目录里面相关环境变量及其基本变量配置,如下代码所示: module.exports = { build: { index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '/', productionS…
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换) List按对象进入的顺序保存对象,不做排序或编辑操作.Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List).Map同样对每个元素保存一份,但这是基于"键"的,Ma…
Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: class object The most base type 从介绍上看这也是Python对类型统一做出的努力.所以这里的object与Java的Object类有着异曲同工之妙,而且可以推测这个object很可能就是一个定义了一个类型的"空类" 再来看type的说明: class type(ob…
vue.react对于开发单页应用来说带来了很好的用户的体验,但是同样有缺点,比如首页加载慢,白屏或SEO等问题的产生.为什么会出现这种情况呢?我们之前开发单页应用是这样开发的,比如首页 index.html页面或许是这样的: <!DOCTYPE html> <html> <head> <title>webpack+vue项目架构</title> <meta charset="utf-8"> <meta na…
打包图片时,你可曾遇到在产出目录文件夹找不到图片,即便找到了,但是页面说引用不到资源?页面上或者文件中引用的图片地址不对? 一.在webpack中引入图片需要url-loader //webpack配置 { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: path.posix.join('static', 'img/[name].[hash:7].[ext]')…