express的app.js的详细配置说明
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的详细配置说明相关推荐
- node.js 安装详细步骤
初学NodeJS,就是要弄清楚什么是nodejs,能做什么,怎么用.. 什么是nodejs? 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入htm ...
- 使用Express在Node.js中实现非常基本的路由
by Pau Pavón 通过保罗·帕文(PauPavón) 使用Express在Node.js中实现非常基本的路由 (Really, really basic routing in Node.js ...
- Express是Node.js上最流行的Web开发框架。
Express用起来让我想起来去年12月的时候折腾的Ruby on Rails,那时候折腾了一个周,写了一个半成的博客程序,号称"15分钟打造一个博客系统"大概就是Rails的特色 ...
- Express框架的请求处理~非常详细
下面是对Express请求处理的整理,希望可以帮助到有需要的小伙伴~ 文章目录 Express请求处理 构建模块化路由 GET参数的获取 POST参数的获取 app.use()方法 Express路由 ...
- nodejs 批处理执行 app.js
1.直接运行run.bat文件 下面的内容为批处理文件run.bat中的内容,批处理命令中NODE_PATH为Node.js的安装路径.使用express 生成的项目.app.js为待 ...
- nodejs app.js详解
app.js代码及其解释 //这里主要是引用所必须要的模块,当然,这些模块是需要使用"npm install 模块名"安装的 //模块依赖 var express = requir ...
- 微信挂机托管服务器nodejs,怎么执行node app.js 脚本
满意答案 anhhm0030f 2014.12.03 采纳率:57% 等级:9 已帮助:2213人 1.直接运行run.bat文件 下面的内容为批处理文件run.bat中的内容,批处理命令中NO ...
- Node.js运行app.js时候报错933
问题描述 提示:在做网易云音乐小程序时,运行后端API时候报错: 使用cmd运行node app.js报错: 报错内容: node:internal/modules/cjs/loader:933 co ...
- 【node路由封装,减轻后端的主路由的入口app.js的负重】
const express = require("express"); const app = express(); app.listen(3000,"0.0.0.0&q ...
最新文章
- 五分钟看懂抓包神技:DPDK
- PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误
- Spark之Spark概述
- python题库选择填空_python练习题4.18猴子选大王
- 并行和并发有什么区别?
- 偶然发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便
- 2019报告:AI程序员人才需求暴涨35倍!每10个公司就有6个人才缺口
- Spring基于Annotation装配Bean
- Java-NIO实战多人聊天室
- ckeditor内容保存后显示问题
- Image合并添加文字内容
- Spark中DataFrame 基本操作函数
- 内网渗透-域管理员定位
- 《JAVA语言程序设计》上课笔记
- 7个引人注目的创新物联网应用
- PHP从入门到接到外包合同,再到放弃
- nuxt 更新部署因浏览器缓存导致页面错误解决方法
- video视频设置第一帧为封面
- 3.3 费马质数测试
- 行内元素和块级元素:内联(行级)元素不能设置margin-top