2018-09-24
说到Vue.js常用插件,今天我们就一起来学习他的核心插件路由
(vue-router
)。
①Vue.js 路由允许
我们通过不同的 URL 访问不同的内容
。
②通过 Vue.js 可以实现多视图的单页
Web应用(single page web application,SPA);(通俗来说就是:创建单页面SPA
)。
firstly:安装
①直接下载/CDN:https://unpkg.com/vue-router/dist/vue-router.js。
②NPM:打开Git Bash Here,输入指令npm install vue-router.。
secondly:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a></a>
<div id='app'>
<!--1.创建一个链接-->
<!-- 使用 router-link 组件来导航. -->
<!-- 通过传入 `to` 属性指定链接. -->
<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
<router-link to='/home'>首页</router-link>
<router-link to='/user'>用户页</router-link>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<!-- 盛放链接对应的内容-->
<router-view></router-view>
</div>
<script src='js/vue.js'></script>
<script src='js/vue-router.js'></script>
<script>
//2.创建组件
var Home={
template:`
<h1>这是首页</h1>
`
}
var User={
template:`
<h1>这是用户页</h1>
`
}
//3.配置路由
const routes=[
{path:'/home',component:Home},
{path:'/user',component:User}
]
//4.创建路由实例
//创建 router 实例,然后传 `routes` 配置
const router=new VueRouter({
//也可以简写为routers
routes:routes
})
//5.路由实例挂载到vue实例上
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
new Vue({
el:'#app',
router:router
})
</script>
</body>
</html>
之后,我们一起来看一下其中的细节:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
/* 两种方式都可以改变链接字体的颜色*/
/*
.router-link-active{
color:red;
}
*/
.active{
color:red;
}
</style>
</head>
<body>
<a></a>
<div id='app'>
<!--1.-->
<router-link to='/home'>首页</router-link>
<router-link to='/user'>用户页</router-link>
<!-- 盛放链接对应的内容-->
<router-view></router-view>
</div>
<script src='js/vue.js'></script>
<script src='js/vue-router.js'></script>
<script>
//2.创建组件
var Home={
template:`
<h1>这是首页</h1>
`
}
var User={
template:`
<h1>这是用户页</h1>
`
}
//3.配置路由
const routes=[
//添加一个新的路径,也就是第一个,当页面加载完成时直接显示
{path:'/',component:Home},
{path:'/home',component:Home},
{path:'/user',component:User}
]
//4.创建路由实例
const router=new VueRouter({
routes:routes,
linkActiveClass:'active'
})
//5.路由实例挂载到vue实例上
new Vue({
el:'#app',
router:router
})
</script>
</body>
</html>
效果图:
接下来的就是路由的嵌套
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id='app'>
<!--1.-->
<router-link to='/index'>首页</router-link>
<router-link to='/user'>用户页</router-link>
<router-view></router-view>
</div>
<script src='js/vue.js'></script>
<script src='js/vue-router.js'></script>
<script>
//2.创建组件
var Index={
template:`
<h1>这是首页</h1>
`
}
var User={
template:`
<div>
<h1>这是用户页</h1>
<ul>
<li>
<router-link to='/user/regist'>注册</router-link>
</li>
<li>
<router-link to='/user/login'>登录</router-link>
</li>
</ul>
<router-view></router-view>
</div>
`
}
var Regist={
template:`
<h3>这是注册页</h3>
`
}
var Login={
template:`
<h3>这是登录页</h3>
`
}
//3.配置路由
const routes=[
{path:'/',component:Index},
{path:'/index',component:Index},
{
path:'/user',
component:User,
children:[
{path:'regist',component:Regist},
{path:'login',component:Login}
]
}
]
//4.创建路由实例
const router=new VueRouter({
routes:routes
})
//5.把路由实例挂载到vue实例上
new Vue({
el:'#app',
router:router//注册路由
})
</script>
</body>
</html>
效果图:
QAQ:
①v-html
v-html='',可以解析标签
更新元素的innerHTML
。注意:内容按普通
HTML 插入 - 不会作为 Vue 模板进行编译 。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。
<div v-html="html"></div>
②v-text
v-text='',可以输出,但不可以解析标签
更新元素的textContent
。如果要更新部分的 textContent ,需要使用{{ Mustache }}
插值。
<span v-text="msg"></span>
<span>{{msg}}</span>
③v-once
只绑定一次(直接写,不需要表达式)==>
只渲染元素和组件一次
。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能
。
④v-pre
原样输出(直接写,不需要表达式)
跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签
。跳过大量没有指令的节点会加快编译。
⑤v-cloak
用属性选择器:
css:[v-cloak]{
display:none;
}
html:<div v-cloak>
{{ message }}
</div>
QAQ:
var,let,const
的异同==>
1.var定义的变量,没有块的概念
,可以跨块访问, 不能跨函数访问
。
2.let定义的变量,只能在块作用域里访问
,不能跨块访问,也不能跨函数访问
。
3.const用来定义常量
,使用时必须初始化
(即必须赋值),只能在块作用域里访问
,而且不能修改
。
路由今天就学到这里,我们下期再见QAQ~
·