EJS(Embedded JavaScript)(一個基于JavaScript的模板引擎,用于在HTML中嵌入動態內容)

文章目錄

  • **1. 什么是 EJS?**
  • **2. 核心特點**
    • - **接近原生 HTML**
    • - **動態渲染**
    • - **輕量高效**
    • - **與 Express 深度集成**
  • **3. EJS 的基本語法**
  • **4. 示例代碼**
    • **HTML 模板(`views/user.ejs`)**
    • **Express 中渲染模板**
  • **5. 使用場景**
    • 1. **服務端渲染(SSR)**
    • 2. **郵件模板**
    • 3. **靜態站點生成**
    • 4. **API 文檔**
  • **6. 與其他模板引擎的對比**
  • **7. 總結**

1. 什么是 EJS?

EJS(Embedded JavaScript) 是一個基于 JavaScript 的模板引擎,用于在 HTML 中嵌入動態內容。它允許開發者通過簡單的語法將后端數據(如變量、數組、對象)和邏輯(如條件判斷、循環)插入到 HTML 頁面中,從而動態生成最終的 HTML 響應。


2. 核心特點

- 接近原生 HTML

EJS 的語法與 HTML 高度兼容,開發者無需學習全新的模板語言,只需掌握 JavaScript 即可。

- 動態渲染

支持嵌入 JavaScript 表達式、控制結構(如 if/elsefor 循環)和函數調用。

- 輕量高效

無依賴,性能優異,適合服務端渲染(SSR)和靜態頁面生成。

- 與 Express 深度集成

是 Express 框架的默認模板引擎之一,配置簡單,使用便捷。


3. EJS 的基本語法

EJS 使用 <% %> 標簽包裹 JavaScript 代碼,以下是常見標簽:

標簽作用
<% 代碼 %>執行 JavaScript 代碼(無輸出)。
<%= 表達式 %>輸出表達式結果(自動轉義 HTML 特殊字符)。
<%- 表達式 %>輸出原始 HTML 內容(不轉義)。
<%# 注釋 %>添加注釋(不會被渲染到最終 HTML)。
<%_ ... _%>移除標簽前后的空白字符(適用于精簡 HTML 輸出)。

4. 示例代碼

