Web开发框架『express』的基本使用 —— { }
基本
res.send([body]) 和 res.end([data] [, encoding]) 的区别
1、参数的区别:
res.send([body]): body这个参数可以是【Buffer对象】、字符串、对象、数组
res.end([data] [, encoding]): data这个参数可以是【Buffer对象】、字符串
2、响应报文头的区别:
res.send()hui自动发送更多的响应报文头,其中包括Content-Type,不会发生乱码问题
app.get()、app.all()、app.use() 的区别
// 含义:请求方法是get,请求路径pathname必须严格等于/submit
app.get('/submit',function(req,res){
res.send('submit');
})
// 含义:请求方法可以是任何一个,请求路径pathname必须严格等于/submit
app.all('/submit',function(req,res){
res.send('submit');
})
// 含义:请求方法可以是任何一个,请求路径pathname的第一部分等于/submit
app.use('/submit',function(req,res){
res.send('submit');
})
通过 req.params 获取路由中的参数
app.get('/news/:year/:month/:day',function(req,res){
res.send(req.params);
})
请求地址:http://localhost:8000/news/2020/12/30
响应参数:{"year": "2020","month": "12","day": "30"}
模拟 Apache 实现静态资源托管服务
// 含义:1、路径第一部分等于 /
// 2、如果请求的是index.html,就用请求的index.html与public拼接,返回找到的静态资源文件
app.use('/',express.static(path.join(__dirname,'public')))
// 含义:1、路径第一部分等于 /www
// 2、如果请求的是index.html,就用请求的index.html与public拼接,返回找到的静态资源文件
app.use('/www',express.static(path.join(__dirname,'public')))
实践
创建 package.json 文件
npm init -y
安装 express 模块
npm i express --save
封装 app.js 模块
// app.js 模块负责:启动服务
// 1、加载 express 模块
var express = require("express")
// 加载 config.js 模块
var config = require("./config.js")
// 加载路由模块
var router = require("./router.js")
// 2、创建 app 对象
var app = express()
// 3、注册路由
// 设置 app 与 router 相关联
app.use('/',router)
// 4、启动服务
app.listen(config.port,function(){
console.log('http://localhost:' + config.port);
})
封装 config.js 模块
module.exports = {
port: '9000'
}
封装 router.js 模块
// 主要负责路由判断
// 1、创建 router 对象(router 既是一个对象,也是一个函数)
var express = require("express")
var router = express.Router()
// 加载业务模块
var handler = require("./handler.js")
// 2、通过 router 对象挂载路由
// 挂载路由的时候,内部会以【键值对】的形式创建一个【路由表】
// 键:请求路径,值:请求时要执行的函数
router.get('/',handler.index)
router.get('/index',handler.index)
router.get('/submit',handler.submit)
// 3、返回 router
module.exports = router
封装 handler.js 模块
// 业务模块
module.exports.index = function(req,res){
res.send("index page")
}
module.exports.submit = function(req,res){
res.send("submit page")
}
Web开发框架『express』的基本使用 —— { }的更多相关文章
- Ubuntu下搭建NodeJS+Express WEB开发框架
Ubuntu下搭建NodeJS+Express WEB开发框架 2012-12-27 15:06 作者: NodeJSNet 来源: 本站 浏览: 2,966 次阅读 我要评论暂无评论 字号: 大 中 ...
- 转:基于node的web开发框架Express入门
JavaScript 标准参考教程(alpha) 草稿二:Node.js Express框架 GitHub TOP Express框架 来自<JavaScript 标准参考教程(alpha)&g ...
- node.js上除了Express还有哪些好用的web开发框架
老司机都有体会, 开发本身没有多难, 最纠结其实是最初的技术和框架选型, 本没有绝对的好坏之分, 可一旦选择了不适合于自己业务场景的框架, 将来木已成舟后开发和维护成本都很高, 等发现不合适的时候更换 ...
- 『005』Web集群
『006』索引-The Web cluster 准备更新中
- 基于 Node.js 平台,快速、开放、极简的 web 开发框架。
资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
- 『TensorFlow』分布式训练_其三_多机分布式
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...
- 『TensorFlow』分布式训练_其二_单机多GPU并行&GPU模式设定
建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_mem ...
- WEB开发框架性能排行与趋势分析
WEB开发框架性能基准测试解读与趋势分析 TechEmpower的<Web Framework Benchmarks>性能基准测试,是关注Web开发框架发展的重要途径.但是内容数据众多,每 ...
随机推荐
- Python爬取某网站文档数据完整教程(附源码)
基本开发环境 (https://jq.qq.com/?_wv=1027&k=NofUEYzs) Python 3.6 Pycharm 相关模块的使用 (https://jq.qq.com/?_ ...
- Integer.MAX_VALUE 和 Integer.MIN_VALUE
在源码中可以看出其对应的值 Integer.MAX_VALUE是2^31 -1 = 2147483647 Integer.MIN_VALUE是-2^31 = -2147483648
- 不要让Microsoft edge 打开IE浏览器的设置(兼容性问题)
1打开Microsoft edge 2 打开设置 3 搜索栏搜索IE,打开即可
- 《SVDNet for Pedestrian Retrieval》理解
<SVDNet for Pedestrian Retrieval>理解 Abstract: 这篇文章提出了一个用于检索问题的SVDNet,聚焦于在行人再识别上的应用.我们查看卷积神经网络中 ...
- 深度学习基础-基于Numpy的感知机Perception构建和训练
1. 感知机模型 感知机Perception是一个线性的分类器,其只适用于线性可分的数据. f(x) = sign(w.x + b) 其试图在所有线性可分超平面构成的假设空间中找 ...
- labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...
- ConcurrentHashMap树化链表treeifyBin
private final void treeifyBin(Node<K,V>[] tab, int index) { Node<K,V> b; int n, sc; if ( ...
- 难道ERP"死了",中台"凉了",低/无代码要称王了?
业内有一种说法,ERP经历了20多年的发展,其理念已经行不通,跟不上时代.后起之秀"中台"经历了崛起.走红.被传唱等阶段.并且已经冷却下来.此外,随着市场的不断变化,"低 ...
- NOI / 2.1基本算法之枚举 1749:数字方格
描述: 如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3.已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3的倍数, a1 + a2 ...
- 如何用WebGPU流畅渲染百万级2D物体?
大家好~本文使用WebGPU和光线追踪算法,从0开始实现和逐步优化Demo,展示了从渲染500个2D物体都吃力到流畅渲染4百万个2D物体的优化过程和思路 目录 需求 成果 1.选择渲染的算法 2.实现 ...