基于Vue+express的博客項目

一個前端基于Vue2.0全家桶,后端基于Express+Mongodb的前后端分離博客。前端界面使用了flexbox+rem布局,后端界面使用了element ui。本項目可以作為一個前端進(jìn)階項目,從前端flexbox布局到前端框架的使用,再到后端以及數(shù)據(jù)庫,是一個打通前后端流程的一個項目。由于最近剛換了域名,正在備案中,所以目前沒有線上演示,不過可以看一下下面的動態(tài)圖特效。

特點(diǎn)

  • 支持 MarkDown 編輯
  • 支持代碼高亮
  • 支持移動端瀏覽

在線地址

功能展示展示

PC前臺博客演示

image

移動端前臺演示

image

后臺管理演示

image

若圖片無法顯示則點(diǎn)擊這里:pc前端功能展示 移動前端功能展示pc后端功能展示

前端工具

  • Vue2.0
  • Vue-Router
  • Vuex
  • axios
  • element ui

前端布局采用flexbox+rem布局,關(guān)于flexbox請閱讀一個完整的Flexbox指南以及這篇最新的理解Flexbox:你需要知道的一切

本項目還采用了手機(jī)端適配,關(guān)于移動端的學(xué)習(xí)資料請按照我下面羅列的資料按順序仔細(xì)閱讀。

  1. 移動端調(diào)試
  2. 介紹vieport
  3. 使用Flexible實(shí)現(xiàn)手淘H5頁面的終端適配

后端工具

  • express
  • mongodb(mongolass)

后端的管理界面我直接使用了element ui這個基于vue的組件庫,很強(qiáng)大.

目錄結(jié)構(gòu)

│  .babelrc
│  .editorconfig
│  .eslintignore
│  .eslintrc.js
│  .gitignore
│  index.html
│  package.json
│  README.md
│
├─build
│      build.js
│      check-versions.js
│      dev-client.js
│      dev-server.js
│      utils.js
│      webpack.base.conf.js
│      webpack.dev.conf.js
│      webpack.prod.conf.js
│
├─config
│      dev.env.js
│      index.js
│      prod.env.js
│      test.env.js
│
├─server                        后端文件夾
│  │  .env
│  │  app.js    后端入口
│  │
│  ├─api
│  │      index.js  后端api
│  │
│  ├─lib
│  │      mongo.js 數(shù)據(jù)庫
│  │
│  ├─middleware
│  │      checkToken.js
│  │      createToken.js
│  │
│  └─routes                 后端路由
│          admin.js
│          article.js
│          classify.js
│          index.js
│          login.js
│          reg.js
│
├─src       前端文件夾
│  │  App.vue
│  │  main.js   前端入口
│  │
│  ├─api    前端api
│  │      index.js
│  │
│  ├─assets
│  │  ├─css
│  │  │      commen.css
│  │  │      default.css
│  │  │      default0.css
│  │  │      highlight.css
│  │  │
│  │  ├─img
│  │  │      bg.jpg
│  │  │      bgm.jpg
│  │  │
│  │  └─js
│  │          commen.js
│  │          highlight.pack.js
│  │          hljs.js
│  │
│  ├─components
│  │  │  NotFound.vue
│  │  │
│  │  ├─backEnd             后端界面
│  │  │      Admin.vue
│  │  │      ArticleCreate.vue
│  │  │      ArticleEdit.vue
│  │  │      ArticleList.vue
│  │  │      ClassList.vue
│  │  │      Login.vue
│  │  │      Reg.vue
│  │  │
│  │  └─fronted             前端界面
│  │          About.vue
│  │          Article.vue
│  │          Front.vue
│  │          Home.vue
│  │          Tags.vue
│  │          vfooter.vue
│  │          vheader.vue
│  │
│  ├─routes             前端路由vue-router
│  │      index.js
│  │      routes.js
│  │
│  └─store             前端vuex
│      │  actions.js
│      │  index.js
│      │  MsgAlert.js
│      │  mutations.js
│      │  states.js
│      │  types.js

Step

環(huán)境

克隆遠(yuǎn)程庫

git clone https://github.com/elva2596/vueBlog.git

安裝前端依賴

npm install

全局安裝supervisor

npm install -g supervisor

啟動mongodb服務(wù)器

在你安裝的數(shù)據(jù)庫文件中的bin目錄中啟動

mongod

安裝后端依賴

進(jìn)入到server文件夾下,安裝后端依賴:npm install

啟動后端服務(wù)器

npm start

啟動前端項目

回到項目根目錄下運(yùn)行:npm run dev

生成發(fā)布

npm run build

Notice

  • 前后端啟動時的路徑不一樣,前端在項目根目錄,后端在servser根目錄,其實(shí)可以把后端分離出來。
  • 因?yàn)槭乔昂蠖朔蛛x項目,必然涉及到跨域,使用webpack的proxyTable,進(jìn)入到config文件夾的index.js,將proxyTable配置成:
    proxyTable: { '/api':{ target:'http://localhost:3009/api', changeOrigin:true, pathRewrite:{ '^/api':'' } } },
  • 推薦Robomongo作為數(shù)據(jù)庫的可視化管理工具
  • 推薦Postman作為驗(yàn)證restful API的工具,請參考這篇文章
  • 這里的主頁界面有個小小的bug,主頁只顯示每篇具體文章的摘要,在這里我取了一個巧,就是將從后端返回的數(shù)據(jù)經(jīng)過markdown解析以后,用了一個正則把第一個p標(biāo)簽以及其中的內(nèi)容給提取出來渲染到頁面。因此后端在添加文章的時候必須在編寫每篇文章的開頭寫一段話。因?yàn)楫吘惯@個博客只是一個第一版,后面我會把這個問題解決掉。

Todo

  • 移動端優(yōu)化,300ms
  • 添加評論功能
  • 密碼修改功能
  • 用戶權(quán)限分類

License

MIT

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容