Files
2024-09-27 02:06:13 +08:00

133 lines
4.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="app">
<h1>Hello App!</h1>
<p>
<!-- 使用 router-link 组件来导航. -->
<!-- 通过传入 `to` 属性指定链接. -->
<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
<router-link to="/">Go to 首页</router-link>
<router-link to="/bar">Go to Bar</router-link>
<router-link to="/Info">Go to Info</router-link>
</p>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@2.0.0/dist/vue-router.js"></script>
<script>
// 0. 如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter)
// 1. 定义 (路由) 组件。
// 可以从其他文件 import 进来
const Index = {
data() {
return {
list: [
{ id: 1, title: '新闻1' },
{ id: 2, title: '新闻2' },
{ id: 3, title: '新闻3' }
]
}
},
// js跳转页面 在to里面填地址(例: :to={"path:'/Info',参数(quer(query:{id:v.id})或者params传参数)}")
// quer传参: :to={"path:'/Info',query:{id:v.id,page:1}}"
// params传参:params:{id:v.id,page:1} > 然后const routes中的 path改为: '/Info/:id/:page' 加一个name: 'Info'
template: `
<div class="index">
首页
<ul>
<li @click="enterInfo(i)" v-for="v,i in list" :key="i">{{v.title}}</li>
</ul>
</div>
`,
// <router-link tag="a" :to="{name:'Info',params:{id:v.id,page:1}}" v-for="v,i in list">{{v.title}}</router-link> router-link页面跳转写法
methods: {
enterInfo(v) {
this.$router.push({
name: 'Info',
query: {
id: v.id,
page: 1
}
})
}
}
}
const Bar = { template: '<div>bar</div>' }
const Info = {
template: '<div>详情页{{$route.params.id}}</div>',
data() {
return {
// id: 0
}
},
// query传参把参数渲染到页面上
// 方法1 :data的return定义一个变量默认为0 > created中this.xx = this.$route.query.xx > template中: '<div>详情页{{xx}}</div>'
// 方法2 :直接在template中写: '<div>详情页{{$route.query.xx}}</div>',
// params传参把参数渲染到页面上 就是把query的方法中的query改为params
created() {
// this.id = this.$route.query.id
// 拿到地址栏参数的方法
console.log(this.$route.query.id);
},
methods: {}
}
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
{ path: '/', component: Index },
{ path: '/bar', component: Bar },
{
path: '/Info', component: Info, name: 'Info'
// params传参写法 path: '/Info/:id/:page', component: Info, name: 'Info'
}
]
// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
mode: 'hash',
routes // (缩写) 相当于 routes: routes
})
// 导航守卫
router.beforeEach((to, from, next) => {
})
// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({
el: '.app',
router
})//.$mount('#app')也可以挂载或el
// 现在,应用已经启动了!
</script>
</html>