FastAPI jinja2前后端不分離使用Vue+elementUI


FastAPI jinja2前后端不分離使用Vue+elementUI

最近寫了一個小站點,本來想用前后端分離寫的,但是感覺沒必要,小站點流量估計也不大,就直接用模版寫就ok了

還有就是用Vue腳手架的話,是SPA單頁面,很不利於SEO(部分言論說百度爬蟲會抓取js渲染后的頁面)。

但是我還是想用Vue,把Vue當成Jquery用,還要加上ElementUI一起。尤大也說過國外很多把Vue代替JQ的,畢竟數據驅動實在太舒服了。
參考知乎 https://www.zhihu.com/question/51949678
參考知乎 https://www.zhihu.com/question/51949678

修改語法沖突

參考鏈接:

我一開始本來是想修改Vue的模版語法的

var app = new Vue({
  el: "#app",
  delimiters: ["[[", "]]"],
  data: {
    message: "Hello Vue!"
  }
})

但是這樣做 就有些問題, 我使用ElementUI就有問題,所以不能這樣做。
直接修改jinja2的模版語法,網上都是flask的資料。

from fastapi.templating import Jinja2Templates

router = APIRouter()
templates = Jinja2Templates(directory="templates")

# 避免和vue語法沖突 修改jinja2模版語法標簽
templates.env.block_start_string = '(%'  # 修改塊開始符號
templates.env.block_end_string = '%)'  # 修改塊結束符號
templates.env.variable_start_string = '(('  # 修改變量開始符號
templates.env.variable_end_string = '))'  # 修改變量結束符號
templates.env.comment_start_string = '(#'  # 修改注釋開始符號
templates.env.comment_end_string = '#)'  # 修改注釋結束符號

@router.get("/")
async def index_view(request: Request):
    return templates.TemplateResponse(
        "index.html",
        {
            "request": request,
            "id": 666,
        }
    )

這樣改就好了,可以愉快的使用Vue+ElementUI + jinja2了,又想起當初 輝哥知乎上送我的 《Flask Web開發實戰》
在這里插入圖片描述

時間過得好快,一眨眼,而我還是那個小菜雞。

題外話 Vue 3.0 終於來了

https://github.com/vuejs/vue-next/releases/tag/v3.0.0

One Piece 學起來吧,又不能假裝看不見!

結語

現在FastAPI很多資料都不全,但是可以仿照着搜Flask的資料。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM