需要注意的是,如果改为动态绑定图片,请参考:vue-cil和webpack中本地静态图片的路径问题解决方案
我这里将静态资源文件转移到了static目录下面。
重构后的代码如下:
<template> <div> <div class="swiper-container" ref="slider"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="slide in slides"> <router-link :to="{name:'BookDetail',params:{id:slide.id}}"> <img :src="slide.img_url"/> </router-link> </div> </div> </div> </div> </template> <script> import 'swiper/dist/css/swiper.css' import Swiper from 'swiper' export default { name: "Slider", data(){ return{ slides:[{id:1,img_url:'./static/sliders/t1.svg'},{id:2,img_url:'./static/sliders/t2.svg'}] } }, mounted(){ new Swiper (this.$refs.slider, { loop: true, // 如果需要分页器 pagination: '.swiper-pagination', // 如果需要前进后退按钮 nextButton: '.swiper-button-next', prevButton: '.swiper-button-prev', // 如果需要滚动条 scrollbar: '.swiper-scrollbar', }) } } </script>
这里还没有把组件完全独立,里面有数据定义,其实可以把这个数据作为一个参数传递进来,也就是组件之间数据传递。
通过路由传参,在router/index.js中定义路由
export default new Router({ routes: [ { name:'BookDetail', path:'/books/:id', component: BookDetail } ] })
前面的轮播组件中已经定义了需要传递的路由参数
<router-link :to="{name:'BookDetail',params:{id:slide.id}}"> <img :src="slide.img_url"/> </router-link>
参数接收界面BookDetail.vue
<template><p> 点击的是:<span v-text="id"></span></p></template><script> export default { name: "BookDetail", data(){ return{ id:this.$route.params.id } }, props:[] }</script><style scoped></style>
如果传递参数太多,这样的方式肯定不方便,那么可以采用vuex,或者组件数据传递。
关于组件传值可以参考:Vue 组件之间传值
关于Vue-cli npm run build生产环境打包,本地不能打开问题
之后每次运行:hs即可。
相关推荐:
jQuery自适应轮播图插件Swiper用法示例
使用swiper组件实现轮播广告效果
Vue封装Swiper实现图片轮播效果的代码分享