Home  >  Article  >  Web Front-end  >  Specific implementation of Vue on-demand loading

Specific implementation of Vue on-demand loading

小云云
小云云Original
2018-05-14 11:34:302504browse

When packaging and building an application, the JavaScript package will become very large, affecting page loading. If we can divide the components corresponding to different routes into different code blocks, and then load the corresponding components when the route is accessed, well, this will be more efficient. This article mainly introduces the specific implementation of Vue's on-demand loading, hoping to help everyone.

Scenario

#xxx project is a single-page application, using a component-based development model. Every time you start the homepage, all components will be loaded, but At this time, just visiting the homepage has caused a large number of components to contaminate the loading.

Purpose

Only load the corresponding component when accessing the current page to avoid loading all page components. (Load on demand)

Implementation

app.vue

<template>
  <p id="app">
    <router-view/>
  </p>
</template>

router.js

import Vue from &#39;vue&#39;
import VueRouter from &#39;vue-router&#39;
import &#39;babel-polyfill&#39;
import {Promise} from &#39;es6-promise-polyfill&#39;
import App from &#39;../components/app&#39;

// 定义路由,每个路由映射一个组件。
const Routers = [
  {
    path: &#39;/&#39;,  // 路径
    component: resolve => require([&#39;../components/member/index], resolve)  // 异步加载组件
  },
  {
    path: &#39;/login&#39;,
    component: resolve => require([&#39;../components/member/login&#39;], resolve)
  }
]

const RouterConfig = {
  routes: Routers
}
// 创建router实例,并传递路由配置。
const router = new VueRouter(RouterConfig);
// 创建并挂载根实例。
new Vue({
  el:&#39;#app&#39;,
  router,
  // 将h作为createElement的别名是一个通用惯例。
  render: h =>(App) 
})

Note: The

require() function accepts two parameters. The first parameter is an array, indicating the dependent modules, such as ['moduleA', 'moduleB']. The second parameter is a callback function, which will be called when all the previously specified modules are loaded successfully. Loaded modules are passed as parameters to this function, allowing them to be used inside the callback function.

The sample code uses an asynchronous method to load components. The require function is responsible for asynchronously introducing the component to be rendered, and resolve is responsible for asynchronous callback rendering of the component.

babel-polyfill: Transcode and compile Promise;

npm install --save babel-polyfill

es6-promise-polyfill solves Promise compatibility issues. For students who don’t know much about Promise, please move here

npm install --save es6-promise-polyfill

Related recommendations:

Steps to implement lazy loading and cross-domain implementation using Js

JS asynchronous loading method

Use Vue to load on demand to improve user experience

The above is the detailed content of Specific implementation of Vue on-demand loading. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn