├── static ├── .gitkeep └── favicon.ico ├── .eslintignore ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── logo ├── favicon.ico ├── logo_128.png ├── logo_144.png ├── logo_192.png ├── logo_256.png ├── logo_32.png ├── logo_48.png └── logo_96.png ├── screenshots ├── zan.gif ├── audits.png ├── auth1.gif ├── auth2.gif ├── auth3.gif ├── index.gif ├── post1.gif ├── post2.gif ├── post3.gif ├── post4.gif ├── qrCode.png └── comment.gif ├── dist └── static │ ├── favicon.ico │ ├── img │ └── match-bg.0f9a8d7.jpg │ └── js │ ├── runtime.8d5cdc40422a7d87f6bb.js │ ├── runtime.8d5cdc40422a7d87f6bb.js.map │ └── category.5c079b88067be1d2bbe9.js ├── src ├── assets │ └── imgs │ │ ├── css.png │ │ ├── html.png │ │ ├── react.png │ │ ├── vue.png │ │ ├── loading.gif │ │ ├── vue-big.jpg │ │ ├── javascript.png │ │ ├── match-bg.jpg │ │ └── react-big.jpg ├── components │ ├── TheFooter │ │ ├── imgs │ │ │ ├── home.svg │ │ │ ├── article.svg │ │ │ ├── desk.svg │ │ │ └── topic.svg │ │ └── TheFooter.vue │ ├── Comment │ │ ├── AddComment.vue │ │ ├── UpdateComment.vue │ │ ├── DeleteComment.vue │ │ ├── CommentForm.vue │ │ ├── CommentList.vue │ │ └── module.js │ ├── Size │ │ └── module.js │ ├── Post │ │ ├── SearchPost.vue │ │ ├── PostContent.vue │ │ ├── module.js │ │ ├── PostList.vue │ │ └── Post.vue │ ├── Alert │ │ ├── AlertWithLoading.vue │ │ ├── module.js │ │ ├── AlertWithButtonBox.vue │ │ ├── AlertWithText.vue │ │ └── AlertInner.vue │ ├── Home │ │ ├── Home.vue │ │ ├── HomeTopic.vue │ │ ├── HomeMenu.vue │ │ ├── HomePost.vue │ │ ├── HomeCategory.vue │ │ └── HomeBanner.vue │ ├── User │ │ ├── AuthSignFooter.vue │ │ ├── UserList.vue │ │ ├── AuthSign.vue │ │ ├── AuthVerificate.vue │ │ ├── UserMenuList.vue │ │ ├── AuthSigninByUsername.vue │ │ ├── AuthSigninByPhoneNumber.vue │ │ ├── UserDesk.vue │ │ ├── AuthSignup.vue │ │ └── module.js │ ├── Category │ │ ├── CategoryTopic.vue │ │ ├── module.js │ │ ├── Category.vue │ │ └── CategoryList.vue │ ├── TheHeader │ │ └── TheHeader.vue │ └── Like │ │ └── module.js ├── common │ ├── SVG │ │ ├── SVGHome.vue │ │ ├── SVGFilter.vue │ │ ├── SVGBack.vue │ │ ├── SVGContent.vue │ │ ├── SVGClear.vue │ │ ├── SVGUser.vue │ │ ├── SVGAdd.vue │ │ ├── SVGComment.vue │ │ ├── SVGExit.vue │ │ ├── SVGVisibility.vue │ │ ├── SVGSearch.vue │ │ ├── SVGRefresh.vue │ │ ├── SVGLike.vue │ │ ├── SVGVisibilityOff.vue │ │ ├── SVGSet.vue │ │ └── SVGLogo.vue │ ├── BaseMask.vue │ ├── BaseTitle.vue │ ├── BaseAvatar.vue │ ├── BaseCard.vue │ ├── ButtonAntiColor.vue │ ├── BaseAdd.vue │ ├── BaseBack.vue │ ├── BaseButton.vue │ ├── BaseFullScreen.vue │ ├── BreadCrumb.vue │ ├── BaseTextArea.vue │ ├── BaseInput.vue │ ├── ButtonBox.vue │ ├── LinkageSelector.vue │ ├── BaseLoading.vue │ ├── InputWithTest.vue │ ├── AvatarWithAnimation.vue │ ├── InputPassword.vue │ ├── BaseArticle.vue │ └── BaseSearchBox.vue ├── utils │ ├── fnVarificate.js │ ├── async.js │ └── util.js ├── store │ └── index.js ├── entry-server.js ├── main.js ├── constants │ └── API.js ├── entry-client.js ├── router │ └── index.js └── App.vue ├── .editorconfig ├── .gitignore ├── .babelrc ├── .postcssrc.js ├── manifest.json ├── LICENSE ├── index.template.html ├── index.html ├── server.js ├── .eslintrc.js ├── package.json └── .stylelintrc /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /logo/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/favicon.ico -------------------------------------------------------------------------------- /logo/logo_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_128.png -------------------------------------------------------------------------------- /logo/logo_144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_144.png -------------------------------------------------------------------------------- /logo/logo_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_192.png -------------------------------------------------------------------------------- /logo/logo_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_256.png -------------------------------------------------------------------------------- /logo/logo_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_32.png -------------------------------------------------------------------------------- /logo/logo_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_48.png -------------------------------------------------------------------------------- /logo/logo_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/logo/logo_96.png -------------------------------------------------------------------------------- /screenshots/zan.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/zan.gif -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /screenshots/audits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/audits.png -------------------------------------------------------------------------------- /screenshots/auth1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/auth1.gif -------------------------------------------------------------------------------- /screenshots/auth2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/auth2.gif -------------------------------------------------------------------------------- /screenshots/auth3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/auth3.gif -------------------------------------------------------------------------------- /screenshots/index.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/index.gif -------------------------------------------------------------------------------- /screenshots/post1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/post1.gif -------------------------------------------------------------------------------- /screenshots/post2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/post2.gif -------------------------------------------------------------------------------- /screenshots/post3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/post3.gif -------------------------------------------------------------------------------- /screenshots/post4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/post4.gif -------------------------------------------------------------------------------- /screenshots/qrCode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/qrCode.png -------------------------------------------------------------------------------- /dist/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/dist/static/favicon.ico -------------------------------------------------------------------------------- /screenshots/comment.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/screenshots/comment.gif -------------------------------------------------------------------------------- /src/assets/imgs/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/css.png -------------------------------------------------------------------------------- /src/assets/imgs/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/html.png -------------------------------------------------------------------------------- /src/assets/imgs/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/react.png -------------------------------------------------------------------------------- /src/assets/imgs/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/vue.png -------------------------------------------------------------------------------- /src/assets/imgs/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/loading.gif -------------------------------------------------------------------------------- /src/assets/imgs/vue-big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/vue-big.jpg -------------------------------------------------------------------------------- /src/assets/imgs/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/javascript.png -------------------------------------------------------------------------------- /src/assets/imgs/match-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/match-bg.jpg -------------------------------------------------------------------------------- /src/assets/imgs/react-big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/src/assets/imgs/react-big.jpg -------------------------------------------------------------------------------- /dist/static/img/match-bg.0f9a8d7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/littlematch0123/blog-client/HEAD/dist/static/img/match-bg.0f9a8d7.jpg -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | ecosystem.json 7 | # Editor directories and files 8 | .idea 9 | .vscode 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | -------------------------------------------------------------------------------- /src/components/TheFooter/imgs/home.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/components/Comment/AddComment.vue: -------------------------------------------------------------------------------- 1 | 4 | 13 | -------------------------------------------------------------------------------- /src/common/SVG/SVGHome.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/components/Comment/UpdateComment.vue: -------------------------------------------------------------------------------- 1 | 4 | 13 | -------------------------------------------------------------------------------- /src/common/BaseMask.vue: -------------------------------------------------------------------------------- 1 | 4 | 14 | -------------------------------------------------------------------------------- /src/common/SVG/SVGFilter.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /src/common/SVG/SVGBack.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "postcss-cssnext": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/components/TheFooter/imgs/article.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/common/SVG/SVGContent.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/components/Size/module.js: -------------------------------------------------------------------------------- 1 | export const SET_HEIGHT = 'SET_HEIGHT' 2 | 3 | const size = { 4 | state: { 5 | height: '' 6 | }, 7 | mutations: { 8 | /* 保存高度信息 */ 9 | [SET_HEIGHT](state, payload) { 10 | state.height = payload.height 11 | } 12 | } 13 | } 14 | export default size 15 | -------------------------------------------------------------------------------- /src/components/TheFooter/imgs/desk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/common/SVG/SVGClear.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/BaseTitle.vue: -------------------------------------------------------------------------------- 1 | 4 | 15 | -------------------------------------------------------------------------------- /src/common/SVG/SVGUser.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/SVG/SVGAdd.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/SVG/SVGComment.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/BaseAvatar.vue: -------------------------------------------------------------------------------- 1 | 4 | 17 | -------------------------------------------------------------------------------- /src/components/Post/SearchPost.vue: -------------------------------------------------------------------------------- 1 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /src/common/SVG/SVGExit.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/components/TheFooter/imgs/topic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/common/SVG/SVGVisibility.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/SVG/SVGSearch.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/common/BaseCard.vue: -------------------------------------------------------------------------------- 1 | 4 | 16 | -------------------------------------------------------------------------------- /src/common/SVG/SVGRefresh.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/common/ButtonAntiColor.vue: -------------------------------------------------------------------------------- 1 | 4 | 13 | 22 | -------------------------------------------------------------------------------- /src/common/BaseAdd.vue: -------------------------------------------------------------------------------- 1 | 6 | 15 | 26 | -------------------------------------------------------------------------------- /src/common/BaseBack.vue: -------------------------------------------------------------------------------- 1 | 6 | 15 | 27 | -------------------------------------------------------------------------------- /src/common/BaseButton.vue: -------------------------------------------------------------------------------- 1 | 4 | 23 | -------------------------------------------------------------------------------- /src/common/BaseFullScreen.vue: -------------------------------------------------------------------------------- 1 | 4 | 13 | 24 | -------------------------------------------------------------------------------- /src/utils/fnVarificate.js: -------------------------------------------------------------------------------- 1 | // 检测是否为空 2 | export const isEmpty = val => String(val).match(/^$/) 3 | 4 | // 检测手机号 5 | export const isPhoneNumber = val => !!String(val).match(/^(13\d|14[579]|15[0-35-9]|17[0135-8]|18\d)\d{8}$/) 6 | 7 | // 检测一个汉字 8 | export const isOneChineseCharacter = val => !!String(val).match(/^[\u4e00-\u9fa5]$/) 9 | 10 | // 检测字符长度为1-20位 11 | export const isLengthElt20 = val => !!String(val).match(/^.{1,20}$/) 12 | 13 | // 检测是否为6位数字 14 | export const isSixDigits = val => !!String(val).match(/^\d{6}$/) 15 | -------------------------------------------------------------------------------- /src/components/Alert/AlertWithLoading.vue: -------------------------------------------------------------------------------- 1 | 7 | 18 | 25 | -------------------------------------------------------------------------------- /src/common/SVG/SVGLike.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/components/Home/Home.vue: -------------------------------------------------------------------------------- 1 | 10 | 27 | -------------------------------------------------------------------------------- /src/components/User/AuthSignFooter.vue: -------------------------------------------------------------------------------- 1 | 6 | 19 | 25 | -------------------------------------------------------------------------------- /src/common/BreadCrumb.vue: -------------------------------------------------------------------------------- 1 | 6 | 13 | 34 | -------------------------------------------------------------------------------- /src/common/BaseTextArea.vue: -------------------------------------------------------------------------------- 1 |