一、编译打包多出 *.map 文件处理
 
当执行 npm run build 后根目录下会编译出一个 dist 的文件夹,如下:
 
 
其中 css 和 js  文件夹下会多出一些 *.map 的文件,这些是没用的,如何在编译过程中进行排除?
 
修改,根目录 --> config --> index.js 找到 
 
# 将以下配置改为 false
{
cssSourceMap:true,
productionSourceMap:true
}
 
二、IE 页面空白问题,并且报错
 
[object Error] {description:"“Promise”未定义",message:"“Promise”未定义",name:"ReferenceError",number:-2146823279,stack:"ReferenceError"}
 

主要是 IE 对 ES6  的 Promise 支持不好,解决如下:
 
# 安装 babel-polyfill
npm install --save-dev babel-polyfill # 在 App.vue 文件中引用
import "babel-polyfill"; # 在 build --> webpack.base.js 中使用
# 修改
entry{
app:'./src/main.js'
}
# 为
entry{
app:['babel-polyfill','./src/main.js']
}
 
Promise 资料:
 
三、IE  下路由警告
 
在 IE 下运行时,控制台会打印出一段路由警告:
 
[vue-router] Named Route 'shared' has a default child route. When navigating to this named route (:to="{name: 'shared'"), the default child route will not be rendered. Remove the name from this Route and use the name of the default child route for named links instead.
 
在 vue 项目中使用了 Vue-Router ,当某个路由有子路由时,写法如下:
 
 
如果是如上写法,就会报出警告。
 
解决办法:因为当某个路由有子路由时,这时候父级路由需要一个默认的路由,所有父级路由不能定义 name 属性,即把父级路由的 name 属性删除即可。
 
相关资料:
 
四、jQuery 的引用
 
# 安装 JQuery
npm install --save-dev JQuery # 在根目录 build --> webpack.base.js
var webpack=require('webpack')
module.exports={
plugins:[
new webpack.ProvidePlugin({
"$":"jquery",
"jquery":"jquery",
"windiw.jQuery":"jquery",
"jQuery":"jquery"
})
]
}
五、路由的引用
 
路由优化,按需加载组件,使用 webpack require.ensure
 
使用 vue-cli 构建的项目,在默认情况下,执行 npm run build 会将所有的 js 代码打包为一个整体。
 
打包位置 dist/static/js/app.[contenthash].js。
 
类似下面的路由代码:
 
# router/index.js 路由相关信息,该路由文件引入了多个 *.vue 组件
import Hello from "@/components/Hello";
import Province from "@/components/Province";
import Segment from "@/components/Segment";
import User from "@/components/User";
import Loading from "@/components/Loading";
 
执行 npm run build 会打包为一个整体 app.[contenthash].js,这个文件是非常大,可能几兆或者几十兆,加载会很慢
 
 
 
所以我们需要分模块打包,把我们想要组合在一起的组件打包到一个 chunk 块中去。
 
分模块打包需要下面这样使用 webpack的 require.ensure,并且在最后加入一个 chunk 名。
 
相同 chunk 名字的模块将会打包到一起。
 
如下代码:
 
# router/index.js 修改为懒加载组件
const login = r => require.ensure([], () => r(require('./components/login/login')), 'login');
const shared = r => require.ensure([], () => r(require('./components/shared/shared')), 'shared');
const home = r => require.ensure([], () => r(require('./components/home')), 'home');
const modal = r => require.ensure([], () => r(require('./ui/modal')), 'modal');
const icons = r => require.ensure([], () => r(require('./ui/icons')), 'icons');
const buttons = r => require.ensure([], () => r(require('./ui/buttons')), 'buttons');
 
根据 chunkame 的不同, 上面的四个组件, 将会被分成3个块打包,最终打包之后与组件相关的js文件会分为3个 (除了app.js,manifest.js, vendor.js)。
 
分模块打包之后在 dist 目录下是这样的, 这样就把一个大的 js 文件分为一个个小的 js 文件了,按需去下载,其他的使用方法和 import 的效果一样。
 
 

相关资料:
 
六、vue-cli 脚手架的 .babelrc 文件详解
 
es6 特性浏览器还没有全部支持,但是使用 es6 是大势所趋,所以 babel 应运而生,用来将 es6 代码转换成浏览器能够识别的代码
 
babel 有提供专门的命令工具方便转码
 
