【模板】Jinja风格 Ruby风格

文章目录

  • 模板引擎
    • [1. 模板 (Template)](#1. 模板 (Template))
    • [2. 数据模型 (Data Model)](#2. 数据模型 (Data Model))
    • [3. 渲染 (Rendering)](#3. 渲染 (Rendering))
  • [Jinja2 风格](#Jinja2 风格)
  • [Ruby 风格 (ERB)](#Ruby 风格 (ERB))

模板引擎

模板引擎(Template Engine)​ 是一种软件组件或库,它的核心作用是将数据模型(通常是程序中的变量或对象)与预定义的模板(通常是包含占位符的文本文件)结合起来,生成最终的、格式化的输出文本。

简单来说,它就是一个"填空机器"。你提供一个模板("填空题的卷子"),再提供一些数据("填空题的答案"),模板引擎就会自动把答案填到卷子的对应位置,生成一份完整的文档。

模板引擎是现代Web开发的基石之一。​ 它通过将数据和视图分离,使得开发更加模块化、高效和安全。

1. 模板 (Template)

模板是一个包含静态内容和动态占位符的文本文件。

复制代码
静态内容:​ 这是固定不变的部分,比如 HTML 的骨架、CSS 样式、普通的文字描述。
动态占位符:​ 这是需要被替换的部分,通常由特殊的语法标记(如 {{ ... }}或 <%= ... %>)。它们代表了变量、逻辑控制语句(如循环、条件判断)等。

2. 数据模型 (Data Model)

这是你的程序提供给模板引擎的"原料"。

它通常是一个键值对集合(如字典、哈希、对象),其中的"键"对应模板中的占位符名称。

3. 渲染 (Rendering)

模板引擎将模板和数据模型结合的过程称为"渲染"。渲染的结果就是一份完整的、可用的输出文本(如HTML网页、XML配置文件、纯文本邮件等)。

Jinja2 风格

Jinja2 是 Python 生态中现代模板引擎的事实标准。由 Armin Ronacher​ 创建,他也是 Python 著名 Web 框架 Flask​ 和 包管理工具 Pip​ 的作者。

它最初是作为 Flask 的默认模板引擎而广为人知,但由于其优秀的的设计,现在已成为整个 Python 社区(包括独立脚本、FastAPI等)的首选。

Jinja2 的设计遵循一个核心原则:"模板是用于呈现的,而不是用于计算逻辑的"。

Ruby 风格 (ERB)

维度 Jinja2 (Jinja风格) ERB (Ruby风格)
本质​ 一个独立的、领域特定的模板语言​ 在文本中嵌入 Ruby 代码​
语法​ {{ var }}, {% tag %} <%= expr %>, <% code %>
安全性​ 高(默认沙盒,自动转义) 中(依赖开发者,Rails中默认转义)
典型生态​ Python (Flask, FastAPI, Ansible) Ruby (Ruby on Rails, Sinatra)
相关推荐
寅时码12 小时前
React 之死·终章:一个 useRef,把闭包陷阱、依赖数组、漫天 rerender 全送走
前端·react.js·ai编程
不好听61312 小时前
HTML 事件监听机制:从 DOM Level 0 到 React 合成事件
前端·react.js·html
wordbaby12 小时前
为什么刷新页面就 404?聊聊 SPA 路由与 Nginx 的那点事
前端
咖啡八杯13 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
不好听61313 小时前
React 核心概念:JSX、组件与数据驱动
前端·react.js
触底反弹13 小时前
🔥 React 零基础入门(中):500 行屎山代码到组件化的蜕变
前端·javascript·react.js
不好听61313 小时前
React vs Vue:两大前端框架技术选型深度对比
前端·vue.js·react.js
GuWenyue13 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue13 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
掘金码甲哥13 小时前
这块终端神器, 必须吹爆!
后端