`
303178394
  • 浏览: 37814 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

元总结---express框架之模板引擎、片段视图、视图助手

阅读更多
Logdown博文地址

#元总结
什么是元总结?元在英文里就是meta,元数据就是能够描述数据的数据,元编程就是能够操作代码的代码。那么,我今天想要说的元总结就是对总结进行总结的总结。是不是很绕,很好,这就是我要的效果。
每天写博文,其实就是一种总结,把这段时间学到的、感受到体验到的、做错的事情总结性的写下来,其实经常博文的主题,也就是不经意间的一个感悟,然后把这个主题大概记下来,通过早上来写出来。有一段时间每天睡前都会做一个事情,就是把今天做的番茄钟全部回顾一片,然后统计成数据,之后一段时间因为工作比较混杂,很难完成一个完整的番茄钟了,导致这个总结也都没做下去,这一点也是需要改进的。
早起已经坚持了半年了,前几天稍微回顾了下,发现这个过程中还是存在些许问题的:
  • 1. 10300600(10点30睡,6点醒还是没实现)晚睡主要原因是因为爱人,早醒没办法完成的原因是晚睡了,时间应该贴合实际所能达到的程度
  • 2. 前一天晚上就写好番茄钟的每日计划被搁置了
  • 3. 醒来的时候,有时候会看一会新闻
  • 4. 每周获取的信息很大,而信息获取后没有梳理归纳


元总结的内容:
  • 1. 番茄钟和番茄钟的总结需要继续
  • 2. 临睡前要对后一天的番茄钟钟做好准备和规划,准备好第二天要做的事情,包括起床要做的
  • 3. 10300600计划暂改动为11000630
  • 4. 早醒后的时间是一天中效率最高的,不应该用来看新闻
  • 5. 早醒后可以稍微运动运动
  • 6. 每周应当对微信、博客或许的信息进行一次归纳总结;
  • 7. 准备一杯水在床头,醒来就喝


--------------***分割线***----------------------
# 模板引擎
## 什么是模板引擎
模板引擎(Template Engine)是一个从页面模板根据一定的规则生成 HTML的工具,既建立一个HTML模板,插入可执行的代码。PHP、ASP、JSP、Vm都是模板引擎。
## 为什么不直接用HTML
如果一个网站全部资源都要用静态的HTML来展现,那一个网站要成千上万的静态页面,关键还很不灵活。
因此用嵌入逻辑的模板来构建网站,降低了动态网站的开发门槛,在通过MVC模式消除逻辑和页面的耦合程度。
## 模板引擎与控制器

***图1-3 模板引擎在MVC中的位置***

## 设置模板引擎
在app.js中,设置模板引擎和页面模板的位置。

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');


```nodejs routes/index.js片段
res.render('index', { title: 'Express' });
```

res.render 的功能是调用模板引擎,并将其产生的页面直接返回给客户端。它接受两个参数,第一个是模板的名称,即 views 目录下的模板文件名,不包含文件的扩展名;第二个参数是传递给模板的数据,用于模板翻译。
```ejs index.ejs
<h1><%= title %></h1>
Welcome to <%= title %>

```

上面代码其中有两处 <%= title %>,用于模板变量显示,它们在模板翻译时会被替换成 Express,因为 res.render 传递了 { title: 'Express' }。
## Ejs的标签
ejs 的标签系统非常简单,它只有以下3种标签:

<% code %>:JavaScript 代码。
<%= code %>:显示替换过 HTML 特殊字符的内容。
<%- code %>:显示原始 HTML 内容。

## Layout.ejs
之前已经提到过,Layout.ejs相当于Java的装饰模式,会自动替换<%- body %>、<%- title %>等部分的内容。
可以在app.js中通过以下代码关闭。
```nodejs app.js片段
app.set('view options', {
layout: false
});
```

Layout是默认的装饰页面,还可以通过如下代码指定装饰的页面。
```nodejs index.js片段
function(req, res) {
res.render('userlist', {
title: '用户列表后台管理系统',
layout: 'admin'
});
};
```

这样就会自动套用admin.ejs来装饰了。
# 片段视图
片段视图 (partials),它就是一个页面的片段,通常是重复的内容,用于迭代显示。类似Jsp的 <c:foreach>来循环生成页面的方式。
Express3.x是某人不适用片段视图的,之前已经有说如何导入片段视图插件已经如何适用插件了,就不重复列举了。直接上个例子吧。
```nodejs app.js片段
app.get('/userlist',routes.userlist);
```

```nodejs routes/index.js片段
exports.userlist = function(req, res) {
res.render('list',{
        title:'List',
        items:[1988,'David','birthday','HelloWorld']
});
};
```

partial 是一个可以在视图中使用函数,它接受两个参数,第一个是片段视图的名称,第二个可以是一个对象或一个数组,如果是一个对象,那么片段视图中上下文变量引用的就是这个对象;如果是一个数组,那么其中每个元素依次被迭代应用到片段视图。片段视图中上下文变量名就是视图文件名,例如上面的'listitem'。
```ejs views/list.ejs
[list]<%- partial('listitem', items) %>[/list]
```


```ejs views/listitem.ejs
[*]<%= listitem %>

