該項目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