Node.js+express 4.x 入门笔记
二、在express4.x下,让ejs模板文件,使用扩展名为html的文件
一、新建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 (本文仅供学习交流,欢迎大家共同探索)
Node.js+express 4.x 入门笔记的更多相关文章
- node.js(express)连接mongoDB入门指导
一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- Windows下Node.js+Express+WebSocket 安装配置
Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...
- React+Node.js+Express+mongoskin+MongoDB
首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
- Node.js和MongoDB - MongoJS入门
第一次尝试翻译外国牛人的博文,希望大家喜欢. 本文源码详见:https://github.com/njaulj/mongojs 一点都不夸大的说,近年来node.js和mongodb的确是大放异彩,在 ...
随机推荐
- mha0.56版本安装使用排错
1.master_check_ssh --conf=/etc/app1.conf 这个检查就报错的我觉得百分之九十都是ssh之间连接问题.务必要保证各节点之间都可以免秘钥访问! 2.mas ...
- centos vm 桥接 --网络配置
/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none BROADCAST=192.168.1.255 HWADDR= ...
- Django REST framework 内置访问频率控制
对匿名用户采用 IP 控制访问频率,对登录用户采用 用户名 控制访问频率. from rest_framework.throttling import SimpleRateThrottle class ...
- 【Codeforces 118B】Caesar's Legions
[链接] 我是链接,点我呀:) [题意] 序列中不能连续出现k1个以上的1以及不能连续出现k2个以上的2,然后一共有n1个1以及n2和2,要求这n1+n2个数字都出现. 问序列有多少种可能. [题解] ...
- nyoj_513_A+B Problem IV_20130131532
A+B Problem IV 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着 ...
- java web解决表单重复提交
首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提交?2.什么情况下会出现表单重复提交?3.什么情况需要避免表单重复提交? 什么叫表单提交问题,说白了,就是同一份信息,重 ...
- ZooKeeper之初识
它是什么 俗称动物管理员,它使用java开发,开源,接口简单,高效,稳定的分布式系统,为其它分布式系统提供协调服务 为什么会存在? 开发分布式系统跟单机上做开发完全不同,碰到的问题完全不同,开发分布式 ...
- 关于创建Android Library所须要知道的一切
关于创建Android Library所须要知道的一切 Android 库(Library)在结构上与 Android 应用模块同样.应用模块所能够包括的东西.在库中都同意存在,包括代码文件.资源文件 ...
- java Regex
超全 http://www.rexegg.com/regex-lookarounds.html 这篇文章不错:http://www.cnblogs.com/lzq198754/p/5780340.ht ...
- 利用Node.js对某智能家居server重构
原文摘自我的前端博客,欢迎大家来訪问 http://www.hacke2.cn 之前负责过一个智能家居项目的开发,外包重庆一家公司的.我们主要开发server监控和集群版管理. 移动端和机顶盒的远程通 ...