vue.js构建单页应用虽然能经过路由来实现多页面效果,可是实际上打包后全部的代码都只有一个入口文件app.bundle.js,当项目变得十分庞大的时候,app.bundle.js文件就会很是大,并且用户没有访问到的页面代码也包含在其中,使得首页加载时间延长,很是影响性能和用户体验。
若是咱们能把不一样路由对应的组件分割成不一样的代码块,只在路由被访问的时候才加载对应的组件,这样就更加高效了。这样会大大提升首屏显示的速度,可是可能其余的页面的速度就会降下来。结合Vue的异步组件和webpackde code splitting feature,咱们就轻松实现路由组件的懒加载。html
方法很简单,只须要在路由配置中改变模块的引入方式,好比未修改的index模块引入是这样的:vue
import Indexfrom 'components/index/index'
修改后(其余路由引入相似):webpack
const Index = (resolve) => { import('components/index/index').then(module => { resolve(module) }) }
location / { alias D:\\dist\\; try_files $uri $uri/ /index.html; }
<meta base="/app1/">ios
3.src/router/index.js文件nginx
将编译好的dist文件夹放在磁盘任意位置,好比D盘web
本身遇到过的坑,引用别人写的
请求的方法:axios
self.axios.post(url, {a: 1, b:2}, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }).then(response => response.data) .then(data => { console.log(data); });
这个Form Data后台取不到数据,正常的Form Data数据不是应该是健值对的么,像下面这样:segmentfault
解决办法:发送数据前对data进行qs.stringify(data)处理:app
var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });异步