首頁 web前端 js教程 將資料傳遞到 EJS 範本以及反之亦然 — 初學者指南

將資料傳遞到 EJS 範本以及反之亦然 — 初學者指南

Sep 14, 2024 pm 02:30 PM

嘿??‍♂️!如果您剛開始使用 EJS(嵌入式 JavaScript) 並且想知道如何在 伺服器EJS 模板 之間傳遞數據,那麼您來對地方了!我整整一周都在學習 EJS,我想分享我所學到的有關將數據傳遞到 EJS 以及如何使用數據的知識。


如何將資料從伺服器傳遞到 EJS 範本

因此,當您想要將資料從伺服器 (Node.js Express) 傳送到 EJS 範本時,這非常簡單。您只需使用 res.render() 方法,它允許您將資料從伺服器傳送到您的 .ejs 檔案。

具體操作方法如下:

res.render("ejs_file_name", { data });

在此範例中,我們正在渲染一個 EJS 檔案(例如 index.ejs)並將資料物件傳遞給範本。

然後,要在您的 EJS 範本中使用此資料,您只需像這樣存取它:

<%= data %>

這裡有一個快速細分:

  • res.render() 負責將資料傳送到範本。
  • EJS 中的 標籤是顯示傳遞過來的資料的地方。

只需確保兩個位置(在伺服器程式碼和 EJS 範本中)的資料名稱(如本例中的資料)相同。如果它們不匹配,事情就會變得很奇怪!


等等...如果沒有資料會發生什麼事?

這裡是個棘手的部分:EJS 在使用資料之前不會檢查資料是否存在。它只是使用數據,就好像數據始終存在一樣。因此,如果您嘗試存取一些不存在(或未正確傳遞)的數據,EJS 可能會拋出錯誤並使您的應用程式崩潰。當您剛開始時,這可能會非常令人沮喪!

Passing Data to EJS Templates and Vice-Versa — A Beginner

但是別擔心,有一個簡單的解決方法。您可以在嘗試使用資料之前檢查資料是否存在。您可以將資料包裝在 if 條件中,如下所示:

<% if (locals.data) { %>
  <%= data %>
<% } else { %>
  

No data available!

<% } %>

這樣,如果出現問題或資料未傳遞,您的應用程式就不會崩潰。相反,您可以顯示後備訊息或採取不同的操作。

專業提示:在使用範本之前務必檢查您的資料是否存在於範本中 - 這可以為您省去很多麻煩!


挑戰時間:將資料從 EJS 傳遞到伺服器

為了讓這個學習之旅變得有趣,我決定建立一個簡單的項目,將使用者的名字作為輸入,然後告訴他們名字中有多少個字元。很簡單,對吧?我是這樣做的:

  1. 取得輸入資料:
    我使用了一個 HTML 表單,該表單採用使用者的名字和姓氏。

  2. 傳送資料到伺服器:
    使用 POST,我將輸入資料傳送到伺服器,然後計算全名的字元數。

  3. 將處理後的資料傳回範本:
    我將字元計數傳遞回 EJS 模板以將其顯示在頁面上。

這是處理此問題的伺服器端程式碼:

app.post("/submit", (req, res) => {
  const charCnt = req.body["fName"].length + req.body["lName"].length;
  res.render("index.ejs", { charectercount: charCnt });
}); // I used body-parser to get the data from the form
  • req.body 從使用者輸入取得表單資料。
  • 我只是計算了名字和姓氏中的字元,並將該計數傳遞給 EJS 檔案。
  • EJS 模板隨後會顯示字元數。

請隨時在我的 GitHub 上查看完整程式碼:專案程式碼


簡而言之?

這是如何將資料傳遞到 EJS 範本並從客戶端獲取資料的快速總結! EJS 非常靈活,可以輕鬆地將 HTML 與 JavaScript 混合,學習如何有效管理資料傳遞將為您的專案帶來很多可能性。

以下是這篇文章的主要內容:

  • 使用 res.render() 將資料從伺服器傳遞到 EJS 模板。
  • 在範本中使用資料之前,請務必檢查資料是否存在,以避免崩潰。
  • 您可以輕鬆地將資料傳回伺服器並使用 req.body(對於 POST 請求)進行處理。

如果您像我一樣只是在學習,我希望這篇文章能讓事情變得更加清晰,並幫助您避免一些早期的陷阱。請隨時在下面留下任何問題或評論! ?

以上是將資料傳遞到 EJS 範本以及反之亦然 — 初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

JavaScript多條件過濾:實現基於AND/OR邏輯的動態產品篩選 JavaScript多條件過濾:實現基於AND/OR邏輯的動態產品篩選 Aug 22, 2025 am 10:00 AM

本教程詳細介紹瞭如何使用JavaScript實現多條件動態篩選功能,允許用戶根據顏色、尺寸等多個屬性進行產品過濾。文章通過清晰的HTML結構和JavaScript代碼示例,演示瞭如何靈活處理AND和OR邏輯,以滿足複雜的用戶篩選需求,並提供優化建議。

優化jQuery彈窗中動態外部鏈接跳轉的事件處理 優化jQuery彈窗中動態外部鏈接跳轉的事件處理 Sep 01, 2025 am 11:48 AM

本文旨在解決jQuery彈窗中外部鏈接重定向按鈕重複綁定事件處理器導致跳轉錯誤的問題。當用戶連續點擊多個外部鏈接時,彈窗中的跳轉按鈕可能始終指向首次點擊的鏈接。核心解決方案是利用off('click')方法在每次綁定新事件前解除舊的事件處理器,確保跳轉行為始終指向最新的目標URL,從而實現準確且可控的鏈接重定向。

構建按工作日和工作時間運行的JavaScript計數器 構建按工作日和工作時間運行的JavaScript計數器 Aug 31, 2025 am 06:30 AM

本文詳細介紹瞭如何使用JavaScript構建一個精確的定時計數器。該計數器每分鐘遞增一次,但僅在預設的工作日(週一至週五)和工作時間(如上午6點至晚上8點)內運行。它能在非工作時間暫停遞增但顯示當前值,並在每月的第一天自動重置,確保計數邏輯的準確性和靈活性。

您如何通過JavaScript中的數據屬性選擇元素? 您如何通過JavaScript中的數據屬性選擇元素? Aug 30, 2025 am 01:57 AM

你可以通過CSS屬性選擇器在JavaScript中選擇帶有data屬性的元素,使用document.querySelector()或document.querySelectorAll()方法即可實現。 1.使用[data-attribute]選擇具有指定data屬性(任意值)的元素;2.使用[data-attribute="value"]選擇屬性值完全匹配的元素;3.通過element.dataset訪問數據屬性,其中data-user-id對應dataset.userId(轉

Pytest與Selenium:動態數據驅動測試的實現策略 Pytest與Selenium:動態數據驅動測試的實現策略 Aug 30, 2025 am 06:00 AM

本文旨在解決使用Pytest和Selenium進行動態數據驅動測試時,@pytest.mark.parametrize裝飾器無法直接處理運行時生成數據的問題。我們將深入探討pytest.mark.parametrize的限制,並詳細介紹如何通過Pytest的pytest_generate_tests鉤子函數,優雅地實現基於Selenium動態獲取數據的參數化測試,確保測試用例的靈活性和高效性。

優化 React 組件渲染:解決鼠標懸停導致的過度渲染問題 優化 React 組件渲染:解決鼠標懸停導致的過度渲染問題 Aug 22, 2025 pm 01:36 PM

本文旨在解决 React 应用中因鼠标悬停事件(onMouseOver)触发的过度渲染问题。通过将 onMouseOver 替换为 onMouseEnter,并结合 onMouseOut 替换为 onMouseLeave,可以显著减少不必要的组件重新渲染,提升应用性能,尤其是在处理大量组件时。文章将提供示例代码和详细解释,帮助开发者理解并应用这一优化技巧。

JS獲得元素的高度和寬度 JS獲得元素的高度和寬度 Aug 22, 2025 pm 04:16 PM

UseclientWidth/clientHeightforvisiblecontentareaincludingpadding;2.UseoffsetWidth/offsetHeightfortotalrenderedsizeincludingcontent,padding,andborders;3.UsescrollWidth/scrollHeightforfullcontentsizeincludingoverflow;4.UsegetBoundingClientRect()forprec

動態創建的DOM元素如何被預先加載的腳本訪問和操作 動態創建的DOM元素如何被預先加載的腳本訪問和操作 Aug 30, 2025 am 11:57 AM

本文探討了在Web開發中,當JavaScript腳本在DOM元素創建之前加載並執行時,如何有效訪問和操作這些動態生成的元素。我們將介紹三種核心策略:通過函數返回值直接傳遞元素引用、利用自定義事件實現模塊間通信,以及使用MutationObserver監聽DOM結構變化。這些方法能夠幫助開發者解決JavaScript執行時序與動態內容加載之間的挑戰,確保腳本能正確地對後續添加的元素進行操作,如使其可拖拽。

See all articles