一、我这边scripts的运行命令是dev,所以npm run dev,打开访问http://localhost:300/就能顺利访问
二、安装路由npm i vue-router@next
在src文件夹下新建router/index.js文件和views/Home.vue文件
//router/index.js页面代码
import { createRouter, createWebHashHistory } from 'vue-router'
const router = createRouter({
history: createWebHashHistory(), // hash模式:createWebHashHistory,history模式:createWebHistory
routes: [
{
path: '/',
redirect: '/home'
},
{
path: '/home',
name: 'home',
component: () => import('../views/Home.vue'),
meta: {
index: 1
}
}
]
})
export default router
//iews/Home.vue页面代码
<template>
我是首页代码
</template>
<script>
export default {
name: 'home',
setup() {
},
}
</script>
App.vue页面引入路由
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
在main.js文件中引入import router from './router'和app.use(router),如下图
启动项目来验证下,成功跳转到首页
注意:路由如果使用@引入的话v会报错
需要在vite.config.js增加代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'~': path.resolve(__dirname, './'),
'@': path.resolve(__dirname, 'src')
}
}
})
三、引入轻量级vant组件npm install vant -D,官网地址:Vant 3 - Mobile UI Components built on Vue
在main.js中引入
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' //路由引入
import { Swipe, SwipeItem } from 'vant'; //vant按需引入
import 'vant/lib/index.css'; // vant样式
const app = createApp(App) // 创建实例
app.use(Swipe)
.use(SwipeItem)
app.use(router)
app.mount('#app')
home.js页面去调用
<template>
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item>1</van-swipe-item>
<van-swipe-item>2</van-swipe-item>
<van-swipe-item>3</van-swipe-item>
<van-swipe-item>4</van-swipe-item>
</van-swipe>
</template>
<script>
export default {
name: 'home',
setup() {
},
}
</script>
<style>
.my-swipe .van-swipe-item {
color: #fff;
font-size: 20px;
line-height: 150px;
text-align: center;
background-color: #39a9ed;
}
</style>
考虑到可能会有很多页面用到这轮播图,所以我们把它做成组件来用,在components文件夹下新建Swiper.vue,Home.vue页面去引入,修改Home.vue页面
<template>
<header>
<swiper :list='swiperList'></swiper>
</header>
</template>
<script>
import {reactive ,toRefs} from 'vue'
import swiper from '@/components/Swiper'
export default {
name: 'home',
components:{
swiper
},
setup() {
const state = reactive({
swiperList:[
{headerURL:'https://newbee-mall.oss-cn-beijing.aliyuncs.com/images/banner-p50-pocket.png'}
]
})
return {
...toRefs(state)
}
},
}
</script>
<style>
.my-swipe .van-swipe-item {
color: #fff;
font-size: 20px;
line-height: 150px;
text-align: center;
background-color: #39a9ed;
}
</style>
Swiper.vue页面
运行后可以看到图片太大了
我们得给图片设置宽高
报错了,在这我们引入sass样式
正确代码如下:
<template>
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item v-for="(item,index) in list" :key="index">
<img :src="item.headerURL" alt="">
</van-swipe-item>
</van-swipe>
</template>
<script>
export default {
props:{
list:Array
},
setup() {
},
}
</script>
<style scoped lang='scss'>
.my-swipe {
img {
width: 100%;
height: 100%;
}
}
</style>
运行命令: npm add sass -D
运行项目