{
// 此项指明,转码的规则
"presets": [
// env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并且设置amd,commonjs这样的模块化文件,不进行转码
["env", { "modules": false }],
// 下面这个是不同阶段出现的es语法,包含不同的转码插件
"stage-2"
],
// 下面这个选项是引用插件来处理代码的转换,transform-runtime用来处理全局函数和优化babel编译
"plugins": ["transform-runtime"],
// 下面指的是在生成的文件中,不产生注释
"comments": false,
// 下面这段是在特定的环境中所执行的转码规则,当环境变量是下面的test就会覆盖上面的设置
"env": {
// test 是提前设置的环境变量,如果没有设置BABEL_ENV则使用NODE_ENV,如果都没有设置默认就是development
"test": {
"presets": ["env", "stage-2"],
// instanbul是一个用来测试转码后代码的工具
"plugins": ["istanbul"]
}
}
}

vue-cli 第二章 (常见问题修正)的更多相关文章

  1. Vue基础第二章

    1.数据绑定与数据声明 Vue中的数据绑定就是让与Vue实例绑定的DOM节点或script标签内的变量之间数据更新互相影响,即数据绑定后Vue实例的数据修改会使DOM节点的数据或者script标签内的 ...

  2. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  3. [Vue 牛刀小试]:第十七章 - 优化 Vue CLI 3 构建的前端项目模板(1)- 基础项目模板介绍

    一.前言 在上一章中,我们开始通过 Vue CLI 去搭建属于自己的前端 Vue 项目模板,就像我们 .NET 程序员在使用 asp.net core 时一样,我们更多的会在框架基础上按照自己的开发习 ...

  4. vue cli 常见问题汇总

    以下是本人在用vue cli 开发项目里遇到的最基本的问题及解决方案汇总.没啥很多技术性的东西,各位看个乐呵就行~ 1.vue-cli 创建的项目各文件夹的含义 注意:通过vue-cli 4 创建的项 ...

  5. Python3-Cookbook总结 - 第二章:字符串和文本

    第二章:字符串和文本 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出. 这一章将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等. 大部分的问题都能简单的调用字符串的 ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  7. Java 第二章 变量

    第二章 变量 变量称为:是计算机语言中能储存计算机结果或能表示值抽象概念 .变量可以通过变量名访问 int money ; //变量 money=1000; //赋值 int money=1000: ...

  8. [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】

    第二章Shell的结构  “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...

  9. 第二章 andrid studio创建项目

    原文 http://blog.csdn.net/zhanghefu/article/details/9326735 第二章 andrid studio创建项目 第二章 andrid studio创建项 ...

  10. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

随机推荐

  1. MATLAB 出一张好看的图

    1.坐标轴的视点(viewpoint):从哪个方向看整个坐标系统,这决定了坐标轴的方向和位置,通过view函数实现视点的设置:view([z y ]):(将坐标系统想象为一座房子,而自己是个会飞的天使 ...

  2. List 去重

    private static List removeDuplicate(List list) { HashSet h = new HashSet(list); list.clear(); list.a ...

  3. Java环境变量配置----JDK开发环境及环境变量设置

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  4. Hadoop学习笔记记录

    NameNode的介绍: NameNode是HDFS的核心,也称为master,它仅存储元数据(文件系统中所有文件的目录树) NameNode不存储实际的数据或数据集,数据本身存储在DateNodes ...

  5. NetworkStream介绍说明

    如果服务器和客户端之间基于TCP连接的,他们之间能够依靠一个稳定的字节流进行相互传输信息,这也是NetworkStream的最关键的作用,有了这个神奇的协议,NetWorkStream便能向其他流一样 ...

  6. java 将mysql中Blob类型转为字符串或数字

    引入Blob类型貌似不行,不知道是版本问题还是java中的Blob类型为oracle,后来使用byte[]转换成功. public float byte2float(byte[] b) { if(b! ...

  7. java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport

    网上说wsimport是jdk1.6后自带的客户端生成调用webservice接口的工具,其实我挺喜欢原生的东西,毕竟自家的东西用着应该最顺手啊,但往往让人惊艳的是那些集成工具. 本机jdk1.8.1 ...

  8. docker原理(转)

    可能是把Docker的概念讲的最清楚的一篇文章 [编者的话]本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. Docker是世 ...

  9. 导弹拦截问题(DP+贪心)

    1. 拦截导弹(Noip1999) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度. ...

  10. Visual Studio Enterprise 2019序列号

    Visual Studio Enterprise 2019序列号:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio Professional 2019序列号:NY ...