使用vue2.0开发的开眼h5实现

最近一直在学习vuejs,手痒之余决定使用vuejs做一些东西

正好一直觉得开眼APP的风格很惹人喜欢,所以决定用vuejs仿写一个简单的h5的开眼实现

项目演示:http://douni.one/eyepetizer

TODO

  • 视频列表

  • 视频详情 ✅

项目构建

首先全局安装vue-cli,几个简单的步骤就可以帮助你快速构建一个vue项目。

npm install -g vue-cli

然后,利用vue-cli构建一个vue项目,并安装项目依赖

vue init webpack eyepetizer
cd eyepetizer & npm install

生成修改后的项目文件如下

├── build //webpack基本配置文件
├── config //配置文件相关
├── dist //build生成后的文件相关
│
├── src
│   ├── assets //项目使用scss资源
│   │   └── scss
│   ├── components //组件相关
│   ├── lib //api或其他需要引用的lib
│   ├── router //router相关
│   └── store //vuex store相关
│
├── static //项目静态文件
└── test //测试文件

项目配置与开发

项目中使用了sass vue-router vuex querystring等库,先安装相关依赖包

npm install sass-loader vuex style-loader node-sass moment css-loader axios file-loader querystring vue-router --save-dev

然后在基本页面实现并配置相关路由:

import Vue from 'vue';
import Router from 'vue-router';

import Hello from 'components/Hello';
import Detail from 'components/Detail';

Vue.use(Router);

export default new Router({
  scrollBehavior: () => ({ y: 0 }),
  routes: [
    {
      path: '/',
      name: 'Hello',
      component: Hello,
    },
    {
      path: '/detail/:vid',
      name: 'Detail',
      component: Detail,
    },
  ],
});

其中hello为页面首页,最终会实现为视频列表页面,目前先说视频详情页面:

API:

# 获取视频详情
http://baobab.wandoujia.com/api/v1/video/14416

# 获取关联视频
http://baobab.wandoujia.com/api/v1/video/related/14416?num=5

# 获取当前视频评论
http://baobab.wandoujia.com/api/v1/replies/video?id=14416&num=5

Store:
主要包含:state、action、getters、mutations
在组件method中通过触发dispatch来修改state

fetchData() {
  const VID = this.$route.params.vid;
  if (!VID) {
    this.$router.go('/');
  }
  this.$store.dispatch('getVideoInfo', { VID });
  this.$store.dispatch('getRelateVideoList', { VID });
  this.$store.dispatch('getRepliesVideoList', { VID });
}

将state中的对象通过mapGetters映射给自定义变量:

computed:{
  ...mapGetters({
    video: 'videoInfo',
    videoList: 'relateList',
    replyList: 'repliesList',
  }),
  v() {
    /* eslint-disable */
    const _v = this.video;
    return {
      title: _v.title,
      desc: _v.description,
      cat: _v.category,
      tags: _v.tags,
      url: _v.playUrl,
      time: _v.time,
      cover: {
        backgroundImage: `url(${_v.coverForDetail})`,
      },
    };
  },
}

然后在组件中调用:

<div class="vue-meta-positioner">
  <div class="video-meta">
    <h1>{{v.title}}</h1>
    <div class="divider divider-short"></div>
    <p>{{v.cat}} / {{v.time}}</p>
    <p class="desciption">
      {{v.desc}}
    </p>
  </div>
</div>

最终效果:

Douni.one

部署项目

执行命令

npm run build

然后会生成一个dist文件夹,该文件夹中就是我们可以用来发布的代码

我将生成的项目部署到了GitHub pages和coding pages,其中国内解析走coding,而国外解析会解析到GitHub

具体项目演示地址:http://douni.one/eyepetizer

项目源码地址:
Github源码: https://github.com/virgoone/eyepetizer/
Coding源码: https://coding.net/u/koyasite/p/eyepetizer/

~未完待续

原文链接:http://blog.marryto.me/vuejs-eyepetizer/

【资源说明】 基于vue2和vant-ui构建的前端H5商城源码+项目说明+在线预览.zip基于vue2和vant-ui构建的前端H5商城源码+项目说明+在线预览.zip 在线预览:http://swqjuelian.github.io 改进和优化大致内容如下: 1. 首页:下拉刷新、商品item一键加收藏、加购物车、分享、图片懒加载 2. 商品详情页:增加van的SKU选择面板 3. 分类:图片懒加载、空分类van-empty 4. 搜索页面:支持上拉加载更多数据(van的list组件运用)、支持价格排序(只有价格排序接口...) 5. 购物车:SKU项左滑可一键收藏和删除、商品标签显示。 6. 结算页:添加支付宝、微信支付方式、优惠卷选择组件、收货地址编辑。 7. 提供商品收藏功能:本地localstroage保存数据、支持左滑删除收藏。 8. 提供收货地址列表、收货地址编辑、新增收货地址。 9. 个人心:添加待评价快捷按钮。 10. 支持评价商品,针对一个订单的某个SKU分别评价(模仿京东和淘宝) 11. 提供确认收货、取消订单功能。 12. 订单页允许快捷重新将商品加入到购物车(模仿京东和淘宝)。 13. 细节:各个组件一些CSS样式调节(主要是模仿一下京东和淘宝、会额外添加一些按钮图标之类的) 14. keep-alive 缓存首页和分类页。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值