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
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
js 页面输出值
2008/11/30 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
Python实现合并字典的方法
2015/07/07 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Python实现手绘图效果实例分享
2020/07/22 Python
python实现银行账户系统
2021/02/22 Python
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
入党自荐书范文
2015/03/05 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript