Vue异步组件Demo

来源:互联网 发布:linux查看存储空间 编辑:程序博客网 时间:2024/05/29 02:03

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-polyfill            if ( 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

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 少数民族头饰 民族头饰手工 青蛙头饰图片 少数民族头饰图片 56个民族头饰儿童手工制作 动物头饰图片 民族头饰简笔画 买头饰去哪个网站 儿童头饰代理 儿童古代头饰 老鹰头饰图片 婚纱头饰图片 古装头饰及发型 古代的头饰叫什么 小鸟头饰图片 儿童头饰图片 猴子头饰图片 做头饰的材料 幼儿表演头饰 古代头饰图片 新娘头饰图片 头饰制作图片 蝴蝶结头饰的做法 头饰制作材料批发 儿童头饰批发市场 蝴蝶结头饰怎么做 发饰头饰批发 手工头饰制作教程 儿童卡通头饰制作 动物头饰手工制作 一元头饰批发 头饰批发市场 头饰哪里批发 秧歌头饰批发 头饰 发饰 盘发器 女士头饰批发 手工制作头饰方法 批发儿童头饰 精品头饰批发 手工制作头饰教程 老虎的头饰怎么做