Flask 是一個 Python 的微型 Web 框架,而 Vue 則是一個流行的 JavaScript 前端框架。在構建現代化 Web 應用時,常常會同時使用這兩個框架,用 Flask 進行后端開發,使用 Vue 進行前端開發。在整合 Flask 和 Vue 時,常常需要解決路由的問題。
Flask 的路由是如何定義的呢?通常在 Flask 中,我們使用裝飾器來定義路由,例如:
@app.route('/hello') def hello(): return 'Hello, World!'
這段代碼定義了一個名為 hello 的路由,當用戶訪問 /hello 時,返回 'Hello, World!'。
Vue 的路由又是如何定義的呢?在創建 Vue 應用時,我們通常會使用 Vue Router 來管理路由。例如:
const router = new VueRouter({ routes: [ { path: '/hello', component: Hello } ] })
這段代碼創建了一個名為 router 的路由,并定義了一個名為 Hello 的組件,當用戶訪問 /hello 時,顯示此組件。
那么,在整合 Flask 和 Vue 時,如何讓 Flask 和 Vue 的路由協同工作呢?通常的解決方案是在 Flask 中定義一個路由,將請求轉發至 Vue,由 Vue 的路由進行處理。例如,在 Flask 中定義一個名為 hello 的路由:
@app.route('/hello') def hello(): return render_template('index.html')
這段代碼返回名為 index.html 的模板,該模板包含 Vue 代碼,自動加載 Vue 應用。在 Vue 中,我們定義一個名為 router 的路由,并使用 mode: 'history' 模式,以便在瀏覽器歷史記錄中保留良好的 URL:
const router = new VueRouter({ mode: 'history', routes: [ { path: '/hello', component: Hello } ] })
這樣,當用戶訪問 /hello 時,Flask 會將請求轉發至 index.html,然后 Vue 的路由會將其處理,最終渲染 Hello 組件。