Node.js学习(14)----EJS模板引擎
这个入门教程将从以下几个方面来讲解:
1. 引入EJS
2. 创建一个模板
3. 使用视图工具组件
4. 使用错误处理组件
5. 什么情况下应使用EJS
引入EJS
在我们正式开始前,我们先来做点准备工作。 你的页面需要引入EJS以使JavaScript能够使用它。 先到Google Code或者SVN库里下载ejs\_production.js文件。
下一步是在你的HTML文件里加入下面一段代码:
<scripttype="text/javascript"src="ejs_production.js"></script>
创建一个模板
简化你的代码的第一步是将你的页面展现(HTML)与你的程序逻辑(JavaScript)分离开来。我们将通过创建一个template来把我们的展现代码抽取出来。 创建一个名叫cleaning.ejs的文件,内容如下:
<h1><%= title %></h1><ul><%for(var i=0; i<supplies.length; i++){ %>
<li>
<a href='supplies/<%= supplies[i] %>'>
<%= supplies[i] %>
</a></li><%} %>
</ul>
你会注意到任何在 <% %>之间的代码都被执行了,而在 <%= %>标签内的都把这自己返回的HTML字符串插入到了当前位置里。 我们需要添加JavaScript代码来控制模板的载入的渲染。 我们将用下面的代码来替换原来的字符串代码:
// load the template file, then render it with datavar html =new EJS({url:'cleaning.ejs'}).render(data);
感觉好些了吗?这个模板还原了HTML代码的结构性,并且JavaScript代码很短也没有歧义。
使用视图工具组件
EJS里包含了很多视图组件,视图组件是用来显示代码,如连接和表单的捷径。 就像Ruby on Rails框架里的一样,它们可以让视图代码保持短小、简单。 超级链接在我们的模板代码里也许会这样写:
<li>
<a href='supplies/<%= supplies[i] %>'>
<%= supplies[i] %>
</a></li>
这段代码看起来仍然很乱,现在有一些内嵌的标签可以让它更小巧。我们可以使用视图组件:
<li><%= link_to(supplies[i],'supplies/'+supplies[i]) %>
</li>
上面的代码看起来更干净更直观。还记得最原始的方式吗?
html +="<li><a href='supplies/"+data.supplies[i]+"'>"
html += data.supplies[i]+"</a></li>"
与最初的JavaScript相比较,一些不太了解你的代码的人可以更容易地通过EJS模板代码看得懂你的代码。 现在让我们放松一下,一起来享受下令人激动的干净简洁的感觉。
使用错误处理组件
一个好的女仆总是会承认自己的错误。如果你在EJS模板里有一个错误,EJS会给你准确地指出是哪一行有错误,只要你引入ejs_jslint.js文件,这个文件可以到\[Google Code\](http://code.google.com/p/embeddedjavascript/ "Downloading ejs_jslint.js from Google Code")里下载。如果你使用FireFox的调试工具Firebug,错误结果会直接在你的控制台里显示。
一个错误的模板代码:
<ul><% foor(var i=0; i<supplies.length; i++){ %>
<li><%= link_to(supplies[i],'supplies/'+supplies[i]) %>
</li><%} %>
</ul>
什么情况下应使用EJS
有的人说写干净整洁的代码应该养成每天的习惯,但是我感觉EJS是一个绝佳的助手,如果你在面对以下几种情况:
1.用JavaScript创建HTML字符串 正如我们在新手教程中所讨论的,在JavaScript中拼字符串的缺点是可维护性不好。当你在JavaScript中将这些字符串拼到一起时,很难看出你正在写的HTML是什么\---|一个你页面展现的结构。而使用模板可以让你通过代码的空行和缩进来清楚地展现出你的HTML。
2.基于WebService的AJAX网站开发 EJS可以接收WebService异步传送过来的JSON格式的数据,将这种数据直接传入你的模板里,然后将结果插入到你的页面中。你所需要做的只是通过以下代码:
new EJS({url:'comments.ejs'}).update('element_id','/comments.json')
很简单,不是吗?
3.程序换肤功能
如果你想给用户自制页面显示的功能,EJS提供了非常适合的机制。EJS的模板只在浏览器里执行,因此对你的服务器没有任何安全风险。你可以允许你的用户上传EJS模板以及其关联的样式表,从而实现定制你的网站页面的功能。
Node.js学习(14)----EJS模板引擎的更多相关文章
- 在js里的ejs模板引擎使用
1.首先需要在页面里引用ejs.min.js. 2.将你的模板使用ejs编写,并存成后缀名.stmpl;(可能需要在打包工具里做些处理) 3.在js里使用require引入xxx.stmpl: con ...
- nodejs-5.1 ejs模板引擎
ejs官方文档:https://ejs.bootcss.com/ 1.什么是 EJS? "E" 代表 "effective",即[高效]. EJS 是一套简单的 ...
- Node.js学习(第四章:初见express)
Express框架是一款简洁而灵活的node.js web应用框架.前面我们自己手动创建服务器在Express中就是一个API的事情,这就使得我们更加注重业务的功能和开发效率上,不必纠结过多底层的事情 ...
- node+ejs模板引擎的应用
前言: 最近在开发一个关于后台管理系统的基础开发平台,解释一下就是不管什么管理系统都有一些相同的功能,但是又有一些细节不一样,这个基础平台就是实现对于基础功能可以进行快速开发,主要有自定义的生成功能代 ...
- 前端笔记之NodeJS(三)Express&ejs模板引擎&请求识别
一.Express框架 1.1基本使用 创建http服务器特别麻烦,express框架解决了这个的问题. Express在node界的地位,就相当于jQuery在DOM界的地位.jQuery的核心就是 ...
- Node.js学习系列总索引
Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...
- 我的Node.js学习历程
学习一门技术,每个人都有每个人的方法.我的方法很简单,做项目. 基本概念 在搭建一个node网站之前,还是要掌握一些基本的概念的,这里列举一下,具体的内容大家自己到网上去查: npm bower ex ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
- Swiper+ ejs模板引擎+ iScroll插件知识总结
一. Swiper swiper是一个应用于移动端的动画插件,原理类似于轮播图 官网 http://www.swiper.com.cn/# html结构 <div class="swi ...
随机推荐
- 区域生长算法的一种C++实现
区域生长算法是一种图像分割方法,能够将图像中具有相同特征的连通区域分割出来,同时保证较好的边缘信息. 区域生长算法的优点是简单,容易实现:但空间和时间复杂度较高,对分割图像要求较高,否则容易形成孔洞和 ...
- Css3 圆角和渐变色问题(IE9)
border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#569B0E', endC ...
- Almeza MultiSet Pro(批量安装程序) V8.7.6中文特别版
Almeza MultiSet Pro(批量安装程序)是一款非常实用的工具.它能够帮你批量地安装常用的软件.这将解决每次重装系统后能够快速方便地重装常用软件.使用这款软件不需要编写程序,还可以在安装过 ...
- sizeof()和strlen()在求字符串长度时的差别
sizeof()函数输出字符串长度时会把结束符计算在内: strlen()函数输出字符串长度时不会把结束符计算在内. 如图:
- google 开放I/O源码
在这款应用程序中谷歌对部分功能.API和设计架构进行了非常详细的阐述,其中包括碎片.程序加载.服务.广播.接收器.警告.通知.SQLite数据库.内容提供商.Action Bar.导航Drawer和G ...
- Decision Boundaries for Deep Learning and other Machine Learning classifiers
Decision Boundaries for Deep Learning and other Machine Learning classifiers H2O, one of the leading ...
- unity 引入 ios 第三方sdk
原地址:http://blog.csdn.net/u012085988/article/details/17785023 unity开发中ios应用时,要想成功引入第三方sdk,首先得知道c#与obj ...
- 总结: Struts2 + Spring 的线程安全问题
1. 首先Struts2 本身是安全的 其原理大概是:Strtus2会获取到用户的http请求,然后负责给每个请求实例化一个Action 对象,但是大家注意,这里的action对象和Struts1里面 ...
- ZOJ - 3195 Design the city
题目要对每次询问将一个树形图的三个点连接,输出最短距离. 利用tarjan离线算法,算出每次询问的任意两个点的最短公共祖先,并在dfs过程中求出离根的距离.把每次询问的三个点两两求出最短距离,这样最终 ...
- SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-005-以path parameters的形式给action传参数(value=“{}”、@PathVariable)
一 1.以path parameters的形式给action传参数 @Test public void testSpittle() throws Exception { Spittle expecte ...