nodejs教程 安装express及配置app.js文件的详细步骤


Posted in NodeJs onMay 11, 2013

安装express.js

如果你安装了npm,安装变得很简单,只需要在终端中运行下面的代码即可:

npm install express -gd

-g代表安装到NODE_PATH的lib里面,而-d代表把相依性套件也一起安装。如果?]有-g的话会安装目前所在的目录(会建立一个node_modules的文件夹),你可以透过以下指令来比较两者的不同:

npm list -g
npm list

如果没有npm,那么我可以使用github来git下来最新的express。
好了,现在你可以通过express testapp来建立express实例。以下是示例:

cd ~
express testapp
cd testapp
node app.js

这样就建立了一个testapp的nodejs应用,而app.js是默认的应用主js。下面来详细的说说app.js中的各项配置。

引入模块

var express = require('express');
 var app = module.exports = express.createServer();

require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块。require也可以用来载入自己写的模块哦~这样涉及到node.js的模块机制,后面有机会就在介绍。

第二行的express.createServer()就是在建立server,而中间的module.exports也是涉及到node.js的模块机制,以后再说。

express的app.js的详细配置说明

express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。

设置views路径和模板
我们再来看下面两行:

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

上面两行是设置views文件夹,即模板文件夹,__dirname是node.js里面的全局变量,即取得执行的js所在的路径,另外__filename是目前执行的js文件名。所以,app.set(‘views', __dirname + ‘/views');是设置views的文件夹。

而app.set('view engine', 'jade');是设置express.js所使用的render engine。除了Jade之外,express.js还支持EJS(embedded javascript)、Haml、CoffeScript和jQuery template等js模板。

app.use配置

app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));

express.bodyParser()是Connect?冉ǖ?iddleware,设置此处可以将client提交过来的post请求放入request.body中。
express.methodOverride()也是Connect?冉ǖ模?梢孕????OST请求伪装PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。
express.static()也是一个Connect?冉ǖ?iddleware来处理静态的requests,例如css、js、img文件等。所以static()里面指定的文件夹中的文件会直接作为静态资源吐出来。

app.configure设置

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
  app.use(express.errorHandler());
});

express.errorHandler()是Connect?冉ǖ?iddleware来?f助?理例外。??也揭露了app.configure()的令一个用法,第一个??凳?ode.js的?境?定,如此我??就可以?定在不同的?绦协h境使用不同程度的dump。PS:node.js是透?NODE_ENV?个?境??道慈〉铆h境?定,e.g.:在命令列,NODE_ENV=production node app.js就可以?入production?境。

路由和request的处理

ok,下面是nodejs处理request的内容:

app.get('/', function(req, res){
  res.render('index', {
    title: 'Express'
  });
});

上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。

在express中要处理post请求,需要使用app.post()。如下面的代码:

app.post('/add', function(req,res){
  res.render('add', {
    sum: req.body.a + req.body.b
  });
});

前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。

另外除了get和post方法,还有app.all()意思就是所有的请求处理。

添加listen,启动nodejs服务器

app.listen(3000);
console.log(
    "Express server listening on port %d in %s mode",
    app.address().port, 
    app.settings.env);

到目前为止,我们就基本全明白了express配置了,也就不会像以前那样跟别人都写个hello world却不知道各行代码的含义了。

转自 JS8.IN ™

NodeJs 相关文章推荐
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs中的异步编程知识点详解
Jan 17 NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 #NodeJs
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 #NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 #NodeJs
NodeJs中的非阻塞方法介绍
Jun 05 #NodeJs
nodejs win7下安装方法
May 24 #NodeJs
NodeJS的模块写法入门(实例代码)
Mar 07 #NodeJs
nodejs入门详解(多篇文章结合)
Mar 07 #NodeJs
You might like
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
小程序实现五星点评效果
2018/11/03 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
Python创建xml文件示例
2017/03/22 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
css3 transform属性详解
2014/09/30 HTML / CSS
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
迎新生欢迎词
2015/01/23 职场文书