Node.js使用jade模板引擎步骤详解

这次给大家带来Node.js使用jade模板引擎步骤详解,Node.js使用jade模板引擎的注意事项有哪些,下面就是实战案例,一起来看一下。

在“Node.js开发入门——Express安装与使用”里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本的目录结构、模板、stylesheet、routers等。虽然那只是一个简单的HelloWorld类的小东西,可里面包含的内容还是有些多了,为了更好的理解Express所支持的jade模板引擎的用法,我们这次提供一个手动创建的小网站,可以显示来访者的IP,并对访问进行计数。

安装jade

npm install -g jade

登录后复制

执行上面的命令,全局安装。

Visitor网站

第1步,在myprojects目录下创建一个Visitor目录。

第2步,把下面的代码保存在package.json文件里:

{ "name": "Visitor", "version": "0.0.0", "private": true, "dependencies": { "express": "~4.13.1", "jade": "~1.11.0", }}

登录后复制

这个json文件描述了我们的Visitor网站的一些信息,最重要的部分是依赖。我们要使用express和jade。

var express = require('express');var app = express();var counter = 0;// view engine setupapp.set('views', './views');app.set('view engine', 'jade');app.engine('jade', require('jade').express);app.get('/', function(req, res) { counter++; app.locals.counter = counter.toString(); res.render('index', {ip: req.ip});});app.listen(3000);app.locals.title = "Welcome to Visitor";app.locals.counter = "0";

登录后复制

app.js文件是我们网站的入口。

第4步,创建一个views目录,在里面创建一个模板文件index.jade,内容如下:

doctype htmlhtml head title= title body h1= title p Hello, #{ip} p You're the #{counter} visitor.

登录后复制

第5步,在Visitor目录里执行“npm install”,安装依赖。

第6步,在Visitor目录里执行“node app.js”,启动网站。

最后呢,就可以在浏览器里访问了,地址栏里输入“http://localhost:3000”即可,刷新几次,你可能会看到下面的界面:

Node.js使用jade模板引擎步骤详解

这个简单的Visitor网站,和之前的HelloWorld、HelloExpress都不太一样了,它有了一些动态的内容。接下来我们就来看看这一切是如何发生的。

express与模板引擎

我在Visitor里使用了jade模板引擎,类似的还有ejs以及很多,可以访问这里来了解:https://github.com/joyent/node/wiki/Modules。

模板引擎使用模板文件来动态生成HTML文件,在生成时又可以按照一定的规则将应用程序里的数据整合进HTML文件。这样,我们既避免了手动编写HTML的繁琐(相对使用模板而言),又能生成具有动态内容的网页。

Express和Jade结合得比较好,我们来看看怎么配置它。

Express配置jade

Express服务器的行为可以通过一些设置选项来控制,这些选项可以通过express对象的set(setting, value)、enable(setting)和disable(setting)来设置。具体支持哪些设置,可以看这里http://expressjs.com/4x/api.html。我们的Visitor只用到了“view engine”和“views”。

“view engine”选项用来设置要使用的引擎,Visitor的代码如下:

app.set('view engine', 'jade');

登录后复制

“views”选项用来设置模板文件所在目录,Visitor的代码如下:

app.set('views', './views');

登录后复制

我在这里简单的使用了相对路径,更好的做法是使用path模块,根据全局变量dirname来拼接。dirname指当前正在执行的脚本所在的目录,对我们的Visitor示例来讲,就是app.js所在的那个目录。代码可能是这样的:

var path = require('path');path.join(dirname, 'views');

登录后复制

express默认会根据模板文件的扩展名来使用对应的引擎。对于*.jade文件,express内部会调用下面的语句:

app.engine('jade', require('jade').express);

登录后复制

所以,我们的app.js,实际上也可以去掉这行代码,结果是一样的。

本地对象

我们可以在模板文件里包含动态数据,这些动态数据来自应用程序。我们可以使用express对象的locals对象来存储本地变量。下面的代码就存储了标题和访问计数:

app.locals.title = "Welcome to Visitor";app.locals.counter = "0";

登录后复制

jade模板文件里可以直接访问express对象的locals对象的属性。我在app.js里设置的title和counter,在index.jade模板文件引用了它们。

现在我们来看这行代码:

