Skip to content
Inspire - Capo Productions

EJS

EJS 是什么 ,怎么用,以及优点

用法:

js
let template = ejs.compile(str, options);
template(data);
// => 输出渲染后的 HTML 字符串

ejs.render(str, data, options);
// => 输出渲染后的 HTML 字符串

ejs.renderFile(filename, data, options, function(err, str){
    // str => 输出渲染后的 HTML 字符串
});
|-- ejs-test
    |-- index.js
    |-- views
        |-- index.ejs

1 常用标签说明

1.1 <%#

注释标签,不执行、不输出内容

index.ejs

ejs
<body>
      <%# 这是段注释 %>
</body>

1.2 <%

'脚本' 标签,用于流程控制,无输出

js
import ejs from 'ejs'

ejs.renderFile('./views/index.ejs', {
  flag: true
}, (err, data) => {
  if (err) console.log(err)
  console.log(data)
})

index.ejs

ejs
<body>
    <% if (flag) { %>
        hello
    <% } %>
</body>
04
Preview

1.3 <%%%%>

<%% 输出字符串 '<%',%%> 输出字符串 '%>'。若想输出 <%,如果直接在模板中写 <%,执行 node index.js 会报错,原因是解析模板时,ejs 把 <% 当中一个开始标签,但是没有找到对应的结束标签,所以报错

错误的方式:

index.ejs

ejs
<body>
    <%
</body>

正确的方式:

index.ejs

ejs
<body>
    <%%
</body>

1.4 <%=<%-

有些字符(如 <>)在模板中有特殊的含义,如果 data 中的属性值包含这些特殊字符,<%=<%-对它们的处理是不一样的

  • <%= 会对特殊字符进行转义,如在解析后的结果中 < 变成了 &gt;
  • <%- 输出非转义的数据到模板,如在解析后的结果中 < 还是 <

index.js

js
import ejs from 'ejs'

ejs.renderFile('./views/index.ejs', {
  message: '<'
}, (err, data) => {
  if (err) console.log(err)
  console.log(data)
})

index.ejs

ejs
<body>
    <%= message %>
    <%- message %>
</body>
01
Preview

1.5 -%>_%>

模板一般写在后缀为 ejs 的文件中,默认情况下模板中的空格、换行会被原样输出

  • -%> 将结束标签后面的空格符删除
  • _%> 删除紧随其后的换行符

index.js

js
import ejs from 'ejs'

ejs.renderFile('./views/index.ejs', {
  message: 'hello'
}, (err, data) => {
  if (err) console.log(err)
  console.log(data)
})

index.ejs

ejs
<body>
    <%= message %>   <%= message %>
    <%= message -%>   <%= message %>
</body>
02
Preview

index.ejs

ejs
<body>
    <%= message %>
    <%= message %>
    <%= message _%>
    <%= message %>
</body>
03
Preview

备注:打印结果中最后一个 hello 前存在空格的原因是模板中最后的 <%= message %>前不仅有换行,还有空格,-%>只是去掉了换行,空格会被保留

布局切换

调整 VitePress 的布局样式,以适配不同的阅读习惯和屏幕环境。

全部展开
使侧边栏和内容区域占据整个屏幕的全部宽度。
全部展开,但侧边栏宽度可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
全部展开,且侧边栏和内容区域宽度均可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
原始宽度
原始的 VitePress 默认布局宽度

页面最大宽度

调整 VitePress 布局中页面的宽度,以适配不同的阅读习惯和屏幕环境。

调整页面最大宽度
一个可调整的滑块,用于选择和自定义页面最大宽度。

内容最大宽度

调整 VitePress 布局中内容区域的宽度,以适配不同的阅读习惯和屏幕环境。

调整内容最大宽度
一个可调整的滑块,用于选择和自定义内容最大宽度。

聚光灯

支持在正文中高亮当前鼠标悬停的行和元素,以优化阅读和专注困难的用户的阅读体验。

ON开启
开启聚光灯。
OFF关闭
关闭聚光灯。