const ejs = require('ejs')
const path = require('path')
const html = '<h2><%= user.name %></h2>'
const options = {}
const data = {
user: {
name: 'haha'
}
}
const data2 = {
user: {
name: 'hahaya'
}
}
//渲染html比较消耗性能
//compile 适合多次使用
let template = ejs.compile(html, options)
console.log('template')
console.log(template(data))
console.log(template(data2))
//render 适合一次调研
console.log('render')
console.log(ejs.render(html, data, options))
//renderFile 渲染文件
console.log('renderFile')
//返回一个promise对象
console.log(ejs.renderFile(path.resolve(__dirname, './head.html'), data, options))
//第四个参数 回调函数
ejs.renderFile(path.resolve(__dirname, './head.html'), data, options, function (err, str) {
console.log(str)
})
<h2><%= user.name %></h2>
ejs 标签的含义
- <%:script 标签,用于流程控制,不会输出在页面上
- <%_: 删除其前面的空格符
- <%=: 输出数据到模板(输出是转义 HTML 字符串)
- <%-: 输出非转义的数据到模板
- <%#: 注释标签,不执行,不输出内容
- <%%: 输出字符串 <%
- %>: 一般结束标签
- -%>: 删除后序的换行符
-
glob
glob 是用来匹配文件路径的,匹配规则如下。
- 匹配任意 0 或 多个 任意字符
- ? 匹配任意 一个 字符
- […] 若字符在中括号中,则匹配。若以 ! 或 ^ 开头,若字符不在中括号中,则匹配
- !(pattern|pattern|pattern) 不满足括号中的所有模式则匹配
- ?(pattern|pattern|pattern) 满足 0 或 1 括号中的模式则匹配
- +(pattern|pattern|pattern) 满足 1 或 更多括号中的模式则匹配
- *(a|b|c) 满足 0 或 更多括号中的模式则匹配
- @(pattern|pat*|pat?erN) 满足 1 个括号中的模式则匹配
- ** 跨路径匹配任意字符 ```html const glob = require(‘glob’)
glob(‘/*.js’, { ignore: [‘node_modules/‘] }, (err, file) => { console.log(‘err’, err) console.log(‘file’, file) })
```