ejs模板html,Ejs 模板引擎的有限使用

本文介绍了EJS模板引擎的基本用法,包括语法特点、不同调用方式及如何将模板与JavaScript分离,以便实现内容结构与业务逻辑的清晰划分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ejs,Effective js 是也。所谓,写的更少,做的更多。

流浪器端的语法大概是长这样的:

首先得引入ejs嘛

然后使用JavaScript脚步调用,以下两种调用方式是等价的:

方式1——

var template = ejs.compile(str, options);

template(data);

方式2——

ejs.render(str, data, options);

options对象可以包括以下属性:

cache:true, //解析结果进行缓存

filename:"path", //用于引入文件或指定cache的键名

scope:"this", //指定函数执行的上下文对象

compileDebug:false, //当此项为false时,debug指令不会被编译

client:"", //返回独立的编译后的函数

delimiter:"a tag", //指定标签的开闭符号,默认为 % ,可以指定例如 ? 或$

open:"

close:"%>", //指定闭标签

debug:true, //输出生成的函数体

_with:false //指定模板是否使用with(){}函数结构

标签含义:

%> //普通的结束标签

-%> //剪除模式,移除随后的换行符

渲染数组:

var people = ['geddy', 'neil', 'alex'],

html = ejs.render('', {people: people});

渲染对象:

关于引入模式和自定义标签,嗯,写的太多了...

看起来好复杂啊,怎么用呢???这个值得探讨探讨...以下代码默认以jQuery库形式进行操作

如果模板不需要复用

一、HTML结构与js代码混用

a.html文件

a.js

$(function(){

var str = "

var obj = {

txt:'HelloWorld',

time:'2016-11-29'

};

var html = ejs.render(str,{data:obj});

$("#show").html(html);

}

结果如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

这种方式非常不好,因为这完全不符合前端的分离原则,建议使用接下来的这种。

二、ejs模板保留在HTML文本中,与js分离

b.html

b.js

$(function(){

var obj = {

txt:'HelloWorld',

time:'2016-11-29'

};

var html = ejs.render($("#model").html(),{data:obj});

$("#show").html(html);

}

你会得到一样的结果,但是,js代码里面没有了HTML标签,符合了内容结构与业务逻辑的分离,你应当这么使用。

如果模板需要复用

三、模板通过script标签保留在HTML结构中

c.html

' %>

' %>

' %>

' %>

c.js

$(function(){

var hello = {

earth:"Good morning?",

world:"Who are you!"

}

var html = ejs.render($('#what').html(),{hello:hello});

$("#show").html(html);

});

最终,你会把

Good morning?

那么,你就得到了两个可用模板

你的js代码就可以继续利用这些模板做你想做的事情啦!

但是!在单页面程序不要这样子用, ' %> 这种代码使人愕然,在script中嵌套script是非常不利于理解的。为了团队中的其他人能理解你的代码,你最好使用下一种方式!

四、模板抽取出来成为一个单独的文件(这种模式下要求使用gulp、grunt等构建工具,否则无法使用)

d.html

how.html

why.html

d.js

$(function(){

var hello = {

earth:"Good morning?",

world:"Who are you!"

}

var html = ejs.render($('#tpl_how').html(),{hello:hello});

html += ejs.render($('#tpl_why').html(),{hello:hello});

$("#show").html(html);

});

以上,就是一些小经验的分享。欢迎拍砖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值