【node.js学习】--(4)--Express4.x框架

Express是Nodejs标准的web开发框架

参考http://blog.fens.me/nodejs-express4/

安装项目构建器

先安装 npminstall -g express

再安装npm install -gexpress-generator  #全局安装-g

检查安装结果 express -V# 检查express的版本

卸载(需要时使用)

npm uninstall-g express

参考

http://blog.csdn.net/JBBOY/article/details/25038299

http://jingyan.baidu.com/album/922554468a3466851648f419.html?picindex=1

创建项目

express -enodejs-demo

进入项目目录,下载依赖库,构建项目。

cd nodejs-demo && npm install

启动项目

npm start

效果如下图

目录结构说明

nodejs-demo/

├──app.js  应用核心配置文件

├──bin  启动项目的脚本文件

├──node_modules  项目依赖库

├──package.json  项目依赖配置及开发者信息

├──public  静态文件(css,js,img)

├──routes  路由文件(MVC中的C,controller)

└──views  页面文件(Ejs模板)

package.json

其中scripts属性是用于定义操作命令的,可以非常方便的增加启动命令,比如默认的start,用npm start代表执行node ./bin/www命令。

app.js文件

//加载依赖库,原来这个类库都封装在connect中,现在需地注单独加载

varexpress = require(‘express‘);

varpath = require(‘path‘);

varfavicon = require(‘serve-favicon‘);

varlogger = require(‘morgan‘);

varcookieParser = require(‘cookie-parser‘);

varbodyParser = require(‘body-parser‘);

//加载路由控制

varroutes = require(‘./routes/index‘);

//varusers = require(‘./routes/users‘);

//创建项目实例

varapp = express();

//定义EJS模板引擎和模板文件位置,也可以使用jade或其他模型引擎

app.set(‘views‘,path.join(__dirname, ‘views‘));

app.set(‘viewengine‘, ‘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 = 404;

next(err);

});

//开发环境,500错误处理和错误堆栈跟踪

if(app.get(‘env‘) === ‘development‘) {

app.use(function(err, req, res, next) {

res.status(err.status || 500);

res.render(‘error‘, {

message: err.message,

error: err

});

});

}

//生产环境,500错误处理

app.use(function(err,req, res, next) {

res.status(err.status || 500);

res.render(‘error‘, {

message: err.message,

error: {}

});

});

//输出模型app

module.exports= app;

www文件

www文件也是一个node的脚本,用于分离配置和启动程序。

查看./bin/www文件。

#!/usr/bin/envnode

/**

* 依赖加载

*/

varapp = require(‘../app‘);

vardebug = require(‘debug‘)(‘nodejs-demo:server‘);

varhttp = require(‘http‘);

/**

* 定义启动端口

*/

varport = normalizePort(process.env.PORT || ‘3000‘);

app.set(‘port‘,port);

/**

* 创建HTTP服务器实例

*/

varserver = http.createServer(app);

/**

* 启动网络服务监听端口

*/

server.listen(port);

server.on(‘error‘,onError);

server.on(‘listening‘,onListening);

/**

* 端口标准化函数

*/

functionnormalizePort(val) {

var port = parseInt(val, 10);

if (isNaN(port)) {

return val;

}

if (port >= 0) {

return port;

}

return false;

}

/**

* HTTP异常事件处理函数

*/

functiononError(error) {

if (error.syscall !== ‘listen‘) {

throw error;

}

var bind = typeof port === ‘string‘

? ‘Pipe ‘ + port

: ‘Port ‘ + port

// handle specific listen errors withfriendly messages

switch (error.code) {

case ‘EACCES‘:

console.error(bind + ‘ requires elevatedprivileges‘);

process.exit(1);

break;

case ‘EADDRINUSE‘:

console.error(bind + ‘ is already inuse‘);

process.exit(1);

break;

default:

throw error;

}

}

/**

* 事件绑定函数

*/

functiononListening() {

var addr = server.address();

var bind = typeof addr === ‘string‘

? ‘pipe ‘ + addr

: ‘port ‘ + addr.port;

debug(‘Listening on ‘ + bind);

}

参考

http://blog.fens.me/nodejs-express4/

时间: 2024-08-03 14:19:35

【node.js学习】--(4)--Express4.x框架的相关文章

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

node.js之十大Web框架

之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node.js造一个mock server,而当时在开源项目上找到一个模拟github rest api的node.js服务端程序,然后我就在此基础上开发.从工作中学习有应用场景有目的性,果然还是学的要快很多. 今天之所以要说一说node.js的十大Web框架,主要是觉得以后针对VsCode开发或者是我自己的

NODE.JS学习的常见误区及四大名著

NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang/p/4374681.html 收到了很多兄弟的热情回复和激烈讨论,在此深表感谢,有的朋友觉得我写的比较粗犷,没有给出具体的性能分析和对比,在此我想说的是其实好多东西的性能分析,根本就不用我写到博客上,其一是如果我写了,很多人同样会觉得不客观,不中立,其二是网上很多中立的机构,随便搜索一下,对比太多

node.js 学习 00

前言 先写点废话,相中node.js倒是纯属偶然. 在这之前我想要要搭建一个人网站,我感到现有的博客/空间之类只能给予用户有限的控制力.于是在AWS上申请了免费一年的VPS,自己买了一个域名,百度了之后选择了在主机上挂了一个nginx.在这之后我发现直接手写html是一件十分麻烦的事情,于是暂时失去了构建的方向.只是改了改nginx的默认的主页,就先放着了. 在这之后的新学期里,我多一门 数据库原理 的课程,在这之前我通过王垠的博客了解过Nosql的一些概念.数据库原理老师对传统关系性数据库的吹

Node.js 学习一

Node.js是一个可以让javascript运行在服务器端的平台.node.js是一个为实时web应用开发而诞生的平台,它考虑到了实时响应/超大规模数据要求下架构的可扩展性.它采用了单线程,异步石IO,事件驱动式的设计模式. Node.js有着强大而灵活的包管理器(node package manager)npm node.js 架构设计:1,异步式I/O,事件驱动 2,V8引擎作为javascript引擎 3,高效的libev事件驱动库 4,高效的libeio异步I/O库 CommonJS:

node.js学习一——什么是node.js

定义:node.js是运行在服务器端的运用了谷歌v8引擎的javascript运行平台 特点:1. 异步式I/O(非阻塞式I/O) 2. 事件驱动 什么是异步式I/O(非阻塞式I/O)? 要了解什么是异步式I/O(非阻塞式I/O),必须要先了解下什么是I/O,什么阻塞, 什么是同步式I/O(阻塞式I/O). I/O的定义: 线程在执行磁盘读写或者是网络通信时统称为I/O操作. 阻塞定义: 在I/O的过程中由于要耗费的时间比较长,操作系统会剥夺这个线程对CPU的控制权,让线程暂停执行.同时把资源交

系列文章--Node.js学习笔记系列

Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql) Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识 Nodejs学习笔记(七)--- Node.js + Exp

Node.js学习(1):Node.js 和Socket.IO 实现chat

使用 Node.js 和 Socket.IO 构建简单的聊天程序 在node.js根目录下创建文件夹chat,里面添加两个文件:app.js和index.html app.js var fs = require('fs') , http = require('http') , socketio = require('socket.io'); var server = http.createServer(function(req, res) { res.writeHead(200, { 'Cont

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

Node.Js学习01: Module System 以及一些常用Node Module

Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node.Js. Node.Js Demo Node.Js官网提供了一个最基本的Demo Code: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':