├── .browserslistrc ├── screenshot ├── q1.png ├── q2.png ├── q3.png ├── q4.png ├── q5.png ├── q6.png ├── q7.png ├── q8.png └── q9.png ├── src ├── assets │ ├── a.jpg │ ├── b.jpg │ ├── c.jpg │ └── logo.png ├── components │ ├── store │ │ ├── getters.js │ │ ├── state.js │ │ ├── mutationsType.js │ │ ├── index.js │ │ ├── const.js │ │ └── mutations.js │ ├── lib │ │ └── mui │ │ │ ├── fonts │ │ │ ├── mui.ttf │ │ │ └── mui-icons-extra.ttf │ │ │ └── css │ │ │ ├── icons-extra.css │ │ │ └── mui.min.css │ ├── time │ │ └── time.js │ ├── sub │ │ ├── search.vue │ │ ├── cly.vue │ │ ├── sort.vue │ │ ├── Recommend.vue │ │ ├── comment.vue │ │ ├── reader.vue │ │ ├── Meiwen.vue │ │ └── moreBook.vue │ ├── tabbar │ │ ├── Classify.vue │ │ ├── Home.vue │ │ ├── Bookrack.vue │ │ └── Rank.vue │ ├── read │ │ ├── List.vue │ │ ├── User.vue │ │ ├── Search-list.vue │ │ ├── Catalogue.vue │ │ ├── Clylist.vue │ │ └── Read.vue │ ├── api │ │ └── api.js │ └── book │ │ └── Book.vue ├── font │ ├── fonts.css │ ├── fonts-user.js │ └── fonts.js ├── main.js ├── router.js └── App.vue ├── public ├── favicon.ico └── index.html ├── postcss.config.js ├── babel.config.js ├── .editorconfig ├── .gitignore ├── .eslintrc.js ├── package.json ├── vue.config.js └── README.md /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /screenshot/q1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q1.png -------------------------------------------------------------------------------- /screenshot/q2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q2.png -------------------------------------------------------------------------------- /screenshot/q3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q3.png -------------------------------------------------------------------------------- /screenshot/q4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q4.png -------------------------------------------------------------------------------- /screenshot/q5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q5.png -------------------------------------------------------------------------------- /screenshot/q6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q6.png -------------------------------------------------------------------------------- /screenshot/q7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q7.png -------------------------------------------------------------------------------- /screenshot/q8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q8.png -------------------------------------------------------------------------------- /screenshot/q9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/screenshot/q9.png -------------------------------------------------------------------------------- /src/assets/a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/assets/a.jpg -------------------------------------------------------------------------------- /src/assets/b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/assets/b.jpg -------------------------------------------------------------------------------- /src/assets/c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/assets/c.jpg -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/components/store/getters.js: -------------------------------------------------------------------------------- 1 | export const header = state => state.header 2 | export const book = state => state.book 3 | -------------------------------------------------------------------------------- /src/components/lib/mui/fonts/mui.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/components/lib/mui/fonts/mui.ttf -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ], 5 | ignore: ['./src/components/lib/mui/js/mui.min.js'] 6 | } 7 | -------------------------------------------------------------------------------- /src/components/lib/mui/fonts/mui-icons-extra.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zgsnbtl/vue-guapi/HEAD/src/components/lib/mui/fonts/mui-icons-extra.ttf -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | -------------------------------------------------------------------------------- /src/components/store/state.js: -------------------------------------------------------------------------------- 1 | const state = { 2 | header: { 3 | headType: '', 4 | headTitle: '' 5 | }, 6 | calBook: null, // 书籍数据 7 | bookrack: [], // 书架数据 8 | userColor: '#c4b395', 9 | userFonts: 12 10 | 11 | } 12 | export default state 13 | -------------------------------------------------------------------------------- /src/components/store/mutationsType.js: -------------------------------------------------------------------------------- 1 | export const SET_HEADER_INFO = 'SET_HEADER_INFO' 2 | export const SET_BOOK = 'SET_BOOK' 3 | export const BOOK_UPDATE = 'BOOK_UPDATE' 4 | export const BOOK_userColor = 'BOOK_userColor' 5 | export const BOOK_userFonts = 'BOOK_userFonts' 6 | // 页面类型 7 | export const BOOK_PAGE = 'BOOK' 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /src/font/fonts.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | width: 1em; 3 | height: 1em; 4 | vertical-align: -0.15em; 5 | fill: currentColor; 6 | overflow: hidden; 7 | font-size:22px; 8 | } 9 | .gaoliang{ 10 | color: #26A2FF; 11 | } 12 | *{margin: 0;padding: 0;} 13 | body{ 14 | background-color: #fff; 15 | } -------------------------------------------------------------------------------- /src/components/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import state from './state' 4 | import mutations from './mutations' 5 | import mutationsType from './mutationsType' 6 | import getters from './getters' 7 | Vue.use(Vuex) 8 | 9 | export default new Vuex.Store({ 10 | state, 11 | mutations, 12 | mutationsType, 13 | getters 14 | }) 15 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | 'extends': [ 7 | 'plugin:vue/essential', 8 | '@vue/standard' 9 | ], 10 | rules: { 11 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 13 | }, 14 | parserOptions: { 15 | parser: 'babel-eslint' 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/components/store/const.js: -------------------------------------------------------------------------------- 1 | // 存储localStorage 2 | export const setStore = (name, content) => { 3 | if (!name) return 4 | if (typeof content !== 'string') { 5 | content = JSON.stringify(content) 6 | } 7 | window.localStorage.setItem(name, content) 8 | } 9 | 10 | // 获取localStorage 11 | export const getStore = name => { 12 | if (!name) return 13 | return window.localStorage.getItem(name) 14 | } 15 | 16 | // 删除localStorage 17 | export const removeStore = name => { 18 | if (!name) return 19 | window.localStorage.removeItem(name) 20 | } 21 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |{{ items.title }}
6 |{{ item.title }}
7 |{{ item.author }}
8 |
6 | 同类推荐
7 |
6 | 这个少年不太冷
9 |此项目为学习vue写的因为平时喜欢看小说所以写这个比较有意思些
15 |16 | 使用技术栈及ui:vue vue-cli3 vue-x vue-router axios mint-ui mui 17 | javaScript es6 sass 18 |
19 |本地服务器跨域在vue-config.js中配置代理接口
20 |生产环境使用nginx反向代理即可
21 |api接口为追书神器接口.
22 |后续会优化整理一些思路和难点
23 |阅读时小说需要vip时点击换源即可免费阅读
24 |25 | 查看接口点击这里 29 |
30 |31 | 项目源码已上传至 32 | GitHub 33 |
34 |浏览地址39.96.55.152
35 |欢迎大家GitHub Star
36 |项目中一些bug见谅~…~
37 |热门评论
4 |21 | {{ item.author.nickname }}{{ item.updated | formatDate }} 23 |
24 |{{ item.title }}
25 |{{ item.content }}
26 |{{ item.title }}
14 |连载至:{{ item.lastChapter }}
27 |{{ item.shortIntro }}
24 |{{ item.isSerial ? "连载中" : "完结" }}
27 |{{ item.majorCate }}
28 |{{ item.minorCate }}
29 |30 | {{ 31 | item.latelyFollower > 1000 32 | ? parseInt(item.latelyFollower / 1000) + "k" 33 | : item.latelyFollower 34 | }}人气 36 |
37 |{{ item.shortIntro }}
32 |{{ item.isSerial ? "连载中" : "完结" }}
35 |{{ item.majorCate }}
36 |{{ item.cat || item.minorCate }}
37 |38 | {{ 39 | item.latelyFollower > 1000 40 | ? parseInt(item.latelyFollower / 1000) + "k" 41 | : item.latelyFollower 42 | }}人气 44 |
45 |10 | {{ books.author }} 11 | {{ books.cat }} 12 | {{ wordCount }}字 13 |
14 |15 | {{ books.isSerial ? "连载中" : "完结" }} 16 | {{ books.minorCateV2 }} 17 |
18 |追人气
29 |{{ latelyFollower }}
32 |读者留存率
37 |{{ books.retentionRatio }}%
40 |日更新字数/天
45 |{{ books.serializeWordCount }}
48 |{{ books.longIntro }}
54 | 55 |A-
34 |换源
35 |A+
36 |阅读上一章
39 |目录
40 |阅读下一章
41 |78 | 最后更新:{{ item.lastChapter }} 79 |
80 | 81 |