安装 Nodejs

Nodejs官网根据自己的操作系统下载对应的安装包并安装。我们就有了NodeJS和npm环境。npm是Node的包管理工具,会在安装NodeJS时一并安装。可以用以下命令查看版本号验证我们的安装成功与否:

sunjingdeMacBook-Pro:microblog sunjing$ node -v
v0.12.2
sunjingdeMacBook-Pro:microblog sunjing$ npm -v
2.7.4

安装 express-generator

我们使用express作为开发框架,与1版不同,新版的express已经不可以使用:

express -t ejs microblog

来快速建立网站结构,而是要额外安装express-generator来生成网站框架。

npm install -g express-generator

'-g' 参数表示全局安装,这样我们就可以直接在命令行上使用了。

创建项目

创建框架

在要存放项目的目录打开终端或命令行,使用以下命令建立网站框架:

express -e microblog

'-e' 参数表示使用ejs作为模板引擎,如不加会默认使用jade。
执行命令后会看到如下结果:

sunjingdeMacBook-Pro:~ sunjing$ express -e microblog

   create : microblog
create : microblog/package.json
create : microblog/app.js
create : microblog/public
create : microblog/public/javascripts
create : microblog/public/images
create : microblog/public/stylesheets
create : microblog/public/stylesheets/style.css
create : microblog/routes
create : microblog/routes/index.js
create : microblog/routes/users.js
create : microblog/views
create : microblog/views/index.ejs
create : microblog/views/error.ejs
create : microblog/bin
create : microblog/bin/www install dependencies:
$ cd microblog && npm install run the app:
$ DEBUG=microblog:* ./bin/www

编辑依赖项

打开项目目录,找到package.json文件,将其中的依赖项修改如下,在默认的依赖项里添加上我们后面将会用到的一些模块。

  "dependencies": {
"body-parser": "~1.12.0",
"cookie-parser": "~1.3.4",
"debug": "~2.1.1",
"ejs": "~2.3.1",
"express": "~4.12.2",
"express-session":"*",
"morgan": "~1.5.1",
"serve-favicon": "~2.2.0",
"mongodb":"*",
"connect-mongo":"*",
"connect-flash":"*",
"log4js":"*"
}

关于依赖项版本号的书写规则可以查看Difference between tilde(~) and caret(^) in package.json,需要注意的是虽然前面我们已经全局安装了express-generator,这里我们仍然需要本地安装express模块。

安装依赖项

好啦,现在可以安装我们上面列出的依赖项了,在项目目录里运行如下命令,即会多出来一个node_modules目录,存放了各依赖模块。

sunjingdeMacBook-Pro:microblog sunjing$ npm install

运行项目

在新的express框架下,1版上用的

node app.js

启动命令已经不再适用,要改用

sunjingdeMacBook-Pro:microblog sunjing$ npm start

> microblog@0.0.0 start /Users/sunjing/microblog
> node ./bin/www

为什么呢?因为在package.json中有这样配置

"scripts": {
"start": "node ./bin/www"
}

所以用 npm start 命令等同于:

sunjingdeMacBook-Pro:microblog sunjing$ node ./bin/www

  

我们后面使用forever管理进程的时候还会提到这里。
这时候我们已经可以在浏览器里用3000端口http://localhost:3000/查看我们的网站页面了。

打开 app.js

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(); // view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes);
app.use('/users', users); // catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
}); // error handlers // development error handler
// will print stacktrace
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
});
});
} // production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
}); module.exports = app;

app.js

其中

var routes = require('./routes/index');
var users = require('./routes/users');

表示引用routes文件夹下的index.js和users.js

app.use('/', routes);
app.use('/users', users);
// 挂载至 / 的中间件,任何指向 / 的请求都会执行它

// 挂载至 /users 的中间件,任何指向 /users 的请求都会执行它
这里还有应用级中间件、路由级中间件(区别待查。。。欢迎交流)
应用级中间件

应用级中间件绑定到 app 对象 使用 app.use() 和 app.METHOD(), 其中, METHOD 是需要处理的 HTTP 请求的方法,例如 GET, PUT, POST 等等,全部小写。例如:

var app = express();

// 没有挂载路径的中间件,应用的每个请求都会执行该中间件
app.use(function (req, res, next) {
console.log('Time:', Date.now());
next();
}); // 挂载至 /user/:id 的中间件,任何指向 /user/:id 的请求都会执行它
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
}); // 路由和句柄函数(中间件系统),处理指向 /user/:id 的 GET 请求
app.get('/user/:id', function (req, res, next) {
res.send('USER');
});

app.use

    路由级中间件

路由级中间件和应用级中间件一样,只是它绑定的对象为 express.Router()

var app = express();
var router = express.Router(); // 没有挂载路径的中间件,通过该路由的每个请求都会执行该中间件
router.use(function (req, res, next) {
console.log('Time:', Date.now());
next();
}); // 一个中间件栈,显示任何指向 /user/:id 的 HTTP 请求的信息
router.use('/user/:id', function(req, res, next) {
console.log('Request URL:', req.originalUrl);
next();
}, function (req, res, next) {
console.log('Request Type:', req.method);
next();
}); // 一个中间件栈,处理指向 /user/:id 的 GET 请求
router.get('/user/:id', function (req, res, next) {
// 如果 user id 为 0, 跳到下一个路由
if (req.params.id == 0) next('route');
// 负责将控制权交给栈中下一个中间件
else next(); //
}, function (req, res, next) {
// 渲染常规页面
res.render('regular');
}); // 处理 /user/:id, 渲染一个特殊页面
router.get('/user/:id', function (req, res, next) {
console.log(req.params.id);
res.render('special');
}); // 将路由挂载至应用
app.use('/', router);

