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 相关文章推荐
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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 db类库进行数据库操作
2009/03/19 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
对pandas中apply函数的用法详解
2018/04/10 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python中and和or如何使用
2020/05/28 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
教师求职推荐信范文
2013/11/20 职场文书
清扬洗发水广告词
2014/03/14 职场文书
会计人员岗位职责
2014/03/19 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
2014年收银工作总结
2014/11/13 职场文书
接收函格式
2015/01/30 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Python 绘制多因子柱状图
2022/05/11 Python
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle