vue低仿知乎日报

作者: xujingguo | 来源:发表于2017-04-25 22:11 被阅读804次

概述

一个基于vue的仿知乎日报的前端项目。

关于知乎日报:

知乎日报是一款拥有千万用户的资讯类客户端,每日提供来自知乎社区的精选问答,还有国内一流媒体的专栏特稿。

主要功能

每天更新好文章,包括权威的时事解读、有趣的生活建议
  更符合用户口味的「主题日报」,覆盖电影、财经、设计、体育等领域
  长评优先展示
  离线下载功能,及时缓存近期的 30 篇文章
  更多贴心小细节:多图及长文预警;支持一键分享收藏;夜间模式

安装

# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

技术栈

vue

vuex

vue-router

axios

mint-ui

在线演示

demo

github地址

个人博客地址

细节

API:

感谢Xiao Liang提供的API,所有 API 均由 知乎(Zhihu.Inc)提供。

跨域问题

由于浏览器的同源策略,不允许进行跨域请求,所以首先解决的就是跨域问题,以前采用的是开发时配置/config/index.js下的proxyTable选项,实际部署时采用nodejs转发,这次为了方便,采用了第三方APIJsonBird进行转发,可以避免跨域的问题,返回的是json对象。

轮播:

知乎日报在首页有5个top_stories,采用的是轮播方式展现出来的,为了实现轮播,采用的mint-uiswipe组件,不过在使用的时候折磨了很久,最后发现原因是该组件没有设置默认的高度,需要手动设置,如果不设置,就什么都显示不出来。。。(尴尬。。。)

刷新

采用的同样是mint-ui下的组件,规定聚页面底部的距离阈值,小于阈值就触发自定义事件。

路由

vue-router的配置文件

import Vue from 'vue'
import Router from 'vue-router'
import showContent from '@/components/showContent'
import detail from '@/components/detail'
import message from '@/components/message'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/show',         //显示新闻列表
      name: 'showContent',
      component: showContent
    },
    {
        path: '/detail',   //显示详细信息
        name: 'detail',
        component: detail
    },
    {
      path: '/message',   //消息页面
      name: 'message',
      component: message
    }
  ]
})

状态管理

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
    state:{
        id: 9377231,      //文章id
        response: '',    
        top_stories: [],  //标题文章
        stories: '',     //普通文章
        date: 20170425  //日期
    },

    mutations: {
    },
    actions: {

    },

})
export default store

防盗链

知乎在图片做了防盗链处理,只需要在header中加入

<meta name="referrer" content="never">

即可解决

运行截图

index.png detail.png message.png

文件结构

.
├── build
├── config
│   ├── dev.env.js
│   ├── index.js
│   └── prod.env.js
├── dist
│   ├── index.html
│   └── static
│       ├── css
│       ├── img
│       └── js
├── index.html
├── node_modules
├── package.json
├── README.md
├── src
│   ├── App.vue
│   ├── assets
│   ├── components            //组件文件夹
│   │   ├── detailHeader.vue      //详细信息的头部组件
│   │   ├── detail.vue            //详细信息组件
│   │   ├── indexHeader.vue       //首页组件头部
│   │   ├── messageHeader.vue     //消息页面的头部组件
│   │   ├── message.vue           //消息页面组件
│   │   └── showContent.vue       //首页显示组件
│   ├── main.js
│   ├── router
│   │   └── index.js    //vue-router的配置文件
│   └── store
│       └── index.js    //vuex的配置文件

13 directories, 41 files

相关文章

  • vue低仿知乎日报

    概述 一个基于vue的仿知乎日报的前端项目。 关于知乎日报: 知乎日报是一款拥有千万用户的资讯类客户端,每日提供来...

  • Flutter入门实战—高仿知乎日报

    Flutter版高仿知乎日报 高仿知乎日报,UI基本和Android端的知乎日报一致。新手小白的练习demo,代码...

  • Vue2.0—仿知乎日报总结

    Vue-News 一个基于vue全家桶开发的仿知乎日报单页应用 项目github地址:项目源码 项目在线地址:在线...

  • VUE前端框架

    Vue 入门实战项目——知乎日报 这是一个基于 Vue 全家桶开发的知乎日报 WebApp,页面样式主要参考 iO...

  • 奇怪的bug:解决 vue-cli中 proxyTable 配置

    问题起源于最近打算用vue写个单页应用-知乎日报,因为知乎日报的api比较成熟,而且自己也是知乎日报的重度使用者。...

  • 仿写知乎日报

    一直想写点什么,可又不知道从什么开始写。新的一年开始了,想想总要有个好得开头吧,折腾了俩天总算是把自己的博客弄了出...

  • Swift --- 仿知乎日报

    学习流程:1.创建工程2.安装cocoapods3.添加第三方库4.创建工程目录:viewController 、...

  • 仿知乎日报2.64

    ZHDaily 项目地址 一个仿知乎日报2.64版本的个人开源项目,项目采用MVP模式,基于RxJava+RxBu...

  • Retrofit2.x + rxjava2.x +mvp 大

    原项目地址:高仿知乎日报 Material Design + MVP + RxJava + Retrofit fo...

  • 高仿知乎日报(RxJava + Retrofit + Glide

    项目说明 该项目是一个高仿的知乎日报客户端,架构采用 MVP 的设计模式,图片素材均来自APP知乎日报,网络请求使...

网友评论

本文标题:vue低仿知乎日报

本文链接:https://www.haomeiwen.com/subject/ipsbzttx.html