基本

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』的基本使用 —— { }的更多相关文章

  1. Ubuntu下搭建NodeJS+Express WEB开发框架

    Ubuntu下搭建NodeJS+Express WEB开发框架 2012-12-27 15:06 作者: NodeJSNet 来源: 本站 浏览: 2,966 次阅读 我要评论暂无评论 字号: 大 中 ...

  2. 转:基于node的web开发框架Express入门

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Express框架 GitHub TOP Express框架 来自<JavaScript 标准参考教程(alpha)&g ...

  3. node.js上除了Express还有哪些好用的web开发框架

    老司机都有体会, 开发本身没有多难, 最纠结其实是最初的技术和框架选型, 本没有绝对的好坏之分, 可一旦选择了不适合于自己业务场景的框架, 将来木已成舟后开发和维护成本都很高, 等发现不合适的时候更换 ...

  4. 『005』Web集群

    『006』索引-The Web cluster 准备更新中

  5. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  6. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  7. 『TensorFlow』分布式训练_其三_多机分布式

    本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...

  8. 『TensorFlow』分布式训练_其二_单机多GPU并行&GPU模式设定

    建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_mem ...

  9. WEB开发框架性能排行与趋势分析

    WEB开发框架性能基准测试解读与趋势分析 TechEmpower的<Web Framework Benchmarks>性能基准测试,是关注Web开发框架发展的重要途径.但是内容数据众多,每 ...

随机推荐

  1. RPA应用场景-定点取数

    场景概述定点取数 所涉系统名称业务系统,Excel 人工操作(时间/次) 8 小时 所涉人工数量 2 操作频率实时 场景流程 1.从业务系统中拉取指定字段值的数据填入Excel: 2.将Excel每隔 ...

  2. 【python基础】第04回 变量常量

    本章内容概要 1. python 语法注释 2. python 语法之变量常量 3. python 基本数据类型(整型(int),浮点型(float),字符串(str)) 本章内容详解 1. pyth ...

  3. go-zero微服务实战系列(九、极致优化秒杀性能)

    上一篇文章中引入了消息队列对秒杀流量做削峰的处理,我们使用的是Kafka,看起来似乎工作的不错,但其实还是有很多隐患存在,如果这些隐患不优化处理掉,那么秒杀抢购活动开始后可能会出现消息堆积.消费延迟. ...

  4. mysql语法使用详细代码版

    mysql 1.什么是数据库 数据库:(DB,DataBase) 作用:用来存储数据,管理数据.Txt,Excel,word是在数据库出现之前存储数据的. 概念:数据仓库,安装在操作系统上的软件. 数 ...

  5. 03 uniapp自定义导航栏的开发

    在我眼里自定义导航分2类: 原生基础上 || 非原生基础上 总结:项目当中能原生就原生,提高性能 区别 uni-app 自带原生导航栏,在pages.json里配置. 原生导航的体验更好,渲染新页面时 ...

  6. 论文解读(MaskGAE)《MaskGAE: Masked Graph Modeling Meets Graph Autoencoders》

    论文信息 论文标题:MaskGAE: Masked Graph Modeling Meets Graph Autoencoders论文作者:Jintang Li, Ruofan Wu, Wangbin ...

  7. 「游戏引擎 浅入浅出」4.1 Unity Shader和OpenGL Shader

    「游戏引擎 浅入浅出」从零编写游戏引擎教程,是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame/cpp-game-engine-book 4.1 ...

  8. 获取字典中values值中最大的数,返回对应的keys

    1.字典中键值对的获取 print(data.values()) # 查看字典的值 print(data.keys()) # 查看字典的key 2.对字典中的值进行排序 sorted(data.val ...

  9. 从零开始Blazor Server(2)--整合数据库

    开篇 上一篇文章我们留了个尾巴,没有把freesql整合进去,这篇文章我们来整合. 目前的思路呢,是做一个简单的四不像的RABC,也有用户.角色. 权限三部分. 但是其中每个用户只有一个角色,即用户和 ...

  10. LyScript 实现对内存堆栈扫描

    LyScript插件中提供了三种基本的堆栈操作方法,其中push_stack用于入栈,pop_stack用于出栈,而最有用的是peek_stack函数,该函数可用于检查指定堆栈位置处的内存参数,利用这 ...