node.js Web应用框架Express.js(一)
什么是Express.js
Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单,Express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的功能。
开篇,这里就只做简单的介绍,整理一些有关express.js的资源,与大家一起学习
Express.js中文社区:http://expressjs.jser.us/
Express.js 中文入门指引手册:http://my.oschina.net/youdoce/blog/68476
Nodejs开发框架Express3.0开发手记–从零开始:http://blog.fens.me/nodejs-express3/
Expressjs中文平台:http://www.expressjs.com.cn/
Node.js 入门: https://cnodejs.org/getstart
csdn中博文expressjs教程:http://blog.csdn.net/chszs/article/details/8869655
Node.js开发框架Express4.x:http://blog.fens.me/nodejs-express4/
记住我们用node+express+bowser,是bower 进行下载依赖js需要先安装好git。
express启动文件,app.js:
// 加载依赖库,原来这个类库都封装在connect中,现在需地注单独加载
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser'); // 加载路由控制
var routes = require('./routes/index');
//var users = require('./routes/users'); // 创建项目实例
var app = express(); // 定义EJS模板引擎和模板文件位置,也可以使用jade或其他模型引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs'); // 定义icon图标
app.use(favicon(__dirname + '/public/favicon.ico'));
// 定义日志和输出级别
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('/', routes);
//app.use('/users', users); // 404错误处理
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = ;
next(err);
}); // 开发环境,500错误处理和错误堆栈跟踪
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || );
res.render('error', {
message: err.message,
error: err
});
});
} // 生产环境,500错误处理
app.use(function(err, req, res, next) {
res.status(err.status || );
res.render('error', {
message: err.message,
error: {}
});
}); // 输出模型app
module.exports = app;
项目启动代码也被移到./bin/www的文件,www文件也是一个node的脚本,用于分离配置和启动程序,源码:
#!/usr/bin/env node /**
* 依赖加载
*/
var app = require('../app');
var debug = require('debug')('nodejs-demo:server');
var http = require('http'); /**
* 定义启动端口
*/
var port = normalizePort(process.env.PORT || '');
app.set('port', port); /**
* 创建HTTP服务器实例
*/
var server = http.createServer(app); /**
* 启动网络服务监听端口
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening); /**
* 端口标准化函数
*/
function normalizePort(val) {
var port = parseInt(val, );
if (isNaN(port)) {
return val;
}
if (port >= ) {
return port;
}
return false;
} /**
* HTTP异常事件处理函数
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
} var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port // handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit();
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit();
break;
default:
throw error;
}
} /**
* 事件绑定函数
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
写烂了的node例子:
var http = require("http"),
open = require("child_process"); console.log("启动httpserver服务");
var server = http.createServer(function(req,res){
res.writeHead(,{"Content-Type":"text/html;charset=UTF-8"});
res.write("开始\n");
res.end("我来了");
}); server.listen(,"127.0.0.1");
open.exec("start http://127.0.0.1:3000"); console.log("3000端口。")
var net = require("net"),
open = require("child_process"); console.log("启动httpserver服务"); var server = net.createServer(function(req,res){ //设置请求编码
socket.write("Echo server \r\n");
})
node 项目经常需要安装的模块在项目根目录进行安装:
npm install express
npm install jade
npm install mongoose
npm install bower -g
bower install bootstrap
经典教程:用 Express 4.0 重写《Node.js 开发指南》第5章的项目实例
node.js Web应用框架Express.js(一)的更多相关文章
- node.js Web应用框架Express入门指南
node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...
- Node.js的高性能封装 Express.js
Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用.Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了W ...
- 基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装
KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Fu ...
- Node.js web快速入门 -- KoaHub.js
介绍 KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & ...
- js基础系列框架:JS重要知识点(转载)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- Express入门( node.js Web应用框架 )
运用Express框架构建简单的NodeJS应用 Start 确认安装了NodeJS之后(最新的Node安装好后NPM也会自带安装了),npm可理解为nodejs的一个工具包.可通过查看版本来检测是 ...
- Node.js web快速入门 -- KoaHub.js组件koa-static-server
koa-static-server Static file serving middleware for koa with directory, rewrite and index support k ...
- JS自制SEO框架(js案例)
学习了JS一段时间,自己封装了一些日常码代码需要用到的框架,需要的小伙伴可以参考一下该框架主要功能有:阻止事件冒泡.阻止默认事件.获取元素.添加事件.删除事件.单个事件代理,多个事件代理.清除clas ...
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
随机推荐
- 利用HTML5开发Android(4)---HTML5本地存储之Web Storage
Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Sto ...
- erlang 查看进程相关信息
出自: http://blog.sina.com.cn/s/blog_96b8a1540100zczz.html
- jsp与El,jstl知识点总结归纳
jsp与El,jstl知识点总结归纳 jsp部分 一.jsp的三大指令 page ,include,taglib 1.jsp中的page指令 <% page %>-设置jsp 例如: &l ...
- Java中String对象的不可变性
首先看一个程序 package reverse; public class Reverse { public static void main(String[] args) { String c1=n ...
- Web网站压力测试工具
使用Microsoft Web Application Stress Tool对web进行压力测试 不错关于压力测试博客: http://blog.sina.com.cn/s/blog_5155e8d ...
- Thread message loop for a thread with a hidden window? Make AllocateHwnd safe
Thread message loop for a thread with a hidden window? I have a Delphi 6 application that has a thre ...
- 汽车常用的ECU芯片
Power Train ECU的CPU用的比较多的基本来自于Infineon,ST,Freescale BOSCH的16位ECU M(E)7系列主要使用C167内核的CPU,早期的M(E)7系列使用西 ...
- VS2013 安装phonegap
https://www.microsoft.com/en-us/download/details.aspx?id=40783
- discuz+ecmall+phpcms整合
所需软件 discuzx1.5 (包含ucenter1.5) ecmall2.3 phpcms v9.5 1.先安装discuz1.5 2.然后安装ecmall2.3 3.最后安装phpcms v9. ...
- Swift - 初次使用:
今天Apple放出了新的编程语言.然后下载了Xcode6把系统升级到Mac OS 10.9.3 (Xcode6的系统最低要求). 创建了一个项目,折腾半天 都不知道怎么导入一个ViewControll ...