javascript笔记之express初体验
来源:互联网 发布:js仿京东商品详情 编辑:程序博客网 时间:2024/05/16 19:11
Express简介
首先,express是node下用于写路由的的一个框架,安装
npm install express
一个简单的使用app.js
var express=require('express')var app=express()var server=app.listen(port||3000) //开一个端口,默认3000app.get('/',function(req,res){ res.send('hello,world!')})
运行app.js,这时候打开浏览器,127.0.0.1/3000就能显示hello world
Express路由方法
app.get('/',function(req,res){//get主要用于客户端向服务器请求,因此一般写response res.send()})app.post('/',function(req,res){//post主要用于客户端提交数据给服务器})app.all('/',function(req,res){//all可以处理任何get,post,delete,put})
说说路由句柄
一个简单的
app.get('/example/a', function (req, res) { res.send('Hello from A!');});
具有回调函数的句柄
app.get('/example/b', function (req, res, next) { console.log('response will be sent by the next function ...'); next();}, function (req, res) { res.send('Hello from B!');});
这里next()方法就是回调
回调数组
先定义几个函数
var cb0 = function (req, res, next) { console.log('CB0'); next();}var cb1 = function (req, res, next) { console.log('CB1'); next();}var cb2 = function (req, res) { res.send('Hello from C!');}//这里定义的app.get()函数,第一个参数是路由路径,第二个参数是一个数组[cb0,cb1,cb2],里面是三个函数。app.get('/example/c', [cb0, cb1, cb2])//console输出CB0,CB1 ,网页显示Hello from C!
几种响应方法
- **res.send()** 发送各种类型的响应。
- **res.render()** 渲染视图模板
- **res.redirect()** 重定向
- **res.json()** 发送JSON格式的响应
- **res.download()** 提示下载文件
- 等等
这里就写res.render(),其他的感觉也不常用,具体就看官方API文档吧
语法
res.render(view [, locals] [, callback])
渲染一个视图,并把html传给客户端
locals: 本地定义的属性
callback:回调函数,返回的异常err和html
//官网上的例子// 发送渲染的视图给客户端res.render('index');// 如果指定了回调函数,那么渲染的HTML必须显示的发送res.render('index', function(err, html) { res.send(html);});// 传送一个本地的变量给视图res.render('user', { name: 'Tobi' }, function(err, html) { // ...});
app.set()
app.set(name, value)
将value设置为name,估计是为了方便使用吧,我是这么理解的
app.set('title', 'My Site');app.get('title'); // "My Site"
app.js
var express=require('express')var port=process.env.PORT||3001var app=express()app.listen(port,function(){ console.log('listen'+port)})app.set('env', 'production');console.log('app.js', app.get('env'));//productionvar routes = require('./routes/index');app.use('/routes', routes);
./routes/index.js
var express = require('express');var router = express.Router();router.get('/', function(req, res) { console.log(req.app.get('env'));//production res.send(req.app.get('env')); //production});module.exports = router;
app.use()
难点来了,一直搞不明白的,上面的例子也是用了app.use,就从上面的代码说起吧,app.use()其实就相当于一个中间件。
app.use([path,] function [, function…])
第一个参数是路径名,第二个参数是函数
就说上面的例子,app.js里 app.use(‘/routes’, routes);
当客户端输入localhost:/routes 时,实则是跳转到 ./routes/index.js 去执行
所以app.use就是这个意思吧
app.use 加载用于处理http請求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。
执行的顺序是你定义的顺序,比如文档上的例子:
var logger = require('morgan');app.use(logger());app.use(express.static(__dirname + '/public'));app.use(function(req, res){ res.send('Hello');});
这个就不会记录静态文件的日志,因为looger中间件在static中间件后面。
app.use(express.static(__dirname + '/public'));app.use(logger());app.use(function(req, res){ res.send('Hello');});
之前在想express有什么大不了,不就是写路由嘛,现在感觉有些方法深入去研究还是很麻烦,唉,只能边做边学了。
- javascript笔记之express初体验
- Express之初体验
- Nodejs express之初体验
- express.js初体验
- express的初体验
- express初体验
- 学习Javascript之初体验
- [Javascript入门]Javascript之初体验1
- [Javascript入门]Javascript之初体验2
- [Javascript入门]Javascript之初体验3
- JavaScript初体验之不得不爱_AXjavascript
- javascript函数闭包之初体验~~~
- node.js + express 初体验【hello world】
- node.js + express 初体验【hello world】
- web框架express安装初体验
- Nodejs学习笔记之express
- Hibernate学习笔记之初体验
- RaspberryPi 3B之初体验笔记
- 文章标题
- 留训第一天
- 设计模式之简单工厂模式
- 采访 Lua 发明人的一篇文章
- 精实创业:让疯狂烧钱见鬼去吧
- javascript笔记之express初体验
- UIFont 兼容所以版本
- 表单异步提交不返回响应数据总结
- 从网上获取数据转换成byte[]数组
- 62.Odd Even Linked List
- POJ 2243 - Knight Moves (A*)
- hdu2050
- 5.6 array--高效的数值类型数组
- [微积分学习]Day 6.数列的极限