## Vue 项目的编译打包
使用Vue Cli创建的项目, 在正式环境时需要使用webpack编译打包,编译的命令是:
```
npm run build
```
以上命令做的事情是把很多js源码文件中的注释去掉, 汇整到一份文件中, 这样的好处是总体需要传输的文件变小了。
打包后的路径是: dist\js 。 文件名是 app_[一段Hash字符串].js。
## 问题导入
在使用Router的项目中, router/index.js 路由中一般会导入多个 .vue 组件, 类似:
```
import VuexDemo from '../views/VuexDemo.vue'
```
当一个应用中的组件很多时, 会导致打包后的 app.xxx.js 这个文件很大,多的甚至达到几十兆,这样导致的问题是:
首页的加载会很慢,虽然后面很快,但是用户一般是等不及进首页就要抱怨了。
而且在很多应用中, 不同的页面关注的功能不同, 有点页面压根不会进去, 这样一次性把所有内容传递过来就显得浪费了。
## 解决方法
解决的方案是: 分模块打包。
这里有一个名词:chunk , 块,文件束。
实现方式是使用webpack 的require.ensure 方法实现按需加载。
语法如下:
```
require.ensure(dependencies: String[], callback: function(require), chunkName: String)
```
* dependencies, 依赖,需要用到的组件
* callback, 回调 , 所有依赖加载完,执行这个回调函数。可以为null
* chunkName, 分块的名字
## 原理
webpack 会创建一个 `<script>`标签加到 document.head 对象中。
## Vue 路由懒加载
结合Vue的异步组件和Webpack 的代码分隔功能,实现路由组件的懒加载。
1. 异步组件
```
new Vue({
// ...
components: {
'my-component': () => import('./my-async-component')
}
})
```
```
const Foo = () => Promise.resolve({ /* 组件定义对象 */ })
```
2. 动带import
```
import('./Foo.vue') // 返回 Promise
```
结合以上两点, 定义一个能够被Webpack自动代码分隔的异步组件的方式是:
```
const Foo = () => import('./Foo.vue')
```
- 引入篇
- 基础篇
- 快速入手
- 名词解释
- Vue语法
- Vue安装
- Vue实例
- 模板语法
- 计算属性和侦听器
- Class与Style绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 进阶篇
- 常用模块
- 单文件组件
- 快速学会Vue Router路由
- Vue Route 进阶使用
- Vuex 与状态管理
- Axios
- Mock.js
- data数据显示在页面
- Vue生命周期
- Vue按需加载组件
- 国际化
- 页面加载进度条 -NProgress
- 自定义主题颜色
- 开发篇
- Vue入门——创建并运行一个Vue项目
- Vue + Element UI 项目创建
- 使用Vue ui项目创建工具在网页中创建Vue项目
- Vue项目创建入门实例
- Vue CLI
- 创建项目
- 使用Visual Studio Code 开发Vue项目
- 高级篇
- 组件深入
- Vue+Element
- Vue + ElementUI 主题颜色切换
- 工具篇
- 在线代码编辑器
- 开发工具(IDE,集成开发环境)
- npm(JavaScript包管理工具)介绍
- Node.js(npm)在Windows下安装
- webpack介绍
- webpack快速实例
- webpack
- 快速入门实例
- 安装
- 概念
- Nodejs
- 基础
- npm
- 命令参考
- 命令
- 模块安装
- Babel
- 问题解决篇
- ERROR Failed to get response from https://registry.yarnpkg.com/vue-cli-version -marker
- Vue常见问题
- You are using the runtime-only build of Vue where the template compiler is not
- yarn 报unable to get local issuer certificate
- yarn There appears to be trouble with your network connection. Retrying
- Expected Boolean, got String with value "true".
- 项目篇
- 项目创建
- 项目设计
- 页面
- 开发问题
- 后端
- Spring Boot + Activiti 工作流框架搭建之一
- Spring Boot + Activiti 工作流框架搭建之二
- 工作流
- Java流程框架
- Activiti
- 页面风格
- green
- blue
- orange
- 参考篇
- 好的Git项目
- Vue的在线js
- 指令
- 开发说明
- JavaScript 高级
- export和import
- JS模块化规范对比以及在Node.js的实现
- Storage
- ES2015
- scss
- CSS、Sass、SCSS