res.render('index', {ip: req.ip});

登录后复制

它调用express的Response对象的render方法来渲染模板文件,并且传递了一个本地对象。render方法原型:

res.render(view [, locals] [, callback])

登录后复制

res.render方法渲染一个view并且把渲染生成的HTML字符串发送给客户端。res的API参考在这里http://expressjs.com/4x/api.html。

Response对象也有一个locals对象,它和app.locals的区别是,res的locals只在当前渲染的view内有效,而app.locals是全局的。

另外render方法的可选参数locals,也可以定义本地变量对象,传递给view。我在代码里把ip传了过去。

在jade文件里,常见的有两种方式可以调用由应用程序传入的本地变量:

#{表达式}

标签=表达式

前面的index.jade模板文件里,对于页面标题,我们这么用的:

title= title

title是jade用来定义HTML文档title的标签。

对于body里的一级标题,我们这么用的(h1是jade用来定义HTML一级标题的标签):

h1= title

这都是属于“标签=表达式”这种调用方式,这种方式通常用在一行jade代码的开始,也就是标签开始的地方。而“#{表达式}”这种方式的好处是可以插入到jade模板文件的任意地方。比如:

p Hello, #{ip}p You're the #{counter} visitor.

登录后复制

我们也可以将“h1= title”修改为“h1 #{title}”,效果一样。

jade引擎简介

jade使用一些标签来标记如何生成HTML,jade模板文件看起来很不像HTML文件,但它的模板文件小而整洁。使用jade,需要了解它都支持哪些标签,这个可以直接去看jade-lang,那里最详细也最权威,我们这里只介绍index.jade文件用到的那些标签。

关于jade,有两篇文章不错,可以看看,https://cnodejs.org/topic/5368adc5cf738dd6090060f2和http://www.jb51.net/article/139936.htm,后面这篇文章是网友根号三写的一个关于jade的系列文章的开篇,整个系列里的文章都值得一看。

HTML文档的开始通常是文档声明,对应到jade模板文件里,就是doctype html。还有其它的文档类型,比如xml,可以写作doctype xml。更多请参考http://jade-lang.com/reference/doctype/。

jade有很多标签,用于生成HTML对应的标签。比如html对应,head对应,body对应,p对应,title对应,这也是我们的index.jade用到的所有标签了。通常我们在HTML里使用的标签写法,去掉尖括号就成了jade里可用的标签,比如对应jade里的p。

HTML标签往往可以设置name、id、class等属性,在jade里,是通过tag(attr=value)这种形式表示的。比如p(class=”view-container”),又比如input(type=”checkbox”)。

关于jade标签,这篇文章http://www.jb51.net/article/139942.htm说得很好,请参考。

测试jade模板文件

一开始用jade模板,记不全它的标签,也经常不知道自己的写的模板文件生成的html文档是否正确。还好安装jade后,有一个命令行工具jade,可以用来验证模板文件。

jade的用法如下:jade [options] [dir|file …]

jade命令有很多选项,可以执行“jade -h”查看。要验证模板文件,最简单的办法就是使用jade工具生成为html文档。命令如下:

jade xxx.jade

登录后复制

执行上面的命令,就会在当前目录下生成一个与模板文件同名的html文档。不过格式很难读,完全是一坨屎挤在一起。加上 -P(–pretty) 就好了。这样:

jade -P xxx.jade

登录后复制

比如我们有这么一个使用了AngularJS的模板文件scope_template.jade,内容如下:

doctype htmlhtml(ng-app="myApp") head title= title link(rel='stylesheet', href='/stylesheets/style.css') body p(ng-controller="SimpleTemplate") | ValueA:  input(type="number" ng-model="valueA") br | ValueB:  input(type="number" ng-model="valueB") br br | Expression Value: {{valueA + valueB}} br br input(type="button" ng-click="addValues(valueA, valueB)" value="Click to Add Values {{valueA}} & {{valueB}}") br | Clicked Value: {{valueC}} br script(src="/javascripts/angular-1.4.3.min.js") script(src="/javascripts/scope_template.js")

登录后复制

运行“jade -P scope_template.jade”命令会生成scope_template.html文件,内容如下:

      

ValueA:
ValueB:

Expression Value: {{valueA + valueB}}


