首先是项目目录:
项目通过vue-router创建之后,添加了一些组件:User.vue Profile.vue Posts.vue Eaditor.vue。
组件相关的代码,在下面会一一列出来。
本文知识点涉及到三个组件:index.js Eaditor.vue App.vue。
总共4个步骤:
第一步:新建Eaditor.vue组件
Eaditor.vue代码如下:
// Eaditor.vue里面的内容
<template>
<div>
<h3>编辑页面</h3>
<textarea v-model="content" cols="30" rows="10"></textarea>
<button @click="saveContent">保存</button>
<ul>
<li v-for="(item,index) in list" :key="index">
{{item.title}}
</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return{
content:'',
list:[]
}
},
methods:{
saveContent(){
this.list.push({
title:this.content
})
this.content = ''
}
},
beforeRouteLeave(to,from,next){
if(this.content){
alert('请保存后再离开!');
next(false);
}else{
next();
}
}
}
</script>
<style lang="scss" scoped>
</style>
第二步:在index.js里面挂载Eaditor.vue
index.js代码如下:
// index.js里面的内容
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
// import Posts from '@/views/Posts.vue'
const routes = [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
},
{
path:'/user',
name:'user',
component:()=>import('@/views/User.vue'),
// props:true,
children:[
{
path:'/posts',
component:()=>import('@/views/Posts')
},
{
path:'/profile',
component:()=>import('@/views/Profile')
}
]
},
{
path:'/eaditor',
name:'eaditor',
component:()=>import('@/views/Eaditor')
},
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
第三步:在App.vue里面制定链接
App.vue代码如下:
// App.vue里面的内容
<template>
<nav>
<router-link to="/">首页</router-link> |
<router-link to="/about">关于</router-link> |
<router-link to='/user'>User</router-link> |
<router-link to='user/posts'>user/posts</router-link> |
<router-link to='user/profile'>user/profile</router-link> |
<router-link :to="{name:'eaditor'}">编辑</router-link>
</nav>
<router-view/>
<!-- <router-view></router-view> -->
</template>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
nav {
padding: 30px;
}
nav a {
font-weight: bold;
color: #2c3e50;
}
nav a.router-link-exact-active {
color: #42b983;
}
</style>
第四步:在Eaditor.vue里面设置详细操作步骤和方法:
详细代码请查看Eaditor.vue代码。
运行结果如下:
初始化页面:
输入内容,数据保存在列表内:
输入内容,未保存,而点击其它链接,弹出提示窗口。
到这里本文讲的知识点已完毕。
下面是其它组件的代码:
About.vue代码:
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
Home.vue代码:
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
HelloWorld
}
}
</script>
Posts.vue代码:
// Posts.vue里面的内容
<template>
<div>
<h2>Posts页面</h2>
</div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
</style>
Profile.vue代码:
// Profile.vue里面的内容
<template>
<div>
<h2>Profile页面</h2>
</div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
</style>
User.vue代码:
<template>
<div>
<h1>这是User页面</h1>
<router-view></router-view>
</div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
</style>
main.js代码:
import { createApp } from 'vue'
import App from './App.vue'
// import Vue from 'vue'
import router from './router'
// Vue.config.productionTip = false
createApp(App).use(router).mount('#app')
// new Vue ({
// router,
// render:h=>h(App)
// }).$mount('#app')
其它组件代码都是项目创建时自动创建的,这里就不多做介绍了!
文章内容是小编亲手测试过的,成功的,请想学习的朋友放心参考!