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教程之环境安装及运行
Nov 21 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python实现批量图片格式转换
2020/06/16 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python实现大转盘抽奖效果
2019/01/22 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
Python实现微信小程序支付功能
2019/07/25 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
教师自荐信
2013/12/10 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
小学运动会开幕词
2015/01/28 职场文书
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电