express框架学习
来源:互联网 发布:ftp默认使用的端口号是 编辑:程序博客网 时间:2024/05/01 11:47
一、http.createServer(app).listen(3000)和app.listen(3000)这两种监听方式有什么区别
var express = require('express');var http = require('http');var app = express();http.createServer(app).listen(3000);
var express = require('express');var app = express();app.listen(3000);
express框架的核心是对http模块的再包装,原来是用http.createServer方法新建一个app实例,现在则是用express的构造方法,生成一个app对象。从API文档中可以看出app.listen()方法与http.Server.listen()功能是一样的,app.listen()只是一个简写的方法(这种简写只针对HTTP协议):
app.listen = function() { var server = http.createServer(this); return server.listen.apply(server, arguments);};
实际上,调用express()返回得到的app是一个javascript的function,被设计用来作为一个回调传递给Node HTTP servers来处理请求。这样,其就可以很简便的基于同一份代码提供http和https版本,所以app没有从这些继承(它只是一个简单的回调)。
var express = require('express');var https = require('https');var http = require('http');http.createServer(app).listen(80);https.createServer(options, app).listen(443);
二、app.use进行的路由与app.get和app.post等的路由有什么区别
app.use…方法
app.use("/home", function(request, response, next) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Welcome to the homepage!\n");});
app.get….方法
app.get("/", function(request, response) { response.send("Welcome to the homepage!");});
它们的作用是一样的,只是回调函数内部的写法不一样(其实也可以写成一样的,不过上面那种的写法可以指定HTTP头信息),get、post之类只是express针对不同的http请求,提供的use方法的一些别名,从而可以更加具体的说明是通过何种方式发起的请求。此外还有app.put、app.del(delete是JavaScript保留字,所以改叫del)。
三、express三大核心概念
路由:
所谓“路由”,就是指为不同的访问路径,指定不同的处理方法。从express 4.0开始,路由器功能成了一个单独的组件express.Router。它好像小型的express应用程序一样,有自己的use、get、param和route方法。
//express.Router是一个构造函数,调用后返回一个路由器实例var router = express.Router();//使用该实例的HTTP动词方法,为不同的访问路径,指定回调函数router.get('/', function(req, res) { res.send('首页');});router.get('/about', function(req, res) { res.send('关于');});//将上面定义的两个访问路径,挂载到根目录app.use('/', router);
这种路由器可以自由挂载的做法,为程序带来了更大的灵活性,既可以定义多个路由器实例,也可以为将同一个路由器实例挂载到多个路径。
中间件:
就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。App实例在运行过程中,会调用一系列的中间件。app.use是express注册中间件的方法。
每个中间件可以从App实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。
示例:
app.use(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello world!\n");});
模板引擎
如果只向浏览器发送简单的文本信息,可以用send之类方法,但是如果要向浏览器发送复杂的内容,还是应该使用网页模板。
ejs:简单易学,在代码编写上更直观,更易于理解,让开发者更多的专注于数据处理,性能高。
ejs 的标签系统非常简单,它只有以下三种标签:
• <% code %>:JavaScript 代码。
• <%= code %>:显示替换过 HTML 特殊字符的内容。
• <%- code %>:显示原始 HTML 内容。
jade:express的默认模板,一个非常强大的模板引擎,有别与传统的模板技术,jade还具有模板继承这一特性。jade将html和数据处理揉杂在了一起,语法风格比较风骚,从而可移植性变低了,调试也比较困难。
详情http://www.jianshu.com/p/021fdfe1b8d6
四、注意事项
1、send方法既可以发送字符串,也可以直接发送对象
response.send('Hello World');response.send({name:"张三",age:40});
2、app.get('/api', api.index); //获取/api路径下的index文件
3、res.sendfile('./views/index.html'); //sendfile是专门用来发送文件的
4、res.render是用来渲染模板的,将title等参数传入到reg.ejs中,渲染成html页面,即渲染是指将数据添加到模板中的过程。
res.render('reg', { title: '注册', user: req.session.user, ...
- Express框架学习
- Express框架学习总结
- express框架学习
- Node.js Express 框架学习
- Node.js Express 框架学习
- Node.js Express 框架学习
- Node.js Express 框架学习
- 初识Express框架-详细学习API
- nodejs开发——express框架学习
- node.js Express框架学习笔记
- nodeJS之Express框架初步学习
- express 框架
- Express框架
- express框架
- express框架
- Express 框架
- Express框架
- Express框架
- 龙芯+Linux:国产CPU和操作系统现状是这样
- Android 实践:做一款可用的天气 APP
- lower_bound一点用法
- 【剑指offer-解题系列(2)】替换空格
- 2017爱奇艺技术大赛--选择题
- express框架学习
- LintCode:最小路徑和
- 企业信息挖掘
- Picasso源码完全解析(一)--概述
- HTTP协议学习笔记十
- 源码学习列表(计划
- 第三方登录跟分享
- OpenGL介绍
- 【微机实验系列】并行IO接口的扩展