基本

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. 关于Java中的构造方法

    关于构造方法: 1.构造方法又叫构造函数/构造器. 2.构造方法语法结构中"返回值类型"不需要指定,也不能写void,如若写void,则变成普通方法. 3.构造方法有返回值,和当前 ...

  2. PHP生成图形验证码

    在建站过程中,很多时候都会需要用户验证验证码等操作,比如:注册.登录.发表评论.获取资源等等,一方面可以验证当前用户的行为是否是爬虫.机器人等情况,给网站数据统计产生影响:另一方面可以防止用户大量刷取 ...

  3. 数组容器(ArrayList)设计与Java实现,看完这个你不懂ArrayList,你找我!!!

    数组容器(ArrayList)设计与Java实现 本篇文章主要跟大家介绍我们最常使用的一种容器ArrayList.Vector的原理,并且自己使用Java实现自己的数组容器MyArrayList,让自 ...

  4. ArrayList源码深度剖析,从最基本的扩容原理,到魔幻的迭代器和fast-fail机制,你想要的这都有!!!

    ArrayList源码深度剖析 本篇文章主要跟大家分析一下ArrayList的源代码.阅读本文你首先得对ArrayList有一些基本的了解,至少使用过它.如果你对ArrayList的一些基本使用还不太 ...

  5. 简记清空C语言输入残留内容

    为了在命令行程序中实现和用户的交互,我们编写的程序的运行过程中往往涉及到对标准输入/输出流的多次读写. 在C语言中接受用户输入这一块,有着一个老生常谈的问题:"怎么样及时清空输入流中的数据? ...

  6. word-break,word-wrap,line-break相关知识

    1.word-break: break-word与word-wrap: break-word的区别? 答:计算最小宽度(width: min-content)时有区别,word-break: brea ...

  7. 关于2022年3月9日之后Typora登录不了--已解决

    p.s.今天是2022.7.27,软件版本:13.6.1 (以下所有方法,亲自尝试后整理出的) 报错信息: This beta version of typora is expired, please ...

  8. CSp2021/ NOIp2021 游记

    目录 Part 1. CSp2021 J S Part 2. NOIp2021 总结 Part 1. CSp2021 J 好水 挂飞 239pts,1= S 好毒瘤 rnm,写了个暴力就去搞 T2 \ ...

  9. linux常用命令和快捷键收集

    find / -name php #查找根目录下所有包含 php 字符的文件和目录 find / -ctime 1 #查找最近一天下载的文件和目录 yum install lrzsz #安装上传下载组 ...

  10. linux 文件存放目录

    Linux不靠文件扩展名区分文件类型(windous病毒和木马不能在linux里面运行) 所有的存储设备都必须挂载之后才能使用(包括硬盘,U盘和光盘),例如给它手工给它分配盘符 Linux所有内容以文 ...