我的node+express小例子
启动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小例子相关推荐
- mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)
点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...
- node+express实现文件上传功能
在进行node web开发时,我们可能经常遇到上传文件的问题,这一块如果我们没有经验,可能会遇到很多坑,下面我将跟大家分享一下,实现文件上传的一些方式. 一.node+express文件上传的常用方式 ...
- node+express+mongodb初体验
从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...
- JointJS简单小例子
JointJS是一个HTML5的JavaScript库,用于创建完全互动式的图表,它极易上手且操作简单,并且支持所有的现代浏览器,对于时间紧迫的我们非常有利.我们可以使用JointJS已提供的图元素绘 ...
- c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...
- php函数的默认值,php函数指定默认值方法的小例子
php函数指定默认值方法的小例子 本节内容: php函数指定默认值 在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替. 例1, 复制代码 代码如下: ...
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子 作者:寒小阳 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/de ...
- spring mvc文件上传小例子
spring mvc文件上传小例子 1.jsp页面 <%@page contentType="text/html;charset=UTF-8"%> <%@page ...
- Java基础。public,private,static变量!以及一个实例化的小例子 以及方法
public,适用范围最广! private,仅仅方法内部可以使用!创建出来的对象也是不可以使用的! 代码: public class mmm12333 {public int a = 1111;pr ...
最新文章
- 网页(Webpage)粒度分析算法
- 一天之内用SDN能做出什么
- 服务器中毒后老板差点把我开除了。。。
- SEE Conf: Umi 4 设计思路文字稿
- sql怎么修改服务器角色,创建、删除或修改角色 (Management Studio)
- 【转】VS编程,快速折叠或者展开代码到 #region 级别的设置方法。
- “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
- 快手通过港交所聆讯 2020年前三季度经调亏损72亿元
- 索引法则--字符串不加单引号会导致索引失效
- 【网络教程】Chrome内核浏览器开启多线程下载(edge chrome)
- fei 正则表达式_正则表达式 匹配 中文/日文/韩文
- SFP光模块怎么配对光纤线缆
- 网络运维中静态路由 三层交换技术 动态路由 OSPF协议的配置
- 思维为何会越来越原地踏步No.209
- 深度分析: Google 和 Apple 从来就不是死对头
- 2021年全球CAN按键面板行业调研及趋势分析报告
- php app 推送原理,微信公众号开发的那点事第一篇——消息推送原理
- StratifiedShuffleSplit实现分层抽样交叉验证
- 混迹在腾讯微博的知名站长名单
- Git与Git可视化工具TortoiseGit-小乌龟安装和配置
热门文章
- java.util.concurrent.CyclicBarrier;
- javaList容器中容易忽略的知识点
- citrix lic申请流程
- 对 makefile 中 .PRECIOUS 的学习
- 2012-06-04 老男孩老师 “我毕业了”(转)
- 人生,是一种无法抗拒的前进
- python file_python3之File文件方法
- notepad++主题
- 浅谈工程师的调试法宝(5) -JScope的应用_MCU
- Android异步消息处理机制