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 模块开发及发布详解分享
Mar 07 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 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
一个程序下载的管理程序(二)
2006/10/09 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php获取远程文件内容的函数
2015/11/02 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
Mac下安装vue
2018/04/11 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Python 必须了解的5种高级特征
2020/09/10 Python
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python