启动index.js:

var express = require("express");
var path = require("path");
var open = require("child_process");
var port = process.env.PORT || 3000;
var cookieParser = require('cookie-parser');
//bodyParser 的功能是解析客户端请求,通常是通过 POST 发送的内容
var bodyParser = require('body-parser');
var favicon = require("serve-favicon");
var logger = require('morgan');
var ejs = require('ejs');
//由于新版本不支持layout.ejs,则需要引入express-partials模块
var partials = require('express-partials');  var MongoStore = require('connect-mongo');
var settings = require("./settings");
var app = express();app.set(port,3000);//设置引擎jade
//app.set("views","./views");
//app.set("view engine","jade");// 定义EJS模板引擎和模板文件位置,也可以使用jade或其他模型引擎
app.set("views",path.join(__dirname,'ejviews'));
//app.set("view engine","ejs");//注册html模板引擎 将模版页后缀换成.html  http://segmentfault.com/a/1190000000598557
app.engine('.html',ejs.__express);
//将模板引擎换成html
app.set('view engine', 'html');//app.js 的中 app.configure 中添加以下内容,这样页面布局功能可以关闭和启用layout功能
app.set('view options', {layout: true
});//定义icon图标
app.use(favicon(__dirname + '/public/images/icon.png'));
//定义日志和输出级别
app.use(logger('dev'));
// 定义数据解析器
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended : false}));
// 定义cookie解析器
app.use(cookieParser());
//定义静态文件目录
app.use(express.static(path.join(__dirname,'public')));app.use(partials());//设置路由
app.get('/',function(req,res){res.redirect("/home");res.render('index',{title:'imooc home',name:"pfan",content:"大家好,我来自火星,我的任务是奋斗!",layout:"layout"});res.send('The time is ' + new Date().toString());
});app.get('/user',function(req,res,next){res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});res.write("hello world");res.write("hello world");console.log(req.body.title);res.send(req.body.title + req.body.text);res.end();//Express 提供了路由控制权转移的方法,即回调函数的第三个参数next,通过调用next(),会将路由控制权转移给后面的规则
    next();
});
app.get('/home',function(req,res,next){res.render('home',{title:'imooc home',name:"pfan",content:"大家好,我来自火星,我的任务是奋斗!",layout:"layout"});
});var server = app.listen(3000,function(){console.log("listening on port %d",server.address().port);
});open.exec("start http://127.0.0.1:3000");

  路由模版:

  layout.html

<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<meta charset="UTF-8">
<meta name="keywords" content="express">
<meta name="description" content="express">
<meta name="author" content="pingfan">
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<%- body %>
</body>
</html>

  header.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <title><%= title %></title>
 5 <meta charset="UTF-8">
 6 <meta name="keywords" content="express">
 7 <meta name="description" content="express">
 8 <meta name="author" content="pingfan">
 9 <link rel='stylesheet' href='/stylesheets/style.css' />
10 </head>
11 <body>

  footer.html

<link rel='stylesheet' href='/javascripts/fastclick.js' />
</body>
</html>

  home.html

<% include header.html %>
<h1><%= title %></h1>
<p>Welcome to <%= name %></p>
<div class="red_txt"><%= content %>
</div>
<h2>你大爷的,你不做会死啊</h2>
<% include footer.html %>

参考资料:

cookie 和 session: https://github.com/alsotang/node-lessons/tree/master/lesson16

expressjs session配置: http://droiz.me/2015/02/21/session%E9%85%8D%E7%BD%AE/

Express 4.x Node.js的Web框架: http://blog.csdn.net/u013758116/article/details/38703381

express session 不同步问题: http://www.lellansin.com/express-session-%E4%B8%8D%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98.html

Session原理、安全以及最基本的Express和Redis实现: http://segmentfault.com/a/1190000002630691

我的node+express小例子相关推荐

  1. mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...

  2. node+express实现文件上传功能

    在进行node web开发时,我们可能经常遇到上传文件的问题,这一块如果我们没有经验,可能会遇到很多坑,下面我将跟大家分享一下,实现文件上传的一些方式. 一.node+express文件上传的常用方式 ...

  3. node+express+mongodb初体验

    从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...

  4. JointJS简单小例子

    JointJS是一个HTML5的JavaScript库,用于创建完全互动式的图表,它极易上手且操作简单,并且支持所有的现代浏览器,对于时间紧迫的我们非常有利.我们可以使用JointJS已提供的图元素绘 ...

  5. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  6. php函数的默认值,php函数指定默认值方法的小例子

    php函数指定默认值方法的小例子 本节内容: php函数指定默认值 在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替. 例1, 复制代码 代码如下: ...

  7. 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子

    深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/de ...

  8. spring mvc文件上传小例子

    spring mvc文件上传小例子 1.jsp页面 <%@page contentType="text/html;charset=UTF-8"%> <%@page ...

  9. Java基础。public,private,static变量!以及一个实例化的小例子 以及方法

    public,适用范围最广! private,仅仅方法内部可以使用!创建出来的对象也是不可以使用的! 代码: public class mmm12333 {public int a = 1111;pr ...

最新文章

  1. 网页(Webpage)粒度分析算法
  2. 一天之内用SDN能做出什么
  3. 服务器中毒后老板差点把我开除了。。。
  4. SEE Conf: Umi 4 设计思路文字稿
  5. sql怎么修改服务器角色,创建、删除或修改角色 (Management Studio)
  6. 【转】VS编程,快速折叠或者展开代码到 #region 级别的设置方法。
  7. “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
  8. 快手通过港交所聆讯 2020年前三季度经调亏损72亿元
  9. 索引法则--字符串不加单引号会导致索引失效
  10. 【网络教程】Chrome内核浏览器开启多线程下载(edge chrome)
  11. fei 正则表达式_正则表达式 匹配 中文/日文/韩文
  12. SFP光模块怎么配对光纤线缆
  13. 网络运维中静态路由 三层交换技术 动态路由 OSPF协议的配置
  14. 思维为何会越来越原地踏步No.209
  15. 深度分析: Google 和 Apple 从来就不是死对头
  16. 2021年全球CAN按键面板行业调研及趋势分析报告
  17. php app 推送原理,微信公众号开发的那点事第一篇——消息推送原理
  18. StratifiedShuffleSplit实现分层抽样交叉验证
  19. 混迹在腾讯微博的知名站长名单
  20. Git与Git可视化工具TortoiseGit-小乌龟安装和配置

热门文章

  1. java.util.concurrent.CyclicBarrier;
  2. javaList容器中容易忽略的知识点
  3. citrix lic申请流程
  4. 对 makefile 中 .PRECIOUS 的学习
  5. 2012-06-04 老男孩老师 “我毕业了”(转)
  6. 人生,是一种无法抗拒的前进
  7. python file_python3之File文件方法
  8. notepad++主题
  9. 浅谈工程师的调试法宝(5) -JScope的应用_MCU
  10. Android异步消息处理机制