Nodejs的express使用教程


Posted in NodeJs onNovember 23, 2015

Express 是一个简洁、灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

1.express组织结构

app demo

    |---node_modules------用于安装本地模块。
    |---public------------用于存放用户可以下载到的文件,比如图片、脚本、样式表等。
    |---routes------------用于存放路由文件。
    |---views-------------用于存放网页的模板。
    |---app.js------------应用程序的启动脚本。
    |---package.json------项目的配置文件。

2..创建express服务器

//app.js文件
var express = require('express');
var app = express();
//指定更目录显示的内容
app.get('/', function(req, res){
 res.send('Hello World');
});
//指定监听端口
var server = app.listen(3000, function() {
  console.log('Listening on port %d', server.address().port);
});

运行nodejs应用程序

/>node app.js

3.中间件

中间件(middleware)就是处理HTTP请求的函数.
当一个HTTP请求进入服务器,服务器实例会调用第一个中间件,完成后根据设置,决定是否再调用下一个中间件.

中间件的参数为:

.四个的时候---第一个为错误处理,第二个为客户请求request,第三个为服务器响应respond,第四个为next中间件. 如function(error, request, response, next){}
.三个的时候---第一个客户请求request,第二个为服务器响应respond,第三个为next中间件. 如function(request, response, next){}
.两个的时候---第一个客户请求request,第二个为服务器响应respondfunction. 如function(request, response){}

4.使用中间件use

use是express调用中间件的方法,它返回一个函数.

app.use(function(request, response) {
 response.writeHead(200, { "Content-Type": "text/plain" });
 response.end("Hello world!\n");
});

5.错误内容显示

app.use(express.bodyParser());//使用body参数
app.use(express.methodOverride());//使用函数覆盖
app.use(app.router);//使用路由
app.use(function(err, req, res, next){
 console.error(err.stack);
 res.send(500, 'Something broke!');
});//错误内容显示

6.路由

express路由的方式有多种,这里举例常用的几种:

.app.use('/', middleware);//get/post时,对于路径/的处理
.app.get("/", middleware);//http中get时,对于路径/的处理
.app.post("/", middleware);//http中post时,对于路径/的处理
.app.put("/", middleware);//http中put时,对于路径/的处理
.app.delete("/", middleware);//http中delete时,对于路径/的处理

7.路径通配符*

.*表示所有路径

app.get("*", function(request, response) {
 response.end("404!");
});//所有路径都返回404

.:捕获路径内容

app.get("/hello/:who", function(req, res) {
 res.end("Hello, " + req.params.who + ".");
});//如"/hello/alice”网址,网址中的alice将被捕获,作为req.params.who属性的值

8.设置环境变量set

set用于指定变量的值.
app.set("view engine", "ejs");//使用ejs作为模版

9.response对象方法

.重定向redirect

    response.redirect("/hello/anime");//重定向到/hello/anime

.发送文件sendFile

   response.sendFile("/path/to/anime.mp4");

.渲染网页模板render,即把变换的内容加载到网页.
    response.render("index", { message: "Hello World" });//将message变量传入index模板,值为"Hello World"渲染成HTML网页

10.requst对象方法

.获取客户ip地址:request.ip

.获取上传的文件:request.files

11.启动脚本package.json

package.json用于指定app信息,nodejs版本号和其他组件的依赖关系

{
  "name": "demo",
  "description": "My First Express App",
  "version": "0.0.1",
  "dependencies": {
   "express": "3.x"
  }
}

12.app入口app.js

app.js主要包含http的创建,基本路由,监听端口号

13.动态网页模板views

views文件夹,用于存放所有的放网页模板.

//app.js
app.get('/', function(req, res) {
  res.render('index',{title:"最近文章"});
});
//index.js
this is <%=title%>!

14.指定静态网页目录

//app.js
app.use(express.static('public'));//指定静态网页目录,当浏览器发出非HTML文件请求时,服务器端就到public目录寻找这个文件

如:<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">, 服务器端就到public/bootstrap/css/目录中寻找bootstrap.css文件

好了,本教程先给大家介绍到这里,后续还会持续给大家更新,谢谢大家一直以来对三水点靠木网站的支持。!

NodeJs 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
nodejs初步体验篇
Nov 23 #NodeJs
Nodejs初级阶段之express
Nov 23 #NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 #NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 #NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 #NodeJs
浅谈Nodejs观察者模式
Oct 13 #NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 #NodeJs
You might like
一个改进的UBB类
2006/10/09 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
js 设置选中行的样式的实现代码
2010/05/24 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python 实现一个计时器
2020/07/28 Python
python定时截屏实现
2020/11/02 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
戒毒悔改检讨书
2014/09/21 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
安全教育主题班会教案
2015/08/12 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis