前端模組總結

2021-09-10 07:28:22 字數 2101 閱讀 5413

技術:flask框架、sse和gevent

下面的示意圖可以看出客戶端,伺服器,wsgi,程式之間的關係。

gevent.pywsgi.wsgiserver() 初始化函式:

socket使用教程:

flask 的教程:

1、render_template

不僅能渲染靜態的html檔案,也能傳遞引數給html,使乙個html模板根據引數的不同顯示不同的內容,這是因為flask使用了jinja2這個模板引擎。要使用模板,在render_template引數中以key=value形式傳入變數,在html中使用}來顯示傳入的變數,例如:

# 檢視函式

def index():

return render_template('index.html', contents='this is index page')

# html

瀏覽器顯示的結果與上文是一樣的。我們還可以直接把乙個類的例項傳遞過去,並在模板中訪問類的屬性,例如假設乙個類物件objab屬性,關鍵部分的**如下:

# 檢視函式中

return render_template('index.html', object=obj)

...# html中

a: }

b: }

傳入乙個字典也可以,並且在模板中既可以用dict[key],也可以用dict.key

使用過濾器,可以在html中對傳入的變數進行處理,其格式是},例如將前文的}修改為},瀏覽器顯示的內容就變成了:

所以我們可以很容易就理解,過濾器其實就是以變數為引數的函式,返回處理後的結果,在後端一樣可以先用字串物件的upper()函式處理好再傳遞給模板,效果是完全一樣的。jinja2自帶了一些過濾器,例如length/reverse/lower等等 ,並且我們也可以自己按照需求自定義過濾器,模板還支援}這樣的操作。想要深入了解的話,可以搜尋jinja2過濾器去進一步學習。

模板中還可以使用if elsefor in控制語句,與變數使用}不同,控制語句要放在裡,例如前文的contents傳入乙個list:

contents=[i for i in range(10)]
html中**如下:

使用for遍歷contents的內容,並用}顯示出來,同時還用加了乙個注釋,還要注意需要使用來提示迴圈區域的結束,因為html不像python那樣通過縮進來判斷迴圈的區域,if也是同理。瀏覽器顯示結果:

最後forif結合使用:

}是偶數

}是奇數

結果如下(只是演示一下,不要吐槽排版和美觀):

前端模組化方案總結

js設計之初,是用來進行表單驗證等工作的,所以那個年代的js 量相當少,邏輯也是比較簡單的。但是隨著cpu 瀏覽器效能的大幅度提公升,js從乙個簡單的驗證器一躍成為當前最為流行的程式語言之一。隨之而來的是前端 量的迅速膨脹,邏輯也是變的相當複雜。如果我們還是像當初一樣,把變數和方法寫在根作用於win...

前端模組化的一些總結

目前前端模組化規範比較多,有主張非同步載入的amd和cmd,還有同步載入的commonjs,還有es6實現的esm,等等 以後再有新知識再補充 這裡做一下總結 amd和cmd都使用非同步載入的方式,代表作如下 規範代表作 amdrequirejs cmdseajs 我個人比較喜歡seajs,用起來方...

前端程式設計題 模組

完成函式 createmodule,呼叫之後滿足如下要求 1 返回乙個物件 2 物件的 greeting 屬性值等於 str1,name 屬性值等於 str2 3 物件存在乙個 sayit 方法,該方法返回的字串為 greeting屬性值 name屬性值 解決 1 字面量模式 function cr...