```


运行结果:



# 视图助手
上一章节的partial就是一种视图助手,视图助手分为两种:静态视图助手和动态视图助手。Partial属于静态视图助手。
静态视图助手可以是任何类型的对象,包括接受任意参数的函数,但访问到的对象必须是与用户请求无关的,而动态视图助手只能是一个函数,这个函数不能接受参数,但可以访问 req 和 res 对象。

Express3.x中,视图助手的使用发生了变化,我试验了挺久的,终于知道如何解决了。边看代码边解释吧。

```nodejs app.js
……
var util = require('util');
var partials = require('express-partials');
……

// helpers
app.locals({
inspect: function(obj) {
return util.inspect(obj, true);
}
});
// dynamicHelpers
app.use(function(req,res,next){
res.locals.headers= req.headers;
res.locals.dyvar = "This is a dynamic var!";
next();
});


app.use(app.router);
……
app.get('/helper',routes.helper);
……
```

开始要先引入util模块,因为测试方法需要用到。
然后看备注可以看到helpers和dynamicHelpers在3.x中如何实现,特别要记住,一定要放在app.use(app.router);这句话之前,否则在locals里面设置的值是无效的。

然后就是添加路由规则模块的方法。
```nodejs routes/index.js片段
exports.helper =  function(req, res) {
res.render('helper', {
title: 'Helpers'
});
```


```ejs views/helper.ejs
<%= locals.dyvar %>
<%=inspect(locals.headers)%> 
```

注意:在页面中应用一定要记得要locals.headers

然后就可以运行看结果了。


0
1
分享到:
评论

相关推荐

    前端开源库-mustache-express

    【标题】"前端开源库-mustache-express"是一个基于JavaScript的模板引擎,它与Express.js框架紧密结合,用于构建动态的Web应用。Mustache是一种逻辑less的模板语言,它的核心理念是“Logic-less templates”,即在...

    前端开源库-express-partials

    6. **模板引擎兼容**:可能兼容多种模板引擎,如Jade(Pug)、EJS、Handlebars等,使得开发者可以根据喜好选择。 从压缩包文件名称“express-partials-master”来看,这可能是项目的源码仓库主分支。用户可以通过...

    express-handlebars:Express把手

    **Express-Handlebars:Express框架的视图引擎** 在Web开发中,Express是一个非常流行的Node.js框架,它简化了构建动态网站和API的过程。而Express-Handlebars则是Express框架的一个重要组成部分,它作为Express的...

    node-express-snippets:一堆节点和表达片段

    - 视图系统:Express 支持多种模板引擎,如 EJS、Pug 等,用于动态渲染 HTML 页面。 - 错误处理:可以通过 express 中的 error handling middleware 处理全局错误。 3. **Node.js 开发工具**: - npm (Node ...

    13课 NodeJS基础-第4天-{ Node.js框架 }.rar

    2. **Express框架**:作为最常用的Node.js Web开发框架,Express提供了简单易用的API来创建Web应用。课程可能介绍如何安装、初始化项目、定义路由、中间件和视图系统。 3. **路由处理**:讲解如何使用Express定义...

    sjy-dv-NodeJS_Express-MongoDB-Simple-BoilerPlate

    标题 "sjy-dv-NodeJS_Express-MongoDB-Simple-BoilerPlate" 提示我们这是一个基于Node.js、Express框架和MongoDB数据库构建的简单模板项目。这个模板旨在为开发人员提供一个快速启动新项目的基础,特别是对于需要...

    图书馆管理系统node-express+bootstrap+ajax+JS+mongodb.zip

    Express框架**:Express是Node.js的一个轻量级Web应用框架,它简化了Web应用的构建过程,提供了路由、中间件和模板引擎等功能。在图书馆管理系统中,Express负责接收和响应HTTP请求,处理数据,并返回相应的视图或...

    travel_site:使用Express和HBS作为模板引擎的示例应用程序

    5. **视图与模板引擎**:Express可以通过设置`app.set('view engine', 'hbs')`来指定HBS作为默认模板引擎,并且`app.set('views', 'views')`定义了视图文件存放的目录。 **HBS模板引擎** 1. **基本语法**:HBS使用...

    Templating-Engine---EJS:模板引擎-EJS

    6. **独立运行或作为插件**:EJS既可以独立运行,也可以与Express.js等Node.js框架配合使用,提供便捷的视图渲染功能。 ### 使用EJS 安装EJS可以通过npm(Node.js包管理器)进行: ```bash npm install ejs ``` ...

    基于Vue express的博客项目.zip

    3. **模板引擎**:Express可以配合EJS、Pug等模板引擎,生成HTML页面返回给客户端,实现动态内容渲染。 4. **数据库集成**:通常博客项目会涉及数据库操作,Express可能与MongoDB、MySQL等数据库配合,进行CRUD操作...

    asp.net mvc 3

    **ASP.NET MVC 3** 是微软推出的一款基于模型-视图-控制器(MVC)设计模式的Web应用程序框架。它允许开发者创建高度模块化的Web应用,便于测试和维护。与传统的Web Forms相比,MVC提供了更清晰的开发结构和更强大的...

    intro-to-express

    Express支持多种模板引擎,如ejs、jade(现在称为pug)、handlebars等,用于动态渲染HTML页面。视图引擎可以帮助我们将数据和布局分离,提高代码的可维护性。例如,使用ejs引擎: ```javascript app.set('view ...

    ASP.MVC3.0中文版教程

    ASP.NET MVC 是一种用于构建动态网站的技术框架,它基于模型-视图-控制器(Model-View-Controller, MVC)设计模式。这种模式能够清晰地分离应用程序的不同组成部分,从而提高开发效率和维护性。 **MVC 设计模式的...

    formatjs-express-handlebars:使用 FormatJS 和 Handlebars 的示例 Express 应用程序

    总结,`formatjs-express-handlebars`项目提供了一个全面的示例,演示了如何利用`FormatJS`的强大功能来实现Express应用的国际化,同时利用`Handlebars`模板引擎简化视图层的代码。通过学习和实践这个项目,开发者...

    Building Node Applications with MongoDB and Backbone.pdf

    - **Express框架**: Express是Node.js中最流行的Web应用框架之一,用于简化HTTP请求和响应的处理过程。 - **模板引擎**: 介绍如何使用模板引擎(如EJS、Pug等)来生成动态HTML页面。 - **事件驱动编程**: Node.js...

    MVC 3.0教程

    - 在"新ASP.NET MVC 3项目"对话框中,选择"Internet应用程序"模板,保持"Razor"视图引擎默认设置。 2. **了解Razor视图引擎**: - Razor视图引擎是ASP.NET MVC 3引入的新特性,它提供了一种简洁的语法,使视图的...

    demo-express

    "demo-express" 是一个基于JavaScript的项目,很可能是一个使用Express框架构建的Web应用程序示例。Express是Node.js平台上的一个流行的轻量级框架,用于快速开发web服务器和API。这个项目的名称暗示它是一个用于...

    节点网络服务器快递:Códigofuente servidor Web express con HSB

    在这个项目中,我们探讨的是使用Node.js的Express框架构建一个快速、高效的Web服务器,并结合了Handlebars模板引擎。"npm install"是Node.js中的命令,用于安装项目依赖的包,这通常是在初始化项目后添加依赖前进行...

    (6)asp.net mvc3ASP.NET Preview 3的改变

    ASP.NET MVC3是微软开发的一款基于模型-视图-控制器(Model-View-Controller)模式的Web应用程序框架,用于构建可维护性和可测试性高的Web应用。在ASP.NET MVC3 Preview 3版本中,引入了多项重要改进和新特性,这些...

Global site tag (gtag.js) - Google Analytics