app.component.ts import { Component } from '@angular/core'; @Component({selector: 'a"> Vue异步组件Demo - 11GX
首页 > Vue异步组件Demo

Vue异步组件Demo

Vue异步组件Demo

在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载。为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义。Vue.js 只在组件需要渲染时触发工厂函数,并且把结果缓存起来,用于后面的再次渲染。

下面是我写的一个简单Vue异步组件Demo。

index.html


<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible"content="ie=edge"><title>Document</title><script>// 如果浏览器不支持Promise就加载promise-polyfillif ( typeof Promise === 'undefined' ) {var script = document.createElement( 'script' );script.type = 'text/javascript';script.src = 'https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js';document.head.appendChild( script );}</script><!-- 引入Vue --><script src="https://cdn.jsdelivr.net/npm/vue"></script></head><body><div id="app" style="font-size: 22px"><!-- 异步组件async-comp --><async-comp :list="['我是一个异步组件,','如果加载完成,','我就会在这里显示']"></async-comp></div><!-- 引入main.js     --><script src="/main.js"></script></body></html>

异步组件Async-Comp.js,

  • 注意,Async-Comp.js并没有在index.html中引用,而是在下面的main.js中动态加载。

window.async_comp = {template: '<ol><li v-for="item in list">{ { item }}</li></ol>',props: {list: Array}
};

main.js


var vm = new Vue( {el: '#app',components: {/* 异步组件async-comp */'async-comp': function () {return {/** 要渲染的异步组件,必须是一个Promise对象 */component: new Promise( function ( resolve, reject ) {var script = document.createElement( 'script' );script.type = 'text/javascript';script.src = '/Async-Comp.js';document.head.appendChild( script );script.onerror = function () {reject( 'load failed!' );}script.onload = function () {if ( typeof async_comp !== 'undefined' )resolve( async_comp );else reject( 'load failed!' )}} ),/* 加载过程中显示的组件 */loading: {template: '<p>loading...</p>'},/* 出现错误时显示的组件  */error: {template: '<p style="color:red;">load failed!</p>'},/* loading组件的延迟时间 */delay: 10,/* 最长等待时间,如果超过此时间,将显示error组件。 */timeout:3200}}}
} )

see github

原文地址:https://segmentfault.com/a/1190000012561857

转载于:https://www.cnblogs.com/lalalagq/p/9960394.html

更多相关:

  • 背景:在写提交订单页面时候,底部按钮当我点击输入留言信息的时候,底部提交订单按钮被输入法软键盘顶上去遮挡住了。 h5 ios输入框与键盘 兼容性优化实现原理:当页面高度发生变化的时候改变底部button的样式,没点击前button在底部固定position: fixed;当我点击input的时候样式变成position: stati...

  • kuapingUI 2.2 版本发布,增加了一个比较实用的工具栏web组件,是由分享按钮组 + 联系按钮组构成,分享按钮组包含了 QQ空间、朋友圈、QQ、微信、微博等分享;联系按钮组包含了 微信、QQ、旺旺、Skype、电话等快捷沟通方式。演示地址 跨屏UI框架-响应式前端框架_基于Bootstrap的大组件UI框架​ui.kuapi...

  • 本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。#Vue 实现组件信息的缓存当我们在开发vue的项目过程中,避免不了在路由切换到其他的component再返回后该组件数据会重新加载,处理这种情况我们就需要用到keep-a...

  • 2020年Vue面试题Interview●●●●作者:@烦恼会解决烦恼vue核心知识——理论篇1、对于Vue是一套渐进式框架的理解渐进式代表的含义是:主张最少。Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开...

  • app.component.html

    父组件字号:{{fontSizePx}}px

    app.component.ts ...fontSizePx=12...

  • app.component.html  app.component.ts import { Component } from '@angular/core'; @Component({selector: 'a...