博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue-zhihu-daily知乎日报
阅读量:4086 次
发布时间:2019-05-25

本文共 3191 字,大约阅读时间需要 10 分钟。

这是一个基于Vue全家桶开发的知乎日报WebApp,页面样式主要参考iOS版知乎日报APP。https://github.com/cccyb/vue-zhihu-daily/blob/master/README.md

项目github地址:

如果觉得对您有帮助,您可以点右上角给个 star 支持一下,十分感谢!如果有问题,也欢迎提交 issue 一起探讨!

声明

『知乎』是 知乎. Inc 的注册商标。本软件与其代码非由知乎创作或维护。软件中所包含的信息与内容皆违反版权与知乎用户协议。本项目所有文字图片等稿件内容均由提供,获取与共享之行为或有侵犯知乎权益的嫌疑。若被告知需停止共享与使用,本人会及时删除整个项目。请您了解相关情况,并遵守知乎协议。

前言

前段时间抽空学习了Vue,并跟着慕课网的黄轶老师完成了第一个Vue小demo。通过这个小demo,对Vue的开发有了一个初步的认识,然而这个demo是跟着老师的视频敲的代码,所以为了更好的学习Vue,就萌生了完整的写一个复杂webApp的想法,有了想法,就开始干呗。

为什么是知乎日报呢?

  • 首先呢,知乎日报是一个完整的已经上线的APP,并且它的功能比较完善,但是页面还不是很复杂,比较适合新手练手。
  • 其次,由于开发的是前端项目,数据获取是一个比较恼火的问题,然而github上已经有大神给出了,这极大的方便的解决了数据的获取问题,我们只需关注前端,而不需关注后台数据。

技术栈

vue2 + vue-router + axios + vuex + vue-cli mint-ui + sass + flex + eslint

在线Demo

敬请期待...

功能

  •  首页
  •  首页滚动到底部加载更多
  •  查看新闻详情
  •  新闻详情页载入下一篇
  •  收藏新闻
  •  查看评论
  •  短评展开和收缩
  •  编写评论页(不能发送到后台)
  •  侧边栏
  •  查看指定主题新闻
  •  查看指定主题下的编辑列表
  •  查看某个编辑的个人信息
  •  查看收藏新闻

项目截图

首页

新闻详情页

评论查看页

编写评论页

主题页

编辑列表页

编辑个人详情页

收藏页

项目运行

# 克隆项目到本地git clone https://github.com/cccyb/vue-zhihu-daily.git# 切换到项目所在文件夹cd vue-zhihu-daily# 安装依赖npm install# 本地开发,开启服务器,浏览器访问 http://localhost:8088即可npm run dev# 构建生产npm run build

目录结构

.|-- build					// webpack配置文件|-- config					// 项目打包路径|-- dist					// 项目部署文件,放在服务器即可正常访问|-- src						// 源码目录|	|-- assets				// 资源目录|	|	|-- images			// 图片目录|	|	|-- sass			// sass目录|	|		|-- components		// 组件sass目录|	|		|-- pages		// 页面sass目录|	|-- components				// 组件|	|	|-- LongComment.vue		// 长评组件|	|	|-- NewsList.vue		// 新闻列表组件|	|	|-- NewsMenu.vue		// 新闻详情底部菜单组件|	|	|-- Share.vue			// 新闻详情分享弹框组件|	|	|-- ShortComment.vue		// 短评组件|	|	|-- Sidebar.vue			// 侧边栏组件|	|	|-- Swipe.vue			// 轮播图组件|	|-- pages				// 页面|	|	|-- Collect.vue			// 收藏页面|	|	|-- Comment.vue			// 评论页面|	|	|-- Editor.vue			// 查看编辑个人信息页面|	|	|-- EditorList.vue		// 编辑列表页面|	|	|-- Index.vue			// 首页|	|	|-- NewsDetail.vue		// 新闻详情页面|	|	|-- ThemeDetail.vue		// 主题页面|	|	|-- WriteCommnet.vue		// 编写评论页面|	|-- router|	|	|-- index.js			// 路由配置|	|-- store|	|	|-- index.js			// vuex配置|	|-- App.vue				// 页面入口文件|	|-- main.js				// 程序入口文件,加载各种公共组件|-- static					// 静态文件目录|	|-- css|	|	|-- animate.css			// 动画css|	|	|-- iconfont.css		// 图标字体css|	|	|-- icontont.ttf		// 图标字体ttf|	|	|-- iconfont.woff		// 图标字体woff|	|	|-- news_qa_auto.css		// 页面详情内容css|	|	|-- reset.css			// 统一浏览器样式css|-- .babelrc					// ES6语法编译配置|-- .editorconfig				// 代码编写规格配置|-- .eslintignore				// 忽略eslint检查文件配置|-- .eslint.js					// eslint配置文件|-- .gitattributes				// 修改项目在github显示类型配置文件|-- .gitignore					// git忽略上传文件|-- .postcssrc.js|-- index.html					// 入口html文件|-- package.json				// 项目及工具的依赖配置文件|-- README.md					// readme说明|-- yarn.lock					// yarn文件.

Todo

  •  启动欢迎页
  •  首页新闻时间分隔栏
  •  首页头部上滑颜色渐变效果
  •  首页下拉刷新
  •  消息页面
  •  设置页面
  •  个人信息页面
  •  离线
  •  夜间模式
  •  整体代码重构,性能优化
  •  图片懒加载
  •  页面切换动画
  •  手势侧滑功能
  •  vuex状态管理文件重构优化
  •  浏览器兼容性
  •  生产环境跨域问题
  •  流程跳转优化
  •  localStorage
  • ...

总结

1.知乎接口跨域问题

调用知乎API时遇到了跨域问题,但是知乎的接口好像不支持jsonp,谷歌一波发现可以使用vue-cli自带的config的proxyTable文件配置进行解决,配置非常简单:

proxyTable: { '/news/latest': {    target: 'http://news-at.zhihu.com/api/4',    changeOrigin: true,    pathRewrite: {      '^/news/latest': '/news/latest'    }  }}

这样就不会有跨域问题了,当然这只适用于开发环境。 想要在生产环境里解决跨域问题,可以选择使用后台服务器中转API来完成跨域,具体可以选择node或者nginx来解决。由于没有服务器,这个问题本人还在解决中。:joy:

2.图片防盗链问题

知乎API返回的数据中的图片都是存储在知乎服务器上的url地址,直接请求会返回403,所以需要进行一些处理,这里我采用了同学在的解决方案,使用进行缓存图片,并在需要使用图片url的地方进行相应的替换。

...

参考

感谢 整理的 

 By 

License

转载地址:http://useni.baihongyu.com/

你可能感兴趣的文章
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
查看>>
除了LwIP还有uIP
查看>>
《跟工程师学嵌入式开发》这本书最后的终极项目我反而觉得有说头
查看>>
博士的申请考核制
查看>>
那些硬件的初始化函数主要是在做些上什么?
查看>>
MAVLink学习之路05_MAVLink应用编程接口分析(也有讲STM32下的收发函数)
查看>>
找到了中文版的mavlink手册
查看>>
浅谈飞控开发的仿真功能
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
PX4+激光雷达在gazebo中仿真实现(古月居)
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
查看>>
现在来看,做个普罗米修斯的docker镜像对我而言并不难,对PX4仿真环境配置也熟悉了。
查看>>