启动index.js:

var express = require("express");
var path = require("path");
var open = require("child_process");
var port = process.env.PORT || ;
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,); //设置引擎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(,{"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(,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

 <!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>

  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. node实战小例子

    第一章 2020-2-6 留言小本子 思路(由于本章没有数据库,客户提交的数据放在全局变量,接收请求用的是bodyParser, padyParser使用方法 app.use(bodyParser.u ...

  2. 【原】小玩node+express爬虫-2

    上周写了一个node+experss的爬虫小入门.今天继续来学习一下,写一个爬虫2.0版本. 这次我们不再爬博客园了,咋玩点新的,爬爬电影天堂.因为每个周末都会在电影天堂下载一部电影来看看. talk ...

  3. Webpact打包React后端Node+Express

    Webpact打包React后端Node+Express 前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias ...

  4. Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序

    1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用.[Kuberne ...

  5. 【zTree】 zTree使用的 小例子

    使用zTree树不是第一次了  但是 还是翻阅着之前做的 对照着 使用起来比较方便  这里就把小例子列出来   总结一下使用步骤 这样方便下次使用起来方便一点 使用zTree树的步骤: 1.首先  在 ...

  6. Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子

    Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子 第一个例子都是比较简单的博客园登录界面,就像学习编程语言时候都是从Hello,World!开始. 1 ...

  7. node express

    在某QQ群里,发现大家都在搞node,为了不被out,这周主要研究了一下,还挺高大上. 参考了下资料,适合初学者学习. Node和NPM的安装够便捷了,不细说...有几点基础顺手提一下: 安装命令中的 ...

  8. Node+Express+MongoDB + Socket.io搭建实时聊天应用

    Node+Express+MongoDB + Socket.io搭建实时聊天应用 前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战 ...

  9. 零基础实现node+express个性化聊天室

    本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 ...

随机推荐

  1. Cannot retrieve the latest commit at this time.

    此时无法检索最新提交. GitHub页面上提示: Cannot retrieve the latest commit at this time. 还没更新的意思,等他更新就好了. 更新后:

  2. C++ 使用vector时遇到的一个问题

    我在测试程序中定义一个存储三维点的结构体,并定义该结构体的vector,当我在向vector插入元素时,编译一直提示错误: 代码片段如下:  C++ Code  1234567891011121314 ...

  3. vim在系统剪切板的复制与粘贴

    https://blog.csdn.net/zhangxiao93/article/details/53677764

  4. java okhhtp下载学信网学籍信息

    学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别.最近连学籍信息和学历信息也换成图片了,常规的正则 css xpath都不能使. 下载图片,需要先登录,获取登陆后的cookie和学籍信息的 ...

  5. js获取iframe里面的元素

    直接获取不行 var  win2 = document.querySelector('iframe[width = "1280" ]').contentWindow; var lo ...

  6. 分分钟学会GCD

    2014 什么是GCD Grand Central Dispatch (GCD)是异步运行任务的技术之中的一个.一般将应用程序中记述的线程管理用的代码在系统级中实现.因为线程管理是作为系统的一部分来实 ...

  7. Dubbo -- 系统学习 笔记 -- 示例 -- 集群容错

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 集群容错 在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重 ...

  8. Java NIO原理 图文分析及代码实现

    Java NIO原理图文分析及代码实现 前言:  最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请 ...

  9. swift--浮点数转换成整数(四舍五入/直接截断)

    1,直接截取小数部分转换成整数 let i = Int(23.52536) print("输出是:\(i)") 2,四舍五入转换成证书 let q = lround(586.565 ...

  10. iOS Ad hoc

    There's one situation in which you need an Ad Hoc profile, and that's when you want to test Push Not ...