详解webpack3编译兼容IE8的正确姿势
上一篇中的方法在 webpack 更新后,uglify 缓存地址也发生了变化,需要重新找地址。
后来测试发现不论是 uglify-js2 uglify-js3 都是支持 IE8 兼容处理的。
但在 webpack.optimize.UglifyJsPlugin 中加配置参数却无效。(webpack 的锅)
总不能每次都手动去找 webpack 缓存路径进行劫持吧,那要疯了。
UglifyjsWebpackPlugin
关键点依然在于UglifyjsWebpackPlugin插件,但并不是内置的 webpack.optimize.UglifyJsPlugin
插件。
$ npm i -D uglifyjs-webpack-plugin
单独安装这个插件后使用即可。
const UglifyJsPlugin = require('uglifyjs-webpack-plugin') module.exports = { entry: './app.js', output: { filename: 'bundle.js', }, plugins: [ new UglifyJsPlugin({ uglifyOptions: { ie8: true, }, }), ], };
是不是觉得返璞归真了。
ps: webpack 2 3 版本都支持。
小结
这一发现是同事发现 uglify-js3 中也支持 ie8 兼容处理。
然后我重新去测试了几遍,顺便翻了webpack 官网插件后验证可行性。
否则我可能还会继续使用之前那个繁琐的方式。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
详解webpack编译多页面vue项目的配置问题
本文主要介绍了webpack编译多页面vue项目的配置问题,分享给大家,具体如下: 一般情况下,构建一个vue项目的步骤为: 1,安装nodejs环境 2,安装vue-cli cnpm install vue-cli -g 3,构建vue项目 vue init webpack-simple vue-cli-multipage-demo 4, 安装项目依赖包 cnpm install 5,在开发环境下运行该项目: npm run dev 通过上面这几步一个简单的vue项目的开发环境基本就搭建起来,
-
浅谈webpack编译vue项目生成的代码探索
本文介绍了webpack编译vue项目生成的代码探索,分享给大家,具体如下: 前言 往 main.js 里写入最简单的 vue 项目结构如下 import Vue from 'vue'; import App from './App.vue'; new Vue({ el: '#app', template: '<App/>', components: { App } }) App.vue 如下 <template> <div id="app"> &l
-
详解webpack3编译兼容IE8的正确姿势
上一篇中的方法在 webpack 更新后,uglify 缓存地址也发生了变化,需要重新找地址. 后来测试发现不论是 uglify-js2 uglify-js3 都是支持 IE8 兼容处理的. 但在 webpack.optimize.UglifyJsPlugin 中加配置参数却无效.(webpack 的锅) 总不能每次都手动去找 webpack 缓存路径进行劫持吧,那要疯了. UglifyjsWebpackPlugin 关键点依然在于UglifyjsWebpackPlugin插件,但并不是内置的
-
详解webpack打包第三方类库的正确姿势
webpack 的使用越来越广泛,但其中不乏很多鲜为人知的细节设置,甚至很多人会认为这是 webpack 的 bug.这次,我们就来聊一聊 webpack.optimize.CommonsChunkPlugin. 这个 plugin 我相信几乎90%的用 webpack 的都用了这个,但我同样相信几乎 90% 的用了这个 plugin 的人都没有正确的使用. entry: { index: './app/main.jsx', vendor: ['react', 'react-dom', 'rea
-
详解webpack提取第三方库的正确姿势
我们在用webpack打包是时候,常常想单独提取第三方库,把它作为稳定版本的文件,利用浏览缓存减少请求次数.常用的提取第三方库的方法有两种 CommonsChunkPlugin DLLPlugin 区别:第一种每次打包,都要把第三方库也运行打包一次,第二种方法每次打包只打包项目文件,我们只要引用第一次打包好的第三方压缩文件就行了 CommonsChunkPlugin方法简介 我们拿vue举例 const vue = require('vue') { entry: { // bundle是我们要打
-
详解iOS平台调用后台接口的正确姿势
前言 做iOS开发,除非你做的是单机应用,否则一定避免不了接口调用,也就是所谓的API调用. 而对于这方面,每个公司定义接口的格式不尽相同,从而导致我们的代码没法达到通用. 甚至你接私活的话,更会遇到五花八门的接口格式.那么有没有一种通用的方式来处理这些不通用的格式呢? 我尝试从变化的接口格式中找到不变的东西,把这些不变的东西进行可配置,从而形成以不变应万变的接口调用方式. 这些不变的东西,包括如下几种: 错误码 错误消息 业务数据 而对于错误码又可以分如下几类: 成功 失败 token失效 基
-
详解项目升级到vue-cli3的正确姿势
一. 原以为升级vue-cli3的路线是这样的: 创建vue-cli3项目,按原有项目的配置选好各项配置 迁移目录 src->src static->public 对比新旧 package.json ,然后 yarn install ,完毕. 然鹅... 运行项目,报错 You are using the runtime-only build of Vue...... : 然后去查了下旧项目的相关字眼文件: 噢,原来是vue-cli3的webpack相关文件都得自己写.于是乎根据官网的指引,在
-
详解编译器编译原理
详解编译器编译原理 什么是gcc 什么是gcc:gcc是GNU Compiler Collection的缩写.最初是作为C语言的编译器(GNU C Compiler),现在已经支持多种语言了,如C.C++.Java.Pascal.Ada.COBOL语言等. gcc支持多种硬件平台,甚至对Don Knuth 设计的 MMIX 这类不常见的计算机都提供了完善的支持 gcc主要特征 1)gcc是一个可移植的编译器,支持多种硬件平台 2)gcc不仅仅是个本地编译器,它还能跨平台交叉编译. 3)gcc
-
详解 MySQL中count函数的正确使用方法
1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主键id.字段,那么它们有什么区别?各自效率如何?我们应该使用哪种方式来获取表的行数呢? 当搞清楚count函数的运行原理后,相信上面几个问题的答案就会了然于胸. 2. 表结构 为了解决上述的问题,我创建了一张 user 表,它有两个字段:主键id和name,后者可以为null,建表语句如下. CRE
-
详解PHP调用Go服务的正确方式
问题 服务耦合 我们在开发过程中可能会遇到这样的情况: 进程依赖于某服务,所以把服务耦合在进程代码中: 服务初始化耗时长,拖慢了进程启动时间: 服务运行要占用大量内存,多进程时内存损耗严重. 文本匹配服务,它是消息处理流程中的一环,被多个消息处理进程依赖,每次初始化进程要 6秒 左右时间构造 Trie 树,而且服务读取关键词大文件.使用树组构造 Trie 树,会占用大量(目前设置为 256M )内存. 我已经把进程写成了守护进程的形式,让它们长时间执行,虽然不用更多地考虑初始化时间了,但占用内存
-
详解Java编译优化之循环展开和粗化锁
循环展开和粗化锁 我们先来回顾一下什么是循环展开. 循环展开就是说,像下面的循环遍历的例子: for (int i = 0; i < 1000; i++) { x += 0x51; } 因为每次循环都需要做跳转操作,所以为了提升效率,上面的代码其实可以被优化为下面的: for (int i = 0; i < 250; i++) { x += 0x144; //0x51 * 4 } 注意上面我们使用的是16进制数字,至于为什么要使用16进制呢?这是为了方便我们在后面的assembly代码中快速找
-
C语言 图文并茂详解程序编译过程
目录 一.初识编译器 二.程序被编译的过程 三.小结 一.初识编译器 编译器是一个广义的概念,真正的编译器由下面几个模块组成,真正的编译器是进行语法分析和语义分析的. 二.程序被编译的过程 如下,file.i 是中间代码,file.s 是一个汇编文件,file.o 是二进制文件. 预编译 处理所有的注释,以空格代替 将所有的 #define 删除,并且展开所有的宏定义 处理条件编译指令 #if, #ifdef, #elif,#else,#endif 处理 #include,展开被包含的文件 保留
随机推荐
- angular中使用路由和$location切换视图
- Cont()与Where().Count()有时性能差别如此之大!
- 用正则表达式批量为a增加target=''_blank''新窗口打开的方法
- 干货分享!iOS10 SiriKit QQ适配详解
- Python中的测试模块unittest和doctest的使用教程
- .Net core下直接执行SQL语句并生成DataTable的实现方法
- Python中zip()函数用法实例教程
- Python使用设计模式中的责任链模式与迭代器模式的示例
- FCKeditor提供了一个完整的JavaScript API
- 简单实现js点击展开二级菜单功能
- JS简单实现点击跳转登陆邮箱功能的方法
- 如何通过javascript操作web控件的自定义属性
- jquery+css实现绚丽的横向二级下拉菜单-附源码下载
- jQuery动态生成Bootstrap表格
- JavaScript中扩展Array contains方法实例
- javascript之典型高阶函数应用介绍二
- 修改Windows注册表系统文件为宽带加速
- Android编程中ViewPage判断左右滑动方向的方法
- ListView的View回收引起的checkbox状态改变监听等问题解决方案
- Android调用相机并将照片存储到sd卡上实现方法