在Express的頁面模板中的變數的定義與使用總結

2021-07-27 09:36:26 字數 1488 閱讀 9056

最近在使用express框架中的ejs頁面模板趟了些許坑,僅以本文記錄總結。

本文簡述的均為ejs頁面模板。

ejs由是在node層呼叫response的render方法渲染出來的:

index.js:

var renderdata = ;

resp.render("/aaa/bbb/ccc", renderdata);

如上例,在ejs頁面中就可以直接使用變數a:

index.ejs:

<%= a %>
在ejs頁面中使用行內模板js**來定義變數:

index.ejs:

<% var a = 1; %>
還可以在ejs頁面行內js**中給locals物件新增屬性定義變數:

index.ejs:

<% locals.a = 1; %>
index.ejs:

<%= a %>
index.ejs:

<%= locals.a %>
使用方法1定義的變數(即在nodejs中定義),可以使用這兩種呼叫方法。

使用方法2定義的變數(即頁面內var定義),只能使用第一種呼叫方法,即頁面內直接寫變數名使用

使用方法3定義的變數(即頁面內locals定義),可以使用這兩種呼叫方法。

其他區別:使用在nodejs中和頁面locals中定義方法定義的變數,可以使用對locals物件遍歷,拿到所有使用者定義的變數。而使用頁面內var定義的變數,不能通過遍歷locals來獲取,也就是不知道使用者新建立了哪些變數。

結論:如在頁面模板中,盡可能使用locals.***的方式來定義變數,這樣定義的變數的通用性最高。

settings :
locals是express框架中提供的變數,用於在模板中定義,呼叫各種變數,同時也支援全域性變數,可以跨頁面在各個模板中均可呼叫訪問。

可以在任何ejs頁面中可以使用<%= config %>變數。

這個的resp是指express的use中介軟體的response物件:

可以通過對resp.locals.***設定值來實現在當前響應中

resp.locals["uid"] = "***";
resp.locals是響應範圍內的全域性資料,使用與在對某乙個response處理的各個階段共享的資料。適用於放置一些使用者配置型別的資料,如授權資訊,id等。

上述兩種全域性locals,不僅可以在頁面模板中使用,也可以在js**中使用。

有關resp.locals的詳細資訊:

Express框架中如何引用ejs模板引擎

1.如何在專案中安裝ejs模板引擎 express t ejs microblog 執行這個命令後繼續執行 cd microblog npm install 安裝專案的依賴屬性 發現安裝的模板引擎是jade,而不是ejs。原因是現在的版本已經沒有 t這個命令了,改為 express e microb...

Express中的身份認證

由於 cookie 是儲存在瀏覽器中的,而且瀏覽器也提供了讀寫 cookie 的 api,因此 cookie 很容易被偽造,不具有安全 性。因此不建議伺服器將重要的隱私資料,通過 cookie 的形式傳送給瀏覽器。注意 千萬不要使用 cookie 儲存重要且隱私的資料!比如使用者的身份資訊 密碼等。...

express在windows平台下的安裝

第一部分 安裝express 第一步 執行 npm install g express generator note 必須安裝這個,不然建立express專案的時候會提示express命令沒有找到 第二步 執行 npm install g express 第三步 執行 express v note ...