Eta
轻量、强大、插件化的嵌入式 JS 模板引擎。
采用 TypeScript 语言编写,支持 Node、Deno 以及浏览器运行环境
更快、更轻量、更可配置的 EJS 替代方案
Eta 与 EJS 功能对比:
- Eta 内置对 Deno的支持
- Eta 自带对 布局模板(layouts) 的支持 (了解更多)
- Eta 允许 控制左侧空白符 (通过
-
符号实现 ),这在 EJS 中是不支持的,因为 EJS 中在左侧使用-
符号表示该值 不应被转义。相反,Eta 使用~
符号来 输出原始值 - Eta 为你提供了 更灵活的分隔符设置 -- 例如,你 可以设置
{{
和}}
作为分隔符,而 EJS 不支持 - Eta 添加了对 插件的支持
- Eta 中的注释使用的是
/* ... */
,因此能够 支持多行注释,并且与 JS 代码保持一致 - Eta 不会破坏字符串和注释中的分隔符。 例如:
<%= "%>" %>
在 Eta 中可以正常使用,而在 EJS 中则会报错 - Eta 公布了 Typescript 类型定义 并且支持 UMD 格式
- Eta 允许自定义标签类型(tag-type)的前缀。 例如:你可以将
<%=
改为<%*
- Eta 抛出的错误信息更加丰富。 如果你不小心漏掉了标签(tag)、字符串或 多行注释未正确关闭,Eta 能够告诉你问题处在哪里
- Example 1
- Example 2
- Example 3
- Partials
- Layouts
Users:
<ul>
<% it.users.forEach(function(user){ %>
<li><%= user %></li>
<% }) %>
</ul>
<%= await getSomeValue() %>
<% /* Eta supports multiline comments,
which is really useful */ %>
<%= "<%" %>
<% /* Embedded JS templates mean that you can
write any valid JS expression inside interpolate tags: */ %>
<%= 2 + 4 %>
<%~ include("mypartial") %>
<%~ include('./navbar', { pages: [
'home',
'about',
'users'
] }) %>
<% layout("layouts/basic") %>
<p>This will be rendered into a layout</p>