• Node.js+express 4.x 入门笔记


    一、新建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.加载依赖

    var ejs = require('ejs');

    2.修改配置
    /**
    * 定义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

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

     2.配置路由 app.js

    /**
    * 匹配路径和路由
    */
    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
    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' });
    });

    四、session使用
    1.加载依赖 app.js
    var cookieSession = require('cookie-session');
    2.配置session app.js
    app.use(cookieSession({
    name: 'session', // he name of the cookie to set
    keys: ['key1', 'key2']
    }));
    3.在登录验证成功后,把user存入session,登录不成功时,把error提示信息存入session  index.js(修改doLogin)
    /* 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');
    }
    });
    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 %>

    五、页面访问控制及提示
    1.在/welcome上拦截请求,调用authentication()进行认证,不通过则跳转到login.html并提示:please login index.js
    /* 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');
    }
    }


    六、代码下载地址
    https://github.com/LiaoXueqing/NodeJs.git

    (本文仅供学习交流,欢迎大家共同探索)

  • 相关阅读:
    【转载】有效防止百度移动搜索转码
    jquery 弥补ie6不支持input:hover状态
    解决 IE6 position:fixed 固定定位问题
    png-24在ie6中的几种透明方法
    Chrome调试小技巧
    html select美化模拟jquery插件select2.js
    响应式设计的十个基本技巧
    colspan和rowspan
    【转】为什么整个互联网行业都缺前端工程师?
    设计模式之桥接模式
  • 原文地址:https://www.cnblogs.com/snowcan/p/6649946.html
Copyright © 2020-2023  润新知