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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
nodeJS微信分享
Dec 20 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
详解NodeJS模块化
Jun 15 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
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
python 图片验证码代码分享
2012/07/04 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
Python 移动光标位置的方法
2019/01/20 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
一年级班主任感言
2014/03/08 职场文书
学校花圃的标语
2014/06/18 职场文书
2014年导购员工作总结
2014/11/18 职场文书
市场部岗位职责
2015/02/12 职场文书
实施意见格式范本
2015/06/05 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js