网站首页 > 基础教程 正文
在大型应用中,我们可能需要将应用分割成小一些的代码块,并且只在需要的时候才从服务器加载一个模块。为了简化,Vue 允许你以一个工厂函数的方式定义你的组件,这个工厂函数会异步解析你的组件定义。Vue 只有在这个组件需要被渲染的时候才会触发该工厂函数,且会把结果缓存起来供未来重渲染。例如:
如你所见,这个工厂函数会收到一个 resolve 回调,这个回调函数会在你从服务器得到组件定义的时候被调用。你也可以调用 reject(reason) 来表示加载失败。
可以在工厂函数中返回一个 Promise,所以把 webpack 2 和 ES2015 语法加在一起,可以写成这样
当使用局部注册的时候,可以直接提供一个返回 Promise 的函数:
案例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>异步渲染</title> <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script> </head> <body> <div id="app"> <component-child></component-child> </div> <script> Vue.component('component-child', function(resolve, reject) { setTimeout(function() { resolve({ template: '<div>子组件异步渲染,3秒后把resolve参数返回去</div>' }) }, 3000) }) var app = new Vue({ el: '#app', }) </script> </body> </html>
如你所见,3秒之后,resolve( )的参数传递出去,作为component()的第二参数,也就是平常我们注册组件的模式。
有部分同学可能看不懂是什么意思,其实就是:
第二参数最终形态是一个对象,比如obj就是一个对象,obj ={hello:'world' },采用函数写:
var obj = (function(){ return{hello:'world' }})()
上述resolve相当于return。
拓展:同步变成异步的一般方式是什么?
我们需要异步是因为JavaScript是单线程的,异步可以显著改善性能。有哪些异步方式?
右侧绿色部分就是异步方式,比如事件,ajax,定时器等。
异步是一个很重要的课题,
1、延迟类型:setTimeout(setInterval也是可以的)、requestAnimationFrame、setImmediate(IE10及以上)
2、监听事件实现的类型:监听new Image加载状态、监听script加载状态、监听iframe加载状态、Message
3、带有异步功能类型: Promise、ajax( XMLHttpRequest、ActiveXObject)、Worker;
欢迎关注。
- 上一篇: 如何创建前端绘图和图表 前端创建表格
- 下一篇: 统一应用分层:如何规范公司所有应用分层?
猜你喜欢
- 2024-10-12 面试常客系列之跨域 java跨域面试题
- 2024-10-12 如何根治 Script Error. 如何根治神经性皮炎
- 2024-10-12 只用一个js文件,为你的网站加个黑暗模式
- 2024-10-12 闭包(一):闭包的9个应用场景 闭包一般用在什么地方
- 2024-10-12 LLM工程师应该如何防范提示注入?指导来了
- 2024-10-12 如何实现前端社交媒体分享功能 前端聊天功能如何实现
- 2024-10-12 「WWDC2018」-Web安全策略 web安全进阶
- 2024-10-12 「JS库」3个很棒的小众JavaScript库
- 2024-10-12 如何使用 如何使用验孕棒
- 2024-10-12 2 JavaScript核心 script标签 营养标签中的核心营养素
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)