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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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 破解防盗链图片函数
2008/12/09 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python复制文件的方法实例详解
2015/05/22 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python开根号实例讲解
2020/08/30 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
2014全国两会大学生学习心得体会
2014/03/10 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2014年检验员工作总结
2014/11/19 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
springboot入门 之profile设置方式
2022/04/04 Java/Android