当前位置:首页 > Node.js > nodejs之express的使用

nodejs之express的使用

今天给大家带来的是node的一个前端神器,Express是目前最流行的基于Node.js的Web开发框架,可以快速的搭建一个完整功能的网站。

nodejs

Express框架建立在内置的http模块上,http模块生成服务器的原始代码如下。

1
2
3
4
5
6
var http = require("http");
var app = http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello world!");
});
app.listen(3000, "localhost");

上面代码的关键是http模块的createServer方法,表示生成一个HTTP服务器实例。该方法接受一个回调函数,该回调函数的参数,分别为代表HTTP请求和HTTP回应的request对象和response对象。
Express框架的核心是对http模块的再包装。上面的代码用Express改写如下。

1
2
3
4
5
6
var express = require('express');
var app = express();
app.get('/', function (req, res) {
  res.send('Hello world!');
});
app.listen(3000);

比较两段代码,可以看到它们非常接近。原来是用http.createServer方法新建一个app实例,现在则是用Express的构造方法,生成一个Epress实例。两者的回调函数都是相同的。Express框架等于在http模块之上,加了一个中间层。

1.express组织结构

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

2..创建express服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
//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调用中间件的方法,它返回一个函数.

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

5.错误内容显示

1
2
3
4
5
6
7
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.路由

1
2
3
4
5
6
7
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.路径通配符*

1
2
3
4
5
6
7
8
9
.*表示所有路径
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,即把变换的内容加载到网页.

1
2
 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版本号和其他组件的依赖关系

1
2
3
4
5
6
7
8
{
   "name": "demo",
   "description": "My First Express App",
   "version": "0.0.1",
   "dependencies": {
      "express": "3.x"
   }
}

nodejs

12.app入口app.js

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

13.动态网页模板views

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

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

14.指定静态网页目录

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

这次的node教程就先到这里了,有兴趣的同学可以试着写下我的代码,如果没有意外的话,希望你也可以配出node的环境。

  • << ASP.NET Session实用使用总结
  • JavaScript的几个实用小知识点 >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/nodejs-express-use/

    相关文章 近期热评 最新文章

    • node.js实践之Express
      Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node是一个Javascript运行环境(runtime)。实际上它是对Google ...
    • Node.js的十个技巧
      Node是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。
    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程
    • c#类的构造函数继承关系示例剖析
      本文通过示例代码讲解了c#子类的构造函数与父类的关系,子类怎样集成父类的构造函数的。