Cet article vous présentera 10 questions d'entretien avec Vuejs sur le routage vue-router. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
mvvm est Model-View-ViewModel Le principe de conception de mvvm est basé sur mvc
MVVM est l'abréviation de Model-View-ViewModel représente le modèle de données et. est responsable de la logique métier et des données. View représente le composant d'interface utilisateur responsable de l'interface et de l'affichage. ViewModel surveille les modifications des données du modèle et contrôle le comportement de l'affichage, gère l'interaction de l'utilisateur et connecte simplement la couche View et la couche Model de manière bidirectionnelle. liaison de données. Dans l'architecture MVVM, View et Model ne sont pas directement connectés, mais interagissent via ViewModel. Nous nous concentrons uniquement sur la logique métier et n'avons pas besoin d'exploiter manuellement le DOM, ni de prêter attention à la synchronisation de View et Model. (Partage vidéo d'apprentissage : tutoriel vidéo vue)
<router-link>
et <router-view>
et <keep-alive>
active-class est l'attribut du terminal router-link, utilisé pour changer le style sélectionné lorsque vous cliquez sur l'étiquette router-link, ce style sera appliqué
{ path: '/details/:id' name: 'Details' components: Details }
Accès au Répertoire de détails Tous les fichiers, tels que détails/a, détails/b, etc., seront mappés au composant Détails.
console.log(this.$route.params.id)
const router = new VueRouter({}) router.beforeEach((to, from, next) = { // to do somethings })
to:Route, représente la cible à entrer, qui est un objet de routage.
from:Route, représente l'itinéraire qui part actuellement, et est également un objet de routage
next:Function, une méthode qui doit être appelé, L'effet d'exécution spécifique dépend des paramètres appelés par la méthode suivante
router.afterEach((to, from) = { // to do somethings })
Le post hook n'a pas de fonction suivante et ne modifie pas non plus la navigation elle-même.
Hook exclusif d'itinéraire
const router = new VueRouter({ routes: [ { path: '/home', component: Home, beforeEnter: (to, from, next) = { // to do somethings // 参数与全局守卫参数一样 } } ] })
const Home = { template: `<div</div`, beforeRouteEnter(to, from, next){ // 在渲染该组件的对应路由被 confirm 前调用 // 不能获取组件实例 ‘this’,因为当守卫执行前,组件实例还没被创建 }, beforeRouteUpdate(to, from, next){ // 在当前路由改变,但是该组件被复用时调用 // 例:对于一个动态参数的路径 /home/:id,在/home/1 和 /home/2 之间跳转的时候 // 由于会渲染同样的 Home 组件,因此组件实例会被复用,而这个钩子就会在这个情况下被调用。 // 可以访问组件实例 'this' }, beforeRouteLeave(to, from, next){ // 导航离开该组件的对应路由时调用 // 可以访问组件实例 'this' } }
const Home = { template: `<div</div`, beforeRouteEnter(to, from, next){ next( vm = { // 通过 'vm' 访问组件实例 }) } }
// 监听当前路由发生变化的时候执行 watch: { $route(to, from){ console.log(to.path) // 对路由变化做出响应 } }
beforeRouteUpdate(to, from, next){ // to do somethings }
// 传递参数 this.$router.push({ name: Home, params: { number: 1 , code: '999' } }) // 接收参数 const p = this.$route.params
Requête :
// 传递参数 this.$router.push({ name: Home, query: { number: 1 , code: '999' } }) // 接收参数 const q = this.$route.query
hash
window.onhashchange = function(event){ console.log(event.oldURL, event.newURL) let hash = location.hash.slice(1) }
historique
const router = new VueRouter({ routes: [ { path: '/home', name: 'Home', component:() = import('../views/home') } ] })
更多编程相关知识,请访问:编程视频!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!