目录:

  1. 安装模板
  2. 静态资源
  3. 添加视图
  4. 渲染视图
  5. url重定向

模板引擎

从本节课程开始我们要使用express框架实现一个简单的用户登陆功能,让我们先准备一下相关资源。

在nodejs中使用express框架,它默认的是ejs和jade渲染模板,今天我们就以ejs模板为例,讲述模板渲染网页模板的基础功能。

1. ejs模板安装方法

npm install ejs

2. 目录下安装好了之后,如何调用呢,如下所示:

//指定渲染模板文件的后缀名为ejs
app.set('view engine', 'ejs');

3. 默认ejs模板只支持渲染以ejs为扩展名的文件,可能在使用的时候会觉得它的代码书写方式很不爽还是想用html的形式去书写,该怎么办呢,这时就得去修改模板引擎了,也就会用到express的engine函数。

4. engine注册模板引擎的函数,处理指定的后缀名文件。

// 修改模板文件的后缀名为html
app.set( 'view engine', 'html' );
// 运行ejs模块
app.engine( '.html', require( 'ejs' ).__express );//两个下划线

"__express",ejs模块的一个公共属性,表示要渲染的文件扩展名。

静态资源

由于环境的限制,这里我们就不使用静态资源了,但是实际开发中我们肯定会用到,具体使用规则已在下面列出,可参考。

如果要在网页中加载静态文件(css、js、img),就需要另外指定一个存放静态文件的目录,当浏览器发出非HTML文件请求时,服务器端就会到这个目录下去寻找相关文件。

1. 项目目录下添加一个存放静态文件的目录为public。

2. 在public目录下在添加三个存放js、css、img的目录,相应取名为javascripts、stylesheets、images。

3. 然后就可以把相关文件放到相应的目录下了。

4. 比如,浏览器发出如下的样式表请求:

<link href="/stylesheets/bootstrap.min.css" rel="stylesheet" media="screen">

服务器端就到public/stylesheets/目录中寻找bootstrap.min.css文件。

有了静态目录文件,我们还得在启动文件里告诉它这个静态文件路径,需要指定一下,如下所示:

app.use(express.static(require('path').join(__dirname, 'public')));

PS:express.static —— 指定静态文件的查找目录。

使用use函数调用中间件指定express静态访问目录,'public'就是我们我们新建的用来存放静态文件的总目录。

添加视图

好,下面我们就来添加网页模板了,项目中我们会新建一个目录用来单独存放模板文件,这里我们就统一放到根路径上了。

下面开始新建index.html、login.html、home.html三个页面。

1. index.html页面参考内容如下:

<div style="height:400px;width:550px;margin:50px auto;margin-left:auto;border:solid 1px;background: rgb(246, 246, 253);">
<div style="margin-left: 35px;">
<h1>首页</h1>
<form action="#" role="form" style="margin-top: 90px;margin-left: 60px;">
<h1>欢迎进入首页!</h1>
<div style="margin-top: 145px;">
<input type="button" value="登 陆">
</div>
</form>
</div>
</div>

2. login.html页面参考内容如下:

...
<title>用户登录</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
... <div style="height:300px;width:350px;margin:100px auto;margin-left:auto;border:solid 1px;background: rgb(246, 246, 253);">
  <div style="width:200px;margin:auto;margin-top:50px;">
    <h1>用户登录</h1>
    <form action="#" role="form" method="post">
      <input id="username" type="text" name="username" style="margin: 20px 0px;">
      <input id="password" type="password" name="password">
      <div style="margin-top:30px;margin-left:125px;">
        <input type="button" value="登 陆">
      </div>
    </form>
  </div>
</div>

3. home.html页面参考内容如下:

<div style="height:400px;width:550px;margin:50px auto;margin-left:auto;border:solid 1px;background: rgb(246, 246, 253);">
  <div style="margin-left: 45px;">
    <h1>主页</h1>
    <form action="#" role="form" style="margin-top: 90px;">
      <h1>登陆成功!</h1>
      <div style="margin-top: 145px;">
        <input type="button" value="退 出">
      </div>
    </form>
  </div>
</div>

访问视图

我们要如何对网页模板进行访问呢,这就要用到res对象的render函数了。

1. render函数,对网页模板进行渲染。

2. 格式:res.render(view, [locals], callback);

3. 参数view就是模板的文件名callback用来处理返回的渲染后的字符串,options、callback可省略,在渲染模板时[locals](JSON格式)可为其模板传入变量值,在模板中就可以调用所传变量了,在后面我们会讲述具体使用方法,也可先自行使用看其效果。

4. 比如渲染我们刚刚添加的index.html页面,我们就可以在app.js中写入如下内容:

var express = require('express');
var app = express();
var path = require('path'); app.set('views', __dirname); app.set( 'view engine', 'html' );
app.engine( '.html', require( 'ejs' ).__express ); app.get('/', function(req, res) {
  res.render('index');
}); app.listen(80);
运行之后在测试地址我们就可以看到所渲染的index页面了,试一试其他页面是否也可渲染成功?

