使用Vue2
和Flask
建立前後端分離的RESTful 個人部落格。
關於該專案的部分說明可在此處找到About IdealYard,如果沒有找到需要的內容,請郵件或Issues 交流;
該部落格僅用於學習原理,前端頁面並未實現響應式佈局,暫時也沒有精力去實現,博客內容也沒有時間去打理。關於日常的記錄部落格主要在別院牧會中更新。
如果你是Flask 初學者,推薦一本國人書籍給大家《Flask Web開發實戰:入門、進階與原理解析》,本人也是該書的閱讀者與受益者。同時建議多去這個網站看看:HelloFlask - Flask資源集合地
由於伺服器到期,本部落格暫無演示功能,如果有同學部署上線並可以提供演示鏈接,則非常感謝。暫時請點擊下方連結觀看簡單的功能演示。 使用Vue 和Flask 搭建前後端分離的RESTful 個人部落格功能展示_嗶哩嗶哩(゜-゜)つロ乾杯~-bilibili
由於這裡提到的原因,Flask-RESTful 已經不是一個很好的選擇,可能flask-restx 和Apiflask <國人開發>(注意:由於本框架正在活躍開發期內,使用時請慎重評估) 是一個更好的替代品。如果需要學習,也建議遷移到維護更積極的擴充上面去。
注意區分擴充和框架的區別,請參閱:請不要把Flask 和FastAPI 放到一起比較| 李輝
既然「FastAPI 應該和基於Flask 的Web API 框架比較」,那麼適當的比較物件有哪些? Flask-RESTX、Flask-Rebar、flask-apispec、flask-smorest、Flask-RESTful、APIFairy 這些雖然試圖做成框架,但在具體實作上仍然是Flask 擴充。
注意
如非必要,請謹慎考慮是否加入!有部分同學加入後一句話不說又退群,這樣申請加群然後又退群的操作會對我造成不必要的打擾。
3.6+
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
或者
[root@python] # mysql --version
mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1
開發模式資料庫: iyblog_dev
,可以在此修改配置
CREATE USER ' USERNAME '@ ' localhost ' IDENTIFIED BY ' PASSWORD ' ;
-- 如果需要支持emoji,则设置utf8mb4编码。否则使用utf-8编码即可
CREATE DATABASE DATABASENAME CHARSET = utf8mb4;
grant all privileges on DATABASENAME. * to USERNAME@localhost identified by ' PASSWORD ' ;
flush privileges;
進入目前目錄之後,先透過pip安裝pipenv管理包
pip install pipenv [--user]
安裝Python依賴
pipenv install
配置環境變數
vi .flaskenv
編輯dot.env檔,配置環境變數並重新命名為.env
vi dot.env
mv dot.env .env # 参考 master 分支
node和npm/yarn的安裝和換源請網路搜尋教學自行完成。
前端部署部分是以npm
作為套件管理工具進行演示的,如果使用yarn
進行套件管理,請自行修改(你都使用yarn了,肯定不會找不到package.json
的。)
前端指令配置請參考front/package.json
中的scripts
章節。
npm install
front/config/dev.env.js
中後端請求的位址和連接埠為實際api位址npm run dev
cd front
prod
環境BASE_API
位址 // /idealyard/front/config/prod.env.js
module . exports = {
NODE_ENV : '"production"' ,
BASE_API : '"http://192.168.116.21:5000/api"' // TODO:修改为真实API地址
}
router
為history
模式 // path: front/src/router/index.js:16
const router = new VueRouter ( {
// https://router.vuejs.org/zh/guide/essentials/history-mode.html#html5-history-%E6%A8%A1%E5%BC%8F
// mode: 'history',
routes : [ ]
} )
npm run build
請參閱document/deploy.md
檔案以了解更多。
pass
因為時間關係,還有一些問題沒有解決,詳見此處如果有同學需要PR
,也可以參考此處已知未解決問題和bug
單。
與其在別處仰望,不如在這裡並肩。 開發模式配置及說明請參閱更多文檔
目錄結構和代碼量統計參考此處
感謝G 小姐@Sabiner的鼓勵才會產生動手寫個人部落格的想法。一切緣起,都要從丘處機經過牛家村的那個下午說起…
同時感謝@LeiWong在開發中遇到問題幫助尋找bug
並解決問題時付出的時間。
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give. orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
一個人應該能夠換尿布, 策劃戰爭, 殺豬, 開船, 設計房子, 寫十四行詩, 結算賬戶, 砌牆, 接脫臼的骨頭, 安慰瀕死的人, 服從命令, 發布命令, 攜手合作, 獨立行動, 解數學方程, 分析新問題, 鏟糞, 電腦編程, 做出可口的飯, 善打架, 勇敢地死去。 只有昆蟲才囿於一門。
-- 羅伯特·安森·海因萊因《時間足夠你愛》