router.use

初次使用并安装express的更多相关文章

  1. 【node.js】本地模式安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    今天闲来无事想起了node.js,因此到网上下载了一个node.js的安装程序进行安装.其中: 安装程序:node-v0.11.13-x64.msi PC系统:Windows 7 自定义安装路径:D: ...

  2. Win8.1 安装Express 框架

    1.安装Windows Node.js客户端 2.安装Express框架 我本机是Win8.1的,使用命令npm install -g express安装Express,安装完成后显示一些安装明细,刚 ...

  3. 【安装Express】CentOS7 下安装NodeJs+Express+MongoDB+Redis

    上一篇介绍了一下怎么安装Nodejs,那么这一篇就说说怎么安装express,express有个中文站点非常非常方便,http://www.expressjs.com.cn/创建express框架的站 ...

  4. nodejs安装express不是内部或外部命令

    工具/原料  Node.js安装包 方法/步骤  首先下载Node.js安装包,此处我用的是官方最新的v0.10.27 32位版: http://nodejs.org/dist/v0.10.27/no ...

  5. nodejs学习笔记一:安装express框架并构建工程目录

    偶遇node是在一个阳光明媚的上午,无意间打开博客看到一片关于nodejs的介绍,通读全篇后,心情跌宕起伏,哎呀,这么好的东西我竟然现在才知道,这是最气的,于是马上开始制定学习nodejs计划,好了, ...

  6. 安装express后却找不到express的命令

    1.全局安装express npm install -g express 2.执行express命令,创建web项目框架 express -e ejs myweb 会提示 express 不是内部或外 ...

  7. Nodejs新建博客练习(一)安装express并新建项目

    安装express npm install -g express-generator 新建工程 express blog //新建项目 cd blog && npm install / ...

  8. node.js在windows下的学习笔记(6)---安装Express

    Express是什么呢? express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.对于WEB应用程序而言,会有许多诸如模板和路由这样的公共模式在的,虽然也可以自己编写代码解 ...

  9. nodejs安装express遇到的坑

    网上很多资料都是npm install express -g; 安装完也不报错,但使用express的时候却报找不到命令: 在网上查了好多,最后用 npm install -g express-gen ...

随机推荐

  1. 【原】iphone6来了,我该做点什么(兼容iphone6的方法)

    北京时间2014年9月10日凌晨1点,苹果公司正式发布其新一代产品 iPhone6,相信做webapp开发的同学对它是充满了好奇和等待,也担心它带来各种坑爹,高清的分辨率,升级的retina显示屏,我 ...

  2. 转载文章----十步完全理解SQL

    转载地址:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程 ...

  3. BZOJ 3112: [Zjoi2013]防守战线 [单纯形法]

    题目描述 战线可以看作一个长度为n 的序列,现在需要在这个序列上建塔来防守敌兵,在序列第i 号位置上建一座塔有Ci 的花费,且一个位置可以建任意多的塔,费用累加计算.有m 个区间[L1, R1], [ ...

  4. 第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)

    2. 文件特殊权限(主要用来临时提升命令执行者或其组身份) 2.1 SetUID (1)SetUID的功能 ①只有可以执行的二进制程序才能设定SUID权限.用来临时提升执行程序(或某条命令)的用户身份 ...

  5. 项目<<魔兽登录系统>>

    创建魔兽系统相关窗体: 登录窗体(frmLogin) 注册窗体(frmRegister) 主窗体   (frmMain) 实现魔兽登录系统: 登录的界面如下 实现思路: 1.创建一个对象数组,长度为1 ...

  6. UML九种图作用简介

    UML(统一建模语言):是面向对象的可视化建模语言. UML中有3种构造块:事物.关系和图,事物是对模型中最具有代表性的成分的抽象,关系是把事物结合在一起,图聚集了相关的事物 UML中有九种图如下: ...

  7. HTTP状态码对应

    HTTP的状态码 对于状态码大家如果经常在线买东西就能知道,我们买了东西就会有个订单状态:出库.发货中.送达中.送达等,其实这些状态就是状态码,只不过这些状态码都是文字.HTTP 响应的时候也有状态码 ...

  8. Win10 Sql2008R2 在关闭【0x80041033】

    以前SQL Server 2008 不能登陆的时候,总是通过“计算机管理”→“SQL Server服务”更改一下,"SQL Server(MSSQLSERVER)".可是现在出现的 ...

  9. javaScript 中的布尔运算符 && 和 ||

    布尔运算符 && 和 ||的返回结果不一定是布尔值!由此来展开一定的研究及理解. 1.首先先介绍下常见的数据类型转化为bool后的值. (常用地方)在if表达式中,javascript ...

  10. 代码覆盖工具(gcov、lcov)的使用

    一.安装 gcov:是随gcc一起发布的,并不需要独立安装:lcov:其他博客说是随ltp发布的,结果下载下ltp之后编译了10多分钟,最后也没见lcov,最后到sourceforge下载了lcov单 ...