Vue仿今日头条实例详解


Posted in Javascript onFebruary 06, 2018

前言

vue也弄了一段时间了, 前段时间一直想用vue写个移动端,加之年底也不是很忙,于是前几天便着手开始弄了,到今天为止也算是勉强能看了

因为也是纯粹的写写前端页面,所以数据方面用的是mock.js,为了真实的模拟请求,可以直接在 Easy Mock 自己生成API
也可直接登陆我这项目的Easy Mock账号密码:

账号: vue-toutiao
密码: 123456

如果你想修改接口,请copy一份在修改

如果你想后台接口也自己开发的话。可以阅读我这篇博客 Vue + Node + Mongodb 开发一个完整博客流程

技术栈:

vue + webpack + vuex + axios

结构:

  • build: webpack配置
  • config: 项目配置参数
  • src
  • assets: 静态资源文件,存放图片啥的
  • components: 常用组件。例如 弹窗 等等。。。
  • directive: 常用指令封装
  • router: 路由表
  • store: 状态管理 vuex
  • styles: 样式文件
  • utils: 常用工具类封装
  • views: 视图页面
  • static: 静态文件: 存放 favicon.ico 等等
  • 此项目用到了 DllPlugin 进行打包处理,所有启动该项目时记得,先执行一次该脚本命令生成配置

效果演示:

Vue仿今日头条实例详解

Vue仿今日头条实例详解

Vue仿今日头条实例详解

Vue仿今日头条实例详解

Vue仿今日头条实例详解

几个常用的知识点

1. 路由懒加载

{
  path: '/development',
  name: 'development',
  component: (resolve) => {
    require(['../views/development.vue'], resolve)
  }
}

const _import_ = file => () => import('views/' + file + '.vue')

{
  path: '/development',
  name: 'development',
  component: _import_('development')
}

2. 登陆拦截

通过路由的 beforeEach 钩子函数来判断是否需要登陆

// 如:系统设置需要登陆
{ 
  path: '/system', 
  name: '系统设置', 
  meta: { 
    login: true
  },
  component: _import_('System/index')
}

router.beforeEach((to, from, next) => {
  if (to.meta.login) { //判断前往的界面是否需要登陆
    if (store.state.user.user.name) { // 是否已经登陆
      next()
    }else{
      Vue.prototype.$alert('请先登录!')
        .then( () => {
          store.state.user.isLogin = true
        })
    }
  }else{
    if (to.meta.page) store.state.app.pageLoading = true
    next() 
  }
  
})

3. 动画切换

通过检测设置在 Router上的animate属性 来判断它做什么样的切换动画

Router.prototype.animate = 0

// 获取每个路由meta上面的slide 来判断它做什么动画
{ 
  path: '/system', 
  name: '系统设置', 
  meta: { 
    slide: 1 
  },
  component: _import_('System/index')
}


watch: {
  $route (to, from) {
    /*
    0: 不做动画
    1: 左切换
    2: 右切换
    3: 上切换
    4: 下切换
    ...
     */
    let animate = this.$router.animate || to.meta.slide
    if (!animate) {
      this.animate = '' 
    }else{
      this.animate = animate === 1 ? 'slide-left' :
        animate === 2 ? 'slide-right' :
        animate === 3 ? 'slide-top' :
        animate === 4 ? 'slide-bottom' : ''
    }
    this.$router.animate = 0
  }
}

4. 视频播放

因为在IOS上 无法隐藏video的controls ,所以我们可以隐藏video,通过绘制canvas来达到播放视频的效果

5. icon采用的是 阿里巴巴矢量图

6. mock.js

7. Easy Mock

代码实例:https://github.com/cd-dongzi/vue-project/tree/master/vue-toutiao

Javascript 相关文章推荐
js获取url参数的使用扩展实例
Dec 29 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
jQuery Jcrop插件实现图片选取功能
Nov 23 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
jquery 通过name快速取值示例
Jan 24 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
概述jQuery的元素筛选
Nov 23 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
Vue.js自定义事件的表单输入组件方法
Mar 08 Javascript
js的各种数据类型判断的介绍
Jan 19 Javascript
浅析JavaScript异步代码优化
Mar 18 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 #Javascript
详解React开发必不可少的eslint配置
Feb 05 #Javascript
详解js的作用域、预解析机制
Feb 05 #Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
Feb 05 #Javascript
jQuery实现动态显示select下拉列表数据的方法
Feb 05 #jQuery
详解vue静态资源打包中的坑与解决方案
Feb 05 #Javascript
理解Koa2中的async&await的用法
Feb 05 #Javascript
You might like
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
python实现保存网页到本地示例
2014/03/16 Python
介绍Python中几个常用的类方法
2015/04/08 Python
Python中设置变量访问权限的方法
2015/04/27 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
美国购物网站:Clickhere2shop
2021/01/28 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
结婚堵门保证书
2015/05/08 职场文书
南京大屠杀观后感
2015/06/02 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