Clicked Value: {{valueC}}

登录后复制

需要提一下,我们既可以用jade编写完整的HTML文档,也可以编写符合HTML语法的局部模板。比如下面的jade文件:

p(class="admin-user") p 添加用户 table tr td label 用户名: td input(type="text" name="add_username") tr td label 密码: td input(type="text" name="add_password")  tr td(colspan='2' align="right") input(type="submit" value="增加")

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

node前端模板引擎Jade标签使用详解

nodeJS服务器创建与重启操作代码分享

以上就是Node.js使用jade模板引擎步骤详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2759858.html

(0)
上一篇 2025年3月8日 08:45:48
下一篇 2025年3月8日 08:45:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js Express安装与使用步骤详解

    这次给大家带来Node.js Express安装与使用步骤详解,Node.js Express安装与使用的注意事项有哪些,下面就是实战案例,一起来看一下。 之前我们在安装完Node.js后直接写了个HelloWorld网站,这次呢,我们使用…

    2025年3月8日 编程技术
    200
  • Node.js创建HTTP文件服务器步骤详解

    这次给大家带来Node.js创建HTTP文件服务器步骤详解,Node.js创建HTTP文件服务器的注意事项有哪些,下面就是实战案例,一起来看一下。 HelloWorld示例只有演示意义,这次我们来搞一个实际的例子:文件服务器。我们使用Nod…

    编程技术 2025年3月8日
    200
  • Node.js使用Angular步骤详解

    这次给大家带来Node.js使用Angular步骤详解,Node.js使用Angular的注意事项有哪些,下面就是实战案例,一起来看一下。 在“使用AngularJS”中,我们提到了如何在Node.js项目中引入AngularJS,这次提供…

    2025年3月8日
    200
  • JS内数组合并方法与对象合并实现步骤详解

    这次给大家带来JS内数组合并方法与对象合并实现步骤详解,JS内数组合并方法与对象合并实现的注意事项有哪些,下面就是实战案例,一起来看一下。 1 数组合并 1.1 concat 方法 var a=[1,2,3],b=[4,5,6];var c…

    编程技术 2025年3月8日
    200
  • Node.js使用对话框ngDialog实现步骤详解

    这次给大家带来Node.js使用对话框ngDialog实现步骤详解,Node.js使用对话框ngDialog的注意事项有哪些,下面就是实战案例,一起来看一下。 做网站经常会遇到弹出对话框获取用户输入或弹出对话框让用户确认某个操作之类的情景,…

    编程技术 2025年3月8日
    200
  • 解析Vue.js下载方式及使用步骤

    这次给大家带来解析Vue.js下载方式及使用步骤,解析Vue.js下载方式及使用的注意事项有哪些,下面就是实战案例,一起来看一下。 vue.js是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。…

    编程技术 2025年3月8日
    200
  • AngularJS模态框模板ngDialog使用案例分享

    这次给大家带来AngularJS模态框模板ngDialog使用案例分享,AngularJS模态框模板ngDialog使用的注意事项有哪些,下面就是实战案例,一起来看一下。 项目开始的时候我们用的对话框是AngularJS的$modal模态框…

    编程技术 2025年3月8日
    200
  • JS实现一个简易的计算器步骤详解

    这次给大家带来JS实现一个简易的计算器步骤详解,JS实现一个简易的计算器的注意事项有哪些,下面就是实战案例,一起来看一下。 自己期末复习的时候就一直想要写一个计算器,闲暇的时候也在想具体怎么实现,觉得应该不难,但就是想写。昨天终于可以开始动…

    2025年3月8日
    200
  • node.js 命令行工具使用详解

    这次给大家带来node.js 命令行工具使用详解,node.js 命令行工具使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一. 先了解一下package.json 每个项目的根目录都有一个 package.json 文件,定义了这…

    2025年3月8日 编程技术
    200
  • js正则相关使用案例分享

    这次给大家带来js正则相关使用案例分享,js正则相关使用的注意事项有哪些,下面就是实战案例,一起来看一下。 JS正则表达式一条龙讲解(从原理和语法到JS正则) JS正则表达式大全(整理详细且实用) vaScript动态正则表达式问题请问正则…

    2025年3月8日
    200

发表回复

登录后才能评论