参考资料:
EJS – 嵌入式 JavaScript 模板引擎 | EJS中文文档
ejs文件如何转化成html | PingCode智库
ejs和pug类似,都是html的模板语言。
语法规则 标签含义
<%
‘脚本’标签,用于流程控制,无输出
<%_
删除其前面的空格
<%=
输出数据到模板(输出的是转义html标签)
<%-
输出非转义的数据到模板
<%#
注释标签,不执行、不输出内容
<%%
输出字符串’<%’
%>
一般结束标签
-%>
删除紧跟其后的换行符
_%>
将结束标签后面的空格符删除
实践 ejs2html.js test.ejs test.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 const ejs = require ('ejs' );const fs = require ('fs' );const path = require ('path' );const templatePath = path.join (__dirname, 'test.ejs' );const outputPath = path.join (__dirname, 'test.html' );const data = { title : 'EJS Example' , heading : 'Hello, EJS!' , message : 'This is a message rendered using EJS.' }; const template = fs.readFileSync (templatePath, 'utf8' );const html = ejs.render (template, data);fs.writeFileSync (outputPath, html); console .log ('HTML file has been generated successfully.' );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <!DOCTYPE html> <html> <head> <title> <%# < \ %=将变量名中的内容转义出来到html代码中 -%> <%= title %> </title> </head> <body> <h1> <%= heading %> </h1> a <%# 这一行注释将会占据空行 %> b a <%# 这一行注释将不会占据空行 -%> b a <%# 这一行注释后面的c前面会有空格 %> c b a <%# 这一行注释后面的c前面将没有空格 _%> c b <%# 下面这行代码在模板中定义了一个变量i=3 -%> <% var i = 3; %> <%# 下面这行代码在模板中使用了变量i -%> <%# 使用_\%\>是为了删除空格 -%> <%_ for(var i=0; i<5; i++) { _%> <a><%= i %></a> <% } _%> <%% sdfgsdg %> <%# <\%\- 后面可以加变量或者是include语句 -%> <%- message %> <!-- <\%- include(templatePath) %> 这一行报错找不到文件,应该是自己的转换脚本的问题--> <p> <%= message %> </p> </body> </html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <!DOCTYPE html > <html > <head > <title > EJS Example </title > </head > <body > <h1 > Hello, EJS! </h1 > a b a b a c b a c b <a > 0</a > <a > 1</a > <a > 2</a > <a > 3</a > <a > 4</a > <% sdfgsdg %> This is a message rendered using EJS. <p > This is a message rendered using EJS. </p > </body > </html >