ejs js模板引擎,EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。



所有的模板都要成长为图灵完备的语言,也就是要增加一个中间层何必呢,直接用js吧



优点 :1.快速开发 2:语法简单 3:执行速度 4:易于调试


  1. 入门
    • 安装 npm install ejs

    • 使用
    http.createServer((req,res)=>{
    	var ejs = require('ejs');//引入ejs
    	http.creatServer((req,res)=>{
    		//1.读取数据
    		getDataJson((dataJson)=>{//dataJson由getDataJson取得
    			//2.读取模块
    			fs.readFile("ejsStudy\\list.ejs",(err,data)=>{
    				if(!err){
    					let ejsList = data.toString();//输出为.ejs中的内容
    					//3.实例化模板
    					let tmp = ejs.render(ejsList,dataJson);//输出为将json数据填入后的,跟浏览器解析后的源文件一样了
    					//4.返回页面
    					res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
    					res.end(tmp);
    			}
    			else{
    					throw err;
    			}
    		});
    	});
    }.listen(80,"127.0.0.1");
    
    ejs.render(str,data,options)
    • str 用来渲染数据的展示区域

    • data 这个是渲染的数据,可以是对象或数组

    • opstions

      cache 缓存编译后的函数,需要提供 filename

      filename 被 cache 参数用做键值,同时也用于 include 语句

      context 函数执行时的上下文环境

      compileDebug 当为 false 时不编译调试语句

      client 返回独立的编译后的函数

      delimiter 放在角括号中的字符,用于标记标签的开与闭

      debug 将生成的函数体输出

      _with 是否使用 with() {} 结构。如果为 false,所有局部数据将存储在 locals 对象上。

      localsName 如果不使用 with ,localsName 将作为存储局部变量的对象的名称。默认名称是 locals

      rmWhitespace 删除所有可安全删除的空白字符,包括开始与结尾处的空格。对于所有标签来说,它提供了一个更安全版本的 -%> (在一行的中间并不会剔除标签后面的换行符)。

      escape 为 <%= 结构设置对应的转义(escape)函数。它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)。

      ps:从.json中取得json数据可以通过下述操作进行
      fs.readFile("ejsStudy\tmp.json",(err,data)=>{//Json文件的文件路径
      if(!err)
      {
      let jsonData = JSON.parse(data);
      callBack(jsonData);
      }
      else{
      throw err;
      }
      })
2. ejs语法 * <% "脚本"标签,用于流程控制,无输出 * <%_ 删除前面的空格符 * <%= 输出数据到模板(输出是转义HTML标签) * <%- 输出非转义的数据到模板 * <%# 注释标签,不执行,不输出内容 * <%% 输出字符串'<%' * %> 一般结束标签 * -%> 删除紧随其后的换行符 * _%> 将结束标签后面的空格符删除

附一个 .ejs 文件的部分

		<body>
			<% 
				for(var i = 0;i<lists.length;i++){
			%>
			<div>
				<li>
					<div>
						<span><%= (i+1) %></span>
						<span>
							<%= lists[i].title %>
						</span>
					</div>
					<div>
						<span><%= lists[i].count %></span>
					</div>
				</li>
			</div>
			<% 
				}
			%>
			<span>
				<%= source %>
			</span>
		</body>