4. 和静态文件一样,我们也要设置views存放的目录,如下:

// 设定views变量,意为视图存放的目录
app.set('views', __dirname);

有了网页模板和指定目录,下面就可以访问它们了。

redirect基本用法

redirect方法允许网址的重定向,跳转到指定的url并且可以指定status,默认为302方式。

格式:res.redirect([status], url);

例1:使用一个完整的url跳转到一个完全不同的域名。

res.redirect("http://www.hub wiz.com");

例2:跳转指定页面,比如登陆页,如下:

res.redirect("login");
后面我们开始实现登陆功能,先试一下redirect重定向,跳转到我们网站如何?

nodejs框架express准备登录的更多相关文章

  1. nodejs框架express实现登录

    目录: 访问视图 Post请求 Post请求 - body(1) Post请求 - body(2) Post登陆1 Post登陆2 页面访问控制1 页面访问控制2 访问视图 前面我们已经添加了视图模板 ...

  2. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

  3. [转] NodeJS框架express的途径映射(路由)功能及控制

    NodeJS框架express的路径映射(路由)功能及控制 我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route co ...

  4. 知名nodeJS框架Express作者宣布弃nodeJS投Go

    知名 nodeJS 框架 Express 的作者 TJ Holowaychuk 在 Twitter 发推并链接了自己的一篇文章,宣布弃 nodeJS 投 Go. 他给出的理由是:Go 语言和 Rust ...

  5. nodejs框架express快速开始

    认识express 创建应用 get请求 简述中间件 all方法 use方法1 use方法2 回调函数 获取主机.路径名 Get请求 - query Get请求 - param Get请求 - par ...

  6. NodeJS框架express的路径映射(路由)功能及控制

    我 们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇CSSer将提供express框架的route和route control章节,route实现了客户端请求的URL的路径映 ...

  7. CentOS安装运行NodeJS框架Express

    安装依赖包 yum -y install gcc make gcc-c++ openssl-devel wget 下载/解压NodeJs wget http://nodejs.org/dist/v0. ...

  8. (转)windows下安装nodejs及框架express

    转自:http://jingyan.baidu.com/article/456c463b60fb380a583144a9.html windows下安装nodejs及框架express nodejs从 ...

  9. nodejs的Express框架源码分析、工作流程分析

    nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...

随机推荐

  1. mysql中一些简单但是新手容易犯的错误

    一.概述 本人近期使用mysql,由于是新手,常常碰到一些问题,因此,在这里做了一个错误备忘录. 二.错误罗列 1.MySQL 记录不存在时插入 记录存在则更新的实现方法 http://www.cnb ...

  2. Linux下安装配置Apache+PHP+MariaDB

    一.安装apache 1.下载并安装apache yum install httpd 2.启动apache systemctl start httpd.service 3.停止apache syste ...

  3. js流程控制语句

    do...while语句 do...while语句是一种先运行,后判断的循环语句.也就是说,不管条件是否满足,至少先运行一次循环体. var box = 1;                      ...

  4. 修改wamp默认网站目录

    使用WAMP集成环境,如何更改web根目录 做php开发使用WAMP集成环境的同学大部分有过这样的经历: 如果你试图修改web根目录,那么你肯定会想到要修改apache/apache2.2.11/co ...

  5. FK JavaScript之:ArcGIS JavaScript添加Graphic,地图界面却不显示

    使用ArcGIS JavaScript,往地图中添加几个Graphic,基本是与官网示例代码一致.绘制的图形一闪而过之后,就没了 核心代码如下: iniToolBar: function () { t ...

  6. 【HDU4630 No Pain No Game】 dp思想+线段树的离线操作

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4630 题意:给你n个数据范围在[1,n]中的数,m个操作,每个操作一个询问[L,R],让你求区间[L, ...

  7. 配置perl-cgi的运行环境,由于Active Perl安装在d:\perl

    Apache 1.3.22 for Win32+PHP 4.0.6+Active Perl 5.006001+Zend Optimizer v1.1.0+mod_gzip 1.3.19.1a+MySQ ...

  8. 4s使用iOS 8的一些真實感受

    iPhone永遠離不開史上手機的爭論!你是否也在用呢? 今年iPhone 6/6Plus的發佈和上市可以說是振奮人心,大螢幕的升級.圓潤的外觀改變.全新的iOS 8系統,都是極具吸引力的.作為一名互聯 ...

  9. BizTalk开发系列(十) ESB Guidance安装笔记

    ESB指导工具包(ESB Guidance)是一个运行于BizTalk Server 2006 R2之上的一个框架.详细信息访问ESB指导工具包社区网站 .源码下载 ESB Guidance的安装过程 ...

  10. IOS第四天(1:图片的方法和缩小,遮罩层)

    @interface HMViewController () @property (nonatomic, strong) UIButton *cover; //阴影 @end @implementat ...