一、新建node项目并实现访问

二、在express4.x下,让ejs模板文件,使用扩展名为html的文件

三、实现路由功能

四、session使用

五、页面访问控制及提示

六、代码下载地址

一、新建node项目并实现访问

1.选择一个工程目录,通过命令行进入工程目录

2.全局安装express    命令:npm install -g express

3.使用express命令创建工程并支持ejs    命令:express -e myproject

该命令执行完后,根据提示安装依赖包,然后使用命令:SET DEBUG = myproject:* &npm start 启动程序

在浏览器输入localhost:3000访问新建的项目

二、在express4.x下,让ejs模板文件,使用扩展名为html的文件(代码如下:)

 1.加载依赖

  1. var ejs = require('ejs');
  2.  
  3. 2.修改配置
  1. /**
    * 定义EJS模板引擎和模板文件位置,也可以使用jade或其他模型引擎
    */
    //app.set('views', path.join(__dirname, 'views'));
    // app.set('view engine', 'ejs');
    /**
    * 把上面两行 改成下面三行 页面使用.html文件
    */
    app.set('views', path.join(__dirname, 'views/'));
    app.engine('.html',ejs.renderFile);
    app.set('view engine', 'html');// app.set('view engine', 'ejs');

 三、实现路由功能

1.加载路由控制 app.js

  1. /**
    * 加载路由控制
    */
    var routes = require('./routes/index');

 2.配置路由 app.js

  1. /**
    * 匹配路径和路由
    */
    app.use('/', routes); //home page
    app.use('/login', routes); //login page
    app.use('/doLogin', routes); //doLogin
    app.use('/logout', routes); //logout
    app.use('/welcome', routes); //welcome page
  1. 3.实现路由逻辑 routes/index.js
    var express = require('express');
    var router = express.Router();
    /* home page. */
    router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
    });
    /* login page. */
    router.get('/login', function(req, res, next) {
    res.render('login', { title: 'login' });
    });
    /* doLogin */
    router.post('/doLogin', function(req, res, next) {
    var user={
    username:'admin',
    password:'admin'
    }
    if(req.body.username===user.username && req.body.password===user.password){
    res.redirect('welcome');
    }else{
    return res.redirect('/login');
    }
    });
    /* logout */
    router.get('/logout', function(req, res, next) {
    res.redirect('/login');
    });
    /* welcome page. */
    router.get('/welcome', function(req, res, next) {
    res.render('welcome', { title: 'welcome' });
    });
  2.  
  3. 四、session使用
    1.加载依赖 app.js
  1. var cookieSession = require('cookie-session');
  1. 2.配置session app.js
  1. app.use(cookieSession({
    name: 'session', // he name of the cookie to set
    keys: ['key1', 'key2']
    }));
  1. 3.在登录验证成功后,把user存入session,登录不成功时,把error提示信息存入session index.js(修改doLogin
  1. /* doLogin */
    router.post('/doLogin', function(req, res, next) {
    var user={
    username:'admin',
    password:'admin'
    }
    if(req.body.username===user.username && req.body.password===user.password){
    req.session.user = user;
    res.redirect('welcome');
    }else{
    req.session.error='username or password error!';
    return res.redirect('/login');
    }
    });
  1. 4.app.js中增加以下代码 (这个和中间件有顺序问题,应放在中间件之前)
    app.use(function(req, res, next){
    res.locals.session = req.session;
    res.locals.user = req.session.user;
    var err = req.session.error;
    delete req.session.error;
    res.locals.message = '';
    if (err) res.locals.message = err ;
    next();
    });
    5.html页面读取session里面的值
    login.html中加入:<%- message %> 当用户名和密码输入不正确的时候,将在代码处显示:username or password error!
    welcome.html中加入:<%- session.user.username %> 该处会显示:admin
    注意:此处也可以写成<%- user.username %> 或<%= session.user.username %>
  2.  
  3. 五、页面访问控制及提示
    1.在/welcome上拦截请求,调用authentication()进行认证,不通过则跳转到login.html并提示:please login index.js
  1. /* welcome page. */
    router.get('/welcome', function(req, res, next) {
    authentication(req, res);
    console.log('wecome___'+ req.session.user);
    res.render('welcome', { title: 'welcome' });
    });
    function authentication(req, res) {
    console.log('Not login');
    if (!req.session.user) {
    req.session.error='please login';
    return res.redirect('/login');
    }
    }
  2.  
  3. 六、代码下载地址
  1. https://github.com/LiaoXueqing/NodeJs.git
  2. (本文仅供学习交流,欢迎大家共同探索)

Node.js+express 4.x 入门笔记的更多相关文章

  1. node.js(express)连接mongoDB入门指导

    一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...

  2. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  3. Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识

    前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...

  4. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  5. Windows下Node.js+Express+WebSocket 安装配置

    Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...

  6. React+Node.js+Express+mongoskin+MongoDB

    首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...

  7. Node.js Express 框架学习

    转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...

  8. Node.js Express 框架

    Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...

  9. Node.js和MongoDB - MongoJS入门

    第一次尝试翻译外国牛人的博文,希望大家喜欢. 本文源码详见:https://github.com/njaulj/mongojs 一点都不夸大的说,近年来node.js和mongodb的确是大放异彩,在 ...

随机推荐

  1. dubbo之并发控制

    并发控制 配置样例 样例 1 限制 com.foo.BarService 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个: <dubbo:service interface ...

  2. Windows下环境变量显示、设置或删除操作详情

    显示.设置或删除 cmd.exe 环境变量. SET [variable=[string]] variable 指定环境变量名. string 指定要指派给变量的一系列字符串. 要显示当前环境变量,键 ...

  3. Makefile精髓篇【转】

    什么是makefile?或许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序猿,makefile还是 ...

  4. vi 命令学习(三)

    [末行命令] 末行命令主要是针对文件进行操作的:保存.退出.保存&退出.搜索&替换.另存.新建.浏览文件 命令                                     ...

  5. vue03 axios

    4. 通过axios实现数据请求 vue.js默认没有提供ajax功能的. 所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互. 注意,axios本质上就是java ...

  6. img、a标签的使用

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  7. 16.1 foreach 循环中捕获变量的变化

    在 foreach 循环内的匿名函数(通常为Lambda表达式)中捕获循环 变量时要格外小心.代码清单16-1就展示了这样一个简单的示例,它看上去似乎会输出 x . y . z . string[] ...

  8. vue上传阿里云图片组件

    首先需要弄一个阿里云存储.然后配置一下.前端就可以直接上传图片并回显.可在父级组件定义上传图片类型以及大小.默认为500kb.样式可以自适应调整. <template> <div c ...

  9. Linux之网络文件共享服务(NFS)

    概念: NFS:Network File System 网络文件系统,基于内核的文件系统.Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote ...

  10. 第2章 Python序列

    Python序列类似于C或Basic中的一维.多维数组等,但功能要强大很多,使用也更加灵活.方便,Head First Python一书就戏称列表是“打了激素”的数组. Python中常用的序列结构有 ...