<!-- 路由匹配的组件渲染区域,路由页面的出口 --><router-view/>
一 、发现如果没有上述标签,页面组件的内容并不会在浏览器中显示,下述是对应的知识点内容:
<router-view/>
是 Vue Router 提供的一个内置组件,它的作用是在 Vue 应用的模板中为匹配到的路由组件提供一个挂载点。当用户通过地址栏访问不同的路由时,Vue Router 会根据路由配置找到对应的组件,并将其渲染到 <router-view/>
标签所在的位置。 如果不加 <router-view/>
,以下是可能发生的情况和原因:
1. 组件渲染位置缺失
Vue Router 需要一个地方来“挂载”或渲染匹配到的路由组件。如果没有 <router-view/>
,Vue Router 就没有指定的位置来渲染这些组件。这意味着即使路由正确匹配了组件,也没有地方显示它。
2. 路由组件无法显示
-
直接访问地址栏:当用户直接在地址栏输入一个 URL 并访问时,Vue Router 会尝试匹配这个 URL 到一个路由配置。如果匹配成功,它会尝试渲染对应的组件。但是,如果没有
<router-view/>
,这个组件就没有地方渲染,因此用户看不到任何组件信息。 -
导航到路由:即使是通过 Vue Router 提供的导航方法(如
this.$router.push()
或<router-link>
)进行导航,如果没有<router-view/>
,用户同样看不到任何组件信息。
3. <router-view/>
的作用
-
作为占位符:
<router-view/>
作为一个占位符,告诉 Vue Router 在哪里渲染匹配到的路由组件。 -
动态内容区域:Vue 应用的不同页面可以有不同的内容,
<router-view/>
就是这些内容动态变化的地方。
二、在实践中发现使用对象与null比较进行判空并没有起到理想的效果,下面是对于对象判空的一点方法收集:
方法1:使用 Object.keys()
if (Object.keys(user).length === 0) {// user 是一个空对象
}
Object.keys()
方法会返回一个包含对象所有可枚举属性的字符串数组,如果数组长度为0,则说明对象是空的。
方法2:使用 Object.entries()
if (Object.entries(user).length === 0) {// user 是一个空对象
}
Object.entries()
方法返回一个包含对象自身可枚举字符串键值对数组,如果数组长度为0,则说明对象是空的。
方法3:使用 JSON.stringify()
if (JSON.stringify(user) === '{}') {// user 是一个空对象
}
JSON.stringify()
方法将一个JavaScript值转换为JSON字符串,如果对象是空的,转换后的字符串就是一个空的对象字面量 {}
。
方法4:使用 for...in
循环
for (var key in user) {if (user.hasOwnProperty(key)) {// user 不是空对象break;}
}
// 如果没有进入循环体,则 user 是空对象
for...in
循环会遍历对象的所有可枚举属性,如果没有任何属性,则不会执行循环体内部的代码。 在使用上述方法时,需要注意的是,如果对象具有非枚举属性或者继承自原型链的属性,上述方法可能不会如预期那样工作。通常情况下,Object.keys()
和 Object.entries()
是最常用的方法,因为它们只考虑对象自身的可枚举属性。