(轉(zhuǎn))Flask MVVM 開發(fā)(vue.js)

Flask + Vue

文章來源:http://blog.csdn.net/kevin_qq/article/details/52871700#

Flask為輕量級Web后臺框架,Vue為輕量級網(wǎng)頁前臺框架,兩者配合,快速實(shí)現(xiàn)MVVM最合適不過了。

后臺--?Flask 處理M + C,實(shí)現(xiàn)數(shù)據(jù)Model化 + 路由、安全、邏輯控制。對用戶響應(yīng),返回用Jinjia渲染的HTML模板頁面,同時ajax 把數(shù)據(jù)傳給 Vue

前臺-- Vue處理 VM (ViewModel) ,用戶瀏覽器接收到 HTML模板和數(shù)據(jù)后,JavaScript(Vue)處理數(shù)據(jù),并按設(shè)計顯示

解決 Jinja2 {{ }}沖突

2016-10-30:

其實(shí)Vue內(nèi)部占位符{{ }},都是轉(zhuǎn)換成v-text指令的!

。

所以,最清晰簡單的實(shí)施方法:Vue內(nèi)部全部用 v-text,而Jinja2還是用 {{ }} 占位符,兩不相干。

后臺 --?Flask用Jinjia渲染HTML頁面,并且把數(shù)據(jù)ajax傳給 Vue;

前臺 -- 用戶瀏覽器接收到 HTML,Javascript(Vue)處理數(shù)據(jù),并按設(shè)計顯示

============================================

2016-10-20

Link。但還是會跟 Flask-Bootstrap的 {{ 沖突!

1

2app.jinja_env.variable_start_string='{{ '

app.jinja_env.variable_end_string=' }}'

最好的方案就是更改VUE的語法,在所有的項(xiàng)目中都是這樣定義的,寫在VUE代碼的前面即可,這樣代碼遷移也不會出問題

// ES6 模板字符串Vue.config.delimiters = ['${','}']// 修改文本插值的定界符。Vue.config.unsafeDelimiters = ['{!!','!!}']// 修改原生 HTML 插值的定界符。

Javascript 處理時間(類似 moment.js)

統(tǒng)一轉(zhuǎn)換成整形,Javascript是:1477888675755 -> 需要 /1000

1. 如果數(shù)據(jù)庫存儲的是UTC Datatime()類型,like "2016-10-31 04:35:44.244000", ? javascript:

2. 如果存儲是用的浮點(diǎn)數(shù),Python: time.time() -> 1477885001.011


完整自定義過濾器如下:(直接在HTML里使用 filter就行)


Vue封裝 Bootstrap

https://yuche.github.io/vue-strap/

vue.js+boostrap最佳實(shí)踐

https://yuche.github.io/vue-strap/

Flask

https://pypi.Python.org/pypi/Flask-Vue

Ref:

Vue.js 開發(fā)實(shí)踐:實(shí)現(xiàn)精巧的無限加載與分頁功能

Vue.js 實(shí)踐(2):實(shí)現(xiàn)多條件篩選、搜索、排序及分頁的表格功能

Vue.js 實(shí)踐(3):實(shí)現(xiàn)一個漂亮、靈活、可復(fù)用的提示組件

Font Awesome

完美的圖標(biāo)字體?只為Bootstrap設(shè)計http://fontawesome.io/examples/

TIP:

如果是 spinner,在中間如果加字符(比如?)的話,旋轉(zhuǎn)起來會偏一邊!


最后編輯于
?著作權(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)容