设为首页 收藏本站
查看: 1438|回复: 0

[经验分享] nodejs框架express准备登录

[复制链接]

尚未签到

发表于 2017-2-22 12:16:12 | 显示全部楼层 |阅读模式
  目录:


  • 安装模板
  • 静态资源
  • 添加视图
  • 渲染视图
  • 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重定向,跳转到我们网站如何?

参考资料:http://www.dwz.cn/3e6UbG

本文链接:http://www.cnblogs.com/jasonnode/p/4487510.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345753-1-1.html 上篇帖子: nodejs 搭建自己的简易缓存cache管理模块 下篇帖子: [nodejs]国内npm安装nodejs modules失败的几个解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表