启动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. android 转屏 onConfigurationChanged 不会执行的问题

    参考 http://blog.csdn.net/tangzhilu/article/details/7399988 MainActivity 代码 package com.example.config ...

  2. Synycovery 7.18f 一个优秀的同步软件

    Serial Key Name: Vdown RG Code: MCKOFA7MNGUQY7954

  3. 下拉刷新 上拉更多 支持ListView GridView WebView【转载】

    转载自:http://www.stay4it.com/?p=245 老贴重发,源代码放附件了,需要的下载把. 终于有新货了.昨天改了下,在ListView和GridView加了个返回到顶部的按钮,li ...

  4. AngularJS------命令行

    如下:(‘$’符号不需要输入哦) $ ng build --发布项目

  5. 5 -- Hibernate的基本用法 --1 3 流行的ORM框架简介

    ⊙ JPA : JPA本身只是一种ORM规范,并不是ORM产品.它是Java EE规范制定者向开源世界学习的结果.JPA实体与Hibernate PO十分相似,甚至JPA实体完全可作为Hibernat ...

  6. libevent 入门教程:Echo Server based on libevent(转)

    下面假定已经学习过基本的socket编程(socket, bind, listen, accept, connect, recv, send, close),并且对异步/callback有基本的认识. ...

  7. 《NodeJs开发指南》第五章微博开发实例的中文乱码问题

    在<NodeJs开发指南>第五章,按照书中的要求写好微博实例后,运行代码,发现中文显示出现乱码,原因是:views文件夹下的ejs文件的编码格式不是utf-8. 解决方法:以记事本方式打开 ...

  8. CentOS6.8_64位手动安装MySQL5.6

    1.在CentOS6.8上安装mysql5.6 2.下载编译包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linu ...

  9. Nginx 解析PHP

    配置如下: [root@localhost ~]$ cat /usr/local/nginx/conf/vhost/test.com.conf server { listen 80; server_n ...

  10. U3D调用7z解压文件

    using UnityEngine; using System; using System.IO; using System.Diagnostics; public class Test : Mono ...