1. const ejs = require('ejs')
  2. const path = require('path')
  3. const html = '<h2><%= user.name %></h2>'
  4. const options = {}
  5. const data = {
  6. user: {
  7. name: 'haha'
  8. }
  9. }
  10. const data2 = {
  11. user: {
  12. name: 'hahaya'
  13. }
  14. }
  15. //渲染html比较消耗性能
  16. //compile 适合多次使用
  17. let template = ejs.compile(html, options)
  18. console.log('template')
  19. console.log(template(data))
  20. console.log(template(data2))
  21. //render 适合一次调研
  22. console.log('render')
  23. console.log(ejs.render(html, data, options))
  24. //renderFile 渲染文件
  25. console.log('renderFile')
  26. //返回一个promise对象
  27. console.log(ejs.renderFile(path.resolve(__dirname, './head.html'), data, options))
  28. //第四个参数 回调函数
  29. ejs.renderFile(path.resolve(__dirname, './head.html'), data, options, function (err, str) {
  30. console.log(str)
  31. })
  1. <h2><%= user.name %></h2>

image.png

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) })

``` image.png