Comments (1)
prefetchLink方法加载Components的核心代码
observer.unobserve(this.$el)
const Components = this.getPrefetchComponents()
for (const Component of Components) {
const componentOrPromise = Component()
if (componentOrPromise instanceof Promise) {
componentOrPromise.catch(() => {})
}
Component.__prefetched = true
}
首先要unobserve这个el, 之后通过getPrefetchComponents()取得所有需要prefetch的components
getPrefetchComponents () {
const ref = this.$router.resolve(this.to, this.$route, this.append)
const Components = ref.resolved.matched.map(r => r.components.default)
return Components.filter(Component => typeof Component === 'function' && !Component.options && !Component.__prefetched)
},
涉及到的api、概念等:
- router.resolve方法API
- route.matched
- components.default
- 最终返回的Components数组经过了typeof Component === 'function'的筛选,这涉及到了vue的异步组件
- 结合vue的异步组件和webpack代码分割功能实现路由懒加载
也就是说,这里取出了nuxt-link目标路由的所有嵌套路由记录中包含的异步组件
之后就用for循环执行异步组件的加载,并把它的__prefetched状态标记为true,表示已经被prefetch(这个状态也用于getPrefetchComponents方法中筛选尚未被prefetch的Components)
from fe-weekly.
Related Issues (20)
- cssnano 相关
- vue-meta HOT 3
- vuex命名空间 HOT 2
- pinia 初探
- Vue.observable 相关
- nuxt之上下文对象context HOT 2
- Server middleware HOT 2
- Nuxt3 HOT 3
- nuxtServerInit HOT 1
- Nuxt 3 useRuntimeConfig
- Nuxt3 请求数据
- Nuxt3 config配置 HOT 5
- vue3 api使用方法 HOT 5
- Nuxt3数据获取
- V3 setup方法与setup语法糖探究
- watchQuery HOT 3
- SEO优化 HOT 1
- undici
- 2022-7-21技术分享总结 HOT 5
- vue3 相关 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fe-weekly.