express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板。下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个聊天室。

安装express.js

注意:express 网页执行的根目录是在/public 目录里面,所以如果是要引用脚本,布局或图片等资源使用相对路径/javascripts;/stylesheets;/images即可

如果你安装了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內建的middleware,设置此处可以将client提交过来的post请求放入request.body中。
express.methodOverride()也是Connect內建的,可以协助处理POST请求伪装PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。
express.static()也是一个Connect內建的middleware来处理静态的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內建的middleware来協助處理例外。這裡也揭露了app.configure()的令一个用法,第一个參數是node.js的環境設定,如此我們就可以設定在不同的執行環境使用不同程度的dump。PS:node.js是透過NODE_ENV這个環境變數来取得環境設定,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就可以在模板文件中直接使用。

app.get('/', routes.index);

以上代码和前一段代码是一个效果,只是我们把函数写进了routes/index.js文件

在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却不知道各行代码的含义了。

原文地址:

http://www.veryhuo.com/a/view/39756.html

express的app.js的详细配置说明相关推荐

  1. node.js 安装详细步骤

    初学NodeJS,就是要弄清楚什么是nodejs,能做什么,怎么用.. 什么是nodejs? 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入htm ...

  2. 使用Express在Node.js中实现非常基本的路由

    by Pau Pavón 通过保罗·帕文(PauPavón) 使用Express在Node.js中实现非常基本的路由 (Really, really basic routing in Node.js ...

  3. Express是Node.js上最流行的Web开发框架。

    Express用起来让我想起来去年12月的时候折腾的Ruby on Rails,那时候折腾了一个周,写了一个半成的博客程序,号称"15分钟打造一个博客系统"大概就是Rails的特色 ...

  4. Express框架的请求处理~非常详细

    下面是对Express请求处理的整理,希望可以帮助到有需要的小伙伴~ 文章目录 Express请求处理 构建模块化路由 GET参数的获取 POST参数的获取 app.use()方法 Express路由 ...

  5. nodejs 批处理执行 app.js

    1.直接运行run.bat文件         下面的内容为批处理文件run.bat中的内容,批处理命令中NODE_PATH为Node.js的安装路径.使用express 生成的项目.app.js为待 ...

  6. nodejs app.js详解

    app.js代码及其解释 //这里主要是引用所必须要的模块,当然,这些模块是需要使用"npm install 模块名"安装的 //模块依赖 var express = requir ...

  7. 微信挂机托管服务器nodejs,怎么执行node app.js 脚本

    满意答案 anhhm0030f 2014.12.03 采纳率:57%    等级:9 已帮助:2213人 1.直接运行run.bat文件 下面的内容为批处理文件run.bat中的内容,批处理命令中NO ...

  8. Node.js运行app.js时候报错933

    问题描述 提示:在做网易云音乐小程序时,运行后端API时候报错: 使用cmd运行node app.js报错: 报错内容: node:internal/modules/cjs/loader:933 co ...

  9. 【node路由封装,减轻后端的主路由的入口app.js的负重】

    const express = require("express"); const app = express(); app.listen(3000,"0.0.0.0&q ...

最新文章

  1. 五分钟看懂抓包神技:DPDK
  2. PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误
  3. Spark之Spark概述
  4. python题库选择填空_python练习题4.18猴子选大王
  5. 并行和并发有什么区别?
  6. 偶然发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便
  7. 2019报告:AI程序员人才需求暴涨35倍!每10个公司就有6个人才缺口
  8. Spring基于Annotation装配Bean
  9. Java-NIO实战多人聊天室
  10. ckeditor内容保存后显示问题
  11. Image合并添加文字内容
  12. Spark中DataFrame 基本操作函数
  13. 内网渗透-域管理员定位
  14. 《JAVA语言程序设计》上课笔记
  15. 7个引人注目的创新物联网应用
  16. PHP从入门到接到外包合同,再到放弃
  17. nuxt 更新部署因浏览器缓存导致页面错误解决方法
  18. video视频设置第一帧为封面
  19. 3.3 费马质数测试
  20. 行内元素和块级元素:内联(行级)元素不能设置margin-top

热门文章

  1. 用 LaTeX 排版编程技术书籍的一些个人经验
  2. 如何设计一门语言(八)——异步编程和CPS变换
  3. 如何设计一门语言(四)——什么是坑(操作模板)
  4. 数字图像处理领域的二十四个典型算法及vc实现、第一章
  5. 快看漫画大数据平台的模型思维与用户增长实践
  6. 印度首富要免费向全国提供4G网络3个月
  7. Ubuntu下架设FTP服务器(转)
  8. oracle 内存结构 share pool sql解析的过程
  9. [jQuery]10 Things I Learned from the jQuery Source
  10. Opencv中常见的滤波方法