HTML 模板(views/user.ejs

<!DOCTYPE html>
<html>
<head><title>EJS 示例</title>
</head>
<body><h1>歡迎,<%= user.name %>!</h1><p>您的角色是:<%= user.role %></p><% if (user.isAdmin) { %><p>您有管理員權限。</p><% } else { %><p>您是普通用戶。</p><% } %><ul><% for (let item of user.items) { %><li><%= item %></li><% } %></ul>
</body>
</html>

Express 中渲染模板

const express = require('express');
const app = express();// 設置 EJS 為模板引擎
app.set('view engine', 'ejs');// 路由:渲染模板并傳遞數據
app.get('/', (req, res) => {const user = {name: 'Alice',role: '開發者',isAdmin: true,items: ['項目A', '項目B', '項目C']};res.render('user', { user }); // 渲染 views/user.ejs
});app.listen(3000, () => {console.log('服務器運行在 http://localhost:3000');
});

5. 使用場景

1. 服務端渲染(SSR)

動態生成 HTML 頁面(如電商網站、博客系統)。

2. 郵件模板

結合后端數據生成 HTML 郵件內容。

3. 靜態站點生成

通過 Node.js 工具(如 ejs + fs)批量生成靜態 HTML 文件。

4. API 文檔

動態渲染 API 接口說明頁面。


6. 與其他模板引擎的對比

模板引擎語法特點學習曲線適用場景
EJS基于 HTML + JavaScript快速開發、SSR、靜態生成
Pug類似縮進語法(類似 Python)復雜頁面結構
Handlebars使用 {{}} 標簽,邏輯分離前后端共用模板

7. 總結

EJS 是一個 簡單、靈活且高效的模板引擎,特別適合已經熟悉 JavaScript 的開發者。它通過嵌入 JavaScript 邏輯到 HTML 中,實現動態內容渲染,是 Express 框架中服務端渲染的常用工具。對于需要快速開發、保持 HTML 可讀性或結合靜態生成的項目,EJS 是一個理想選擇。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/923685.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/923685.shtml
英文地址,請注明出處:http://en.pswp.cn/news/923685.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:基于阻塞隊列的生產者消費模型

文章目錄一、生產者消費者模型的基本原則&#x1f495;&#x1f495;生產者-消費者模型的 321 原則&#x1f495;&#x1f495;二、為何要使用生產者消費者模型1. 解耦2. 支持并發 &#xff08;提高效率&#xff09;3. 忙閑不均的支持三、基于 BlockingQueue 的生產者消費者模型…

ensp啟動路由器報錯40

1. 先關閉 eNSP 模擬器、關閉 Virtualbox2. 在everything里面搜索 .VirtualBox文件夾&#xff0c;然后刪掉3. 再打開 eNSP&#xff0c;不添加任何模擬設備&#xff0c;單擊“菜單-工具-注冊設備”&#xff0c;將 AR_Base 重新注冊。4. 關閉 eNSP 模擬器

代碼隨想錄二刷之“圖論”~GO

A.深搜與廣搜&#xff08;重點掌握&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 深搜類似于回溯法 搜索方向&#xff0c;是認準一個方向搜&#xff0c;直到碰壁之后再換方向換方向是撤銷原路徑&#xff0c;改為節點鏈接的下一個路徑&#xff0c;回溯的過程…

基于Echarts+HTML5可視化數據大屏展示-白茶大數據溯源平臺V2

效果展示&#xff1a;代碼結構&#xff1a;主要代碼實現 index.html布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta n…

Linux 系統網絡配置及 IP 地址相關知識匯總

Linux 系統網絡配置及 IP 地址相關知識匯總 一、IP地址基礎 IP地址&#xff1a;在計算機網絡中用來唯一標識一臺設備的一組數字。 二、IPv4相關知識 1. IPv4的表示方法 采用點分十進制表示&#xff0c;即由4個0-255的十進制數通過點分隔組成&#xff08;如192.168.1.1&#xff…

百度股價突破120美元創年內新高,AI云成為增長新引擎

美東時間9月16日&#xff0c;百度&#xff08;NASDAQ: BIDU&#xff09;美股大漲近8%&#xff0c;收盤價突破120美元&#xff0c;站上124美元高位&#xff0c;創2023年10月以來新高。北京時間9月17日港股開盤&#xff0c;百度&#xff08;09888.HK&#xff09;港股再次暴漲&…

《彩虹六號:圍攻》“Siege X”發布會3月14日舉行!

使用jQuery的常用方法與返回值分析 jQuery是一個輕量級的JavaScript庫&#xff0c;旨在簡化HTML文檔遍歷和操作、事件處理以及動畫效果的創建。本文將介紹一些常用的jQuery方法及其返回值&#xff0c;幫助開發者更好地理解和運用這一強大的庫。 1. 選擇器方法 jQuery提供了多種…

[從青銅到王者] Spring Boot+Redis+Kafka電商場景面試全解析

互聯網大廠Java開發崗技術面試實錄&#xff1a;嚴肅面試官VS搞笑程序員謝飛機 文章內容 第一輪&#xff1a;基礎框架與并發控制&#xff08;電商系統基礎能力&#xff09; 面試官&#xff08;嚴肅&#xff09;&#xff1a;歡迎進入面試環節&#xff0c;首先請用3句話總結Spring…

【DMA】DMA架構解析

目錄 1 DMA架構 1. 芯片架構圖一覽 2. AHB總線矩陣掛載 3. AHB1/APB1的橋和AHB1/APB2的橋 4. DMA1 和 DMA2 的區別 2 AHB總線矩陣 1 DMA架構 1. 芯片架構圖一覽 2. AHB總線矩陣掛載 stm32F411 芯片的 AHB 總線矩陣上共掛載了 6 主 5 從 六主&#xff1a; Icode-bus、D…

GPS 定位器:精準追蹤的“隱形守護者”

GPS 定位器&#xff1a;精準追蹤的“隱形守護者” 一、什么是 GPS 定位器&#xff1f; GPS 定位器是一種基于 全球定位系統&#xff08;Global Positioning System, GPS&#xff09; 的智能追蹤設備。 通過接收衛星信號并結合通信模塊&#xff08;如 4G、NB-IoT&#xff09;&am…

前端拖拽排序實現

1. 使用 HTML5 事件 觸發時機 核心任務 dragstart 開始拖拽時 準備數據&#xff0c;貼上標簽 dragover 經過目標上方時 必須 preventDefault()&#xff0c;發出“允許放置”的信號 dragleave 離開目標上方時 清理高亮等臨時視覺效果 drop 在目標上松手時 接收數據…

arm coresight

這是一個arm設計的調試基礎架構&#xff0c;我們常用的debug基本都包含在內。比如ETM、PTM、ITM、HTM、ETB等。 注意ETM、PTM、ITM、HTM、ETB是coresight的子集。這些工具相比普通debug的斷點調試&#xff0c;需要更高的專業水平&#xff0c;因此也用于復雜軟件故障定位、性能…

《華為基本法》 —— 企業發展的導航儀

當一家企業從 “小作坊” 向 “規模化組織” 跨越時&#xff0c;最需要的是什么&#xff1f;華為的答案&#xff0c;藏在 1998 年出臺的《華為基本法》里。1998 年&#xff0c;《華為基本法》正式頒布&#xff0c;這部凝結華為早期經營智慧的綱領性文件&#xff0c;不僅為華為從…

【完整源碼+數據集+部署教程】傳統韓文化元素分割系統: yolov8-seg-GFPN

背景意義 研究背景與意義 隨著全球化的加速&#xff0c;傳統文化的保護與傳承面臨著前所未有的挑戰。尤其是韓國的傳統文化&#xff0c;作為東亞文化的重要組成部分&#xff0c;蘊含著豐富的歷史、藝術和哲學內涵。然而&#xff0c;隨著現代化進程的推進&#xff0c;許多傳統文…

構建AI智能體:三十五、決策樹的核心機制(一):刨根問底鳶尾花分類中的參數推理計算

一、初識決策樹想象一個生活中的場景&#xff0c;我們去水果店買一個西瓜&#xff0c;該怎么判斷一個西瓜是不是又甜又好的呢&#xff1f;我們可能會問自己一系列問題&#xff1a;首先看看它的紋路清晰嗎&#xff1f;如果“是”&#xff0c;那么它可能是個好瓜。如果“否“&…

c語言中實現線程同步的操作

線程 常見問題 同步權限 在多線程 / 多進程并發時&#xff0c;為避免共享資源&#xff08;如內存變量、硬件設備、文件&#xff09;被同時修改導致的數據不一致&#xff0c;需要通過 “同步機制” 控制誰能訪問資源 ——“獲取同步權限” 就是線程 / 進程申請這種訪問資格的過程…

一臺設備管理多個 GitHub 賬號:從配置到切換的完整指南

一臺設備管理多個 GitHub 賬號&#xff1a;從配置到切換的完整指南 在日常開發中&#xff0c;我們經常需要在同一臺電腦上使用多個 GitHub 賬號&#xff08;比如個人賬號和工作賬號&#xff09;。但默認情況下&#xff0c;Git 會優先使用全局配置的賬號&#xff0c;導致推送代…

即插即用,秒入虛擬:TouchDIVER Pro 觸覺手套 賦能 AR/VR 高效交互

一、即插即用&#xff0c;零門檻開啟沉浸之旅 在XR&#xff08;擴展現實&#xff09;技術高速發展的今天&#xff0c;用戶對“真實感”的追求愈發迫切。Weart公司旗下旗艦產品TouchDIVER Pro觸覺手套&#xff0c;憑借無需適配器、無需復雜設置的極簡設計&#xff0c;打破傳統觸…

GitHub熱榜項目 - 日榜之應用場景與未來發展趨勢

一、引言GitHub熱榜項目 - 日榜呈現出豐富多樣的技術成果&#xff0c;這些項目蘊含著巨大的應用潛力&#xff0c;并且對未來數智化技術的發展有著重要的指示作用。深入探究其應用場景以及未來發展趨勢&#xff0c;能讓我們更好地把握技術發展方向&#xff0c;將這些前沿技術應用…

Linux網絡:socket編程TCP

文章目錄前言一&#xff0c;服務器端流程1-1 綁定協議1-2 綁定IP和端口1-3 監聽客戶端1-4 接收連接1-5 收發數據1-6 關閉連接1-7 服務端整體代碼二&#xff0c;客戶端流程2-1 指定地址和端口2-2 連接服務器2-3 發送消息2-4 客戶端整體代碼前言 TCP 的通信過程就像兩個人打電話…