封装css属性
mixins.styl
ellipsis()
overflow: hidden
white-space: nowrap
text-overflow: ellipsis
引入方式:
<style lang="stylus" scoped>
@import '~styles/mixins.styl'
.icon-desc
position: absolute
left: 0
right: 0
bottom: 0
height: .44rem
line-height: .44rem
text-align: center
color: $darkTextColor
ellipsis()
</style>
动态计算分页的数量
场景:比如你得到一组list数据要展示在页面上,一页展示8条,超过8条要展示在下一页,滑动翻滚展示那种。可以利用计算属性来达到效果
<script> export default { name: 'HomeIcons', props: { list: Array }, data () { return { swiperOption: { autoplay: false } } }, computed: { pages () { const pages = [] this.list.forEach((item, index) => { const page = Math.floor(index / 8) if (!pages[page]) { pages[page] = [] } pages[page].push(item) }) return pages } } } </script>
ajax获取后台数据
vue提供了好几种ajax的方法,但是我们这边采用的是axios 模块,是vue官方提供的模块。
npm install axios --save 下载
import axios from 'axios' 引用
使用方法:
export default { name: 'Home', components: { HomeHeader, HomeSwiper, HomeIcons, HomeRecommend, HomeWeekend }, methods: { getHomeInfo () { axios.get('/api/index.json?city=' + this.city) // 利用axios执行ajax请求 .then(this.getHomeInfoSucc) // 请求成功之后执行这个回调函数 }, getHomeInfoSucc (res) { res = res.data if (res.ret && res.data) { const data = res.data this.swiperList = data.swiperList this.iconList = data.iconList this.recommendList = data.recommendList this.weekendList = data.weekendList } } }, mounted () { // 挂载的时候执行这个函数 this.lastCity = this.city this.getHomeInfo() }, }
转发请求来实现前后端接口分离
为啥要有这个功能呢?思考一下,我们前端开发的时候,数据是我们模拟的,接口url也是我们模拟的,然后我们开发ok之后后台给我们接口,我们再一个修改修改url,这样是很不友好的,也容易犯错,难不能这样呢?我们写的url就是后台真正的url,但是可以做一个转发,转发到我本地的数据源,这样当真正上线的时候,我们就不用再一个修改接口了。实现这个效果需要在配置文件中配置下。
configindex.js 中
proxyTable: { '/api': { target: 'http://localhost:80', pathRewrite: { '^/api':"/static/mock" //意思是当我们请求api开头的接口时,vue就会帮我们自动转发到/static/mock路径下 } } },
下拉实现
利用 better-scroll插件来实现的
https://www.cnblogs.com/xiaohaifengke/p/7308943.html 博客推荐
https://github.com/ustbhuangyi/better-scroll gitHub地址
mounted () { this.scroll = new Bscroll(this.$refs.wrapper) // 实现滑动效果 } this.scroll.scrollToElement(element) //这个方法是说 你获取到element的Dom元素,放进去,会自动滚动到相关的dom位置