该项目UI模仿今日头条,但我尽量地作了许多修改,我不是作UI设计的,如何还看得过去,右上角点个 "star" 支持一下吧🌹html
该项目包括移动端和native端,移动端共4个页面,native端共20个页面,涉及文章的分类、展现、阅读、推荐、搜索和用户的登陆、评论、收藏以及后台文章编辑等等,是一个完整的生态链。其复杂度不用说你们也能感觉到。若是这个项目能驾驭的了,你的Vue使用能力已经达到必定水平了,相信大部分公司的单页面应用也就不在话下。前端
vue二、vuex三、vue-router三、vue-awesome-swiper、vue-quill-editorvue
axios、mint-ui、flexible.js、IconFontnode
ES6/七、Stylus、ESlint、webpack三、webpack
若是对您有帮助,您能够点右上角 "Star"一下, 您的支持是我最大的动力!很是感谢!^_^ 🌹ios
或者您能够 "follow" 一下,我会不断开源更多的有趣实用的项目git
开发环境 macOS 10.12.六、Chrome 6一、 nodejs 8.4.0github
若有问题请直接在 Issues 中提,或者您发现问题并有很是好的解决方案,欢迎 PR 👍web
该项目是此开源系列的其中一个阶段,更多内容查看下方的最终目标算法
第二阶段:今日头条(移动端 & native,难度:困难) —— 仓库地址 —— 移动端演示地址, native端演示地址
第三阶段:头条号(pc端,难度:中等 ~ 困难) —— 仓库地址 —— 还在开发,敬请期待!(已实现核心功能)
一、请把项目里的mint-ui.common.js文件替换掉 node_modules/minit-ui/lib/mint-ui.common.js文件。主要优化下拉动做和左右滑动的体验。详细查看文章 饿了么mint-ui库loadmore组件的下拉问题
二、该项目使用vue-router的hash模式,项目里写了许多用来记录页面滚动条位置的代码,有点不优雅,其最终缘由都是为了能实现首页下拉和左右滑动切换栏目的功能。如需history模式的实例。请参考第一阶段和第三阶段的项目vue2-echo、vue2-health
三、native端某些代码在浏览器里是不能生效的,这些是用于手机app的,如:获取设备uuid、微信客户端登陆等。技术是利用cordova打包成app和使用cordova的一些插件。具体请查看cordova官网
四、若是运行项目是灰屏,那多是打开了app.vue文件beforeRouteEnter钩子的代码。这个主要是用于app须要保证加载完cordova插件才能进入项目。浏览器打开这段代码是进不到项目的。
五、关于后台文章管理,操做的都是真实后台数据,虽然没什么价值,但为了你们都能查看一个很真的数据信息,请勿随意捣乱原有的数据哈,能够新建任务去操做查看效果,谢谢啦。
web端demo请戳这里 (请使用chrome手机模式预览)
native端demo请戳这里(请使用chrome手机模式预览)
安装包请戳这里(目前只支持 Android)
├── news-app // native端项目
├── news-web // 移动端项目
├── screenshots // 项目截图
├── mint-ui.common.js // 修改以后的mint-ui源码文件
├── README.md // 项目介绍复制代码
├── build // 构建相关
├── config // 配置相关
├── src // 项目代码
│ ├── assets // 样式、图标等静态资源
│ ├── components // 全局公用组件
│ │ ├── banner.vue // banner组件
│ │ ├── commentItem.vue // 评论Item组件
│ │ ├── error.vue // 错误提示组件
│ │ ├── info.vue // listItem的列表信息组件
│ │ ├── listItem.vue // 文章List组件
│ │ ├── loading.vue // 加载提示组件
│ │ ├── myHeader.vue // 头部组件
│ │ ├── popuMenu.vue // 模态框组件
│ ├── config // 全局公用方法
│ │ ├── cache.js // 缓存方法
│ │ ├── directive.js // 指令方法
│ │ ├── fetch.js // 请求方法
│ ├── page
│ │ ├── detail
│ │ | ├── components
│ │ | | ├── article.vue // 文章组件
│ │ | | ├── recommend.vue // 推荐组件
│ │ | | ├── share.vue // 分享组件
│ │ | | ├── tags.vue // 标签组件
│ │ | ├── detail.vue // 详情页
│ │ ├── index
│ │ | ├── children
│ │ | | ├── channel.vue // 栏目页
│ │ | ├── components
│ │ | | ├── index_footer.vue // 首页底部组件
│ │ | | ├── index_header.vue // 首页头部组件
│ │ | | ├── pullContainer.vue // 下拉容器组件
│ │ | | ├── swiperContainer.vue // 滑动容器组件
│ │ | ├── index.vue // 首页
│ │ ├── search
│ │ | ├── search.vue // 搜索页
│ ├── router
│ │ ├── index.js // 路由配置
│ ├── store
│ │ ├── detail
│ │ | ├── index.js // 详情页store
│ │ ├── index
│ │ | ├── index.js // 首页store
│ │ ├── search
│ │ | ├── index.js // 搜索页store
│ │ ├── index.js // 全局store
│ ├── App.vue // 页面入口
│ └── main.js // 程序入口
├── static // 空文件夹,只做为github保留
├── .babelrc // babel-loader 配置
├── .eslintrc.js // eslint 配置项
├── .gitignore // git 忽略项
├── index.html // 入口html文件
└── package.json // package.json复制代码
├── build // 构建相关
├── config // 配置相关
├── src // 项目代码
│ ├── assets // 样式、图标等静态资源
│ ├── components // 全局公用组件
│ │ ├── banner.vue // banner组件
│ │ ├── commentItem.vue // 评论Item组件
│ │ ├── error.vue // 错误提示组件
│ │ ├── info.vue // listItem的列表信息组件
│ │ ├── listItem.vue // 文章List组件
│ │ ├── loading.vue // 加载提示组件
│ │ ├── myHeader.vue // 头部组件
│ │ ├── popuMenu.vue // 模态框组件
│ │ ├── publishItem.vue // 后台文章列表组件
│ │ ├── tool.vue // 评论工具栏组件
│ ├── config // 全局公用方法
│ │ ├── autoTextarea.js // textarea自动增长高度方法
│ │ ├── cache.js // 缓存方法
│ │ ├── cordova.js // cordova插件方法
│ │ ├── directive.js // 指令方法
│ │ ├── fetch.js // 请求方法
│ ├── page
│ │ ├── detail
│ │ | ├── children
│ │ | | ├── comment.vue // 评论页
│ │ | | ├── reply.vue // 回复页
│ │ | ├── components
│ │ | | ├── article.vue // 文章组件
│ │ | | ├── collect.vue // 收藏组件
│ │ | | ├── like.vue // 点赞组件
│ │ | | ├── recommend.vue // 推荐组件
│ │ | | ├── share.vue // 分享组件
│ │ | | ├── tags.vue // 标签组件
│ │ | ├── detail.vue // 详情页
│ │ ├── index
│ │ | ├── collect
│ │ | | ├── collect.vue // 收藏页
│ │ | ├── home
│ │ | | ├── children
│ │ | | | ├── channel.vue // 栏目页
│ │ | | ├── components
│ │ | | | ├── homeHeader.vue // 首页头部组件
│ │ | | | ├── pullContainer.vue // 下拉容器组件
│ │ | | | ├── swiperContainer.vue // 滑动容器组件
│ │ | | ├── home.vue // 主页
│ │ | ├── user
│ │ | | ├── children
│ │ | | | ├── health
│ │ | | | | ├── health.vue // 文章管理页
│ │ | | | | ├── preview.vue // 文章预览页
│ │ | | | | ├── publish.vue // 文章编辑页
│ │ | | | ├── feedBack.vue // 用户反馈页
│ │ | | | ├── myComment.vue // 个人评论页
│ │ | | | ├── myHistory.vue // 个人历史页
│ │ | | | ├── QRcode.vue // 应用分享页
│ │ | | ├── user.vue // 用户页
│ │ | ├── video
│ │ | | ├── video.vue // 视频页
│ │ | ├── index.vue // 首页
│ │ | ├── navBar.vue // 底部导航组件
│ │ ├── login
│ │ | ├── login.vue // 登陆页
│ │ ├── search
│ │ | ├── search.vue // 搜索页
│ ├── router
│ │ ├── index.js // 路由配置
│ ├── store
│ │ ├── collect // 收藏页store
│ │ ├── detail // 详情页store
│ │ ├── health // 文章管理store
│ │ ├── index // 首页store
│ │ ├── login // 登陆store
│ │ ├── search // 搜索页store
│ │ ├── user // 用户store
│ │ ├── video // 视频页store
│ │ ├── index.js // 全局store
│ ├── App.vue // 页面入口
│ └── main.js // 程序入口
├── static // 空文件夹,只做为github保留
├── .babelrc // babel-loader 配置
├── .eslintrc.js // eslint 配置项
├── .gitignore // git 忽略项
├── index.html // 入口html文件
└── package.json // package.json复制代码
# install dependencies
npm install
# serve with hot reload at localhost:8088
npm run dev
# build for production with minification
npm run build复制代码
欢迎热爱学习、忠于分享的朋友一块儿来交流
Copyright (c) 2017-present,uncleLian