node-10-express-路由基础-静态目录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: node-10-express-路由基础-静态目录

1.what中间件


就是请求req和响应res之间的一个应用

浏览器向服务器发送一个请求后,服务器直接通过request定位属性的方式得到通过request携带过去的数据,就是用户输入的数据和浏览器本身的数据信息

这中间就一定有一个函数将这些数据分类做了处理,最后让request对象调用使用,这个处理函数就是我们所所得中间插件。

比如生活中的买家和汽车厂家,中间需要一个4s来搭桥,这个4s就类似于中间件

比如生活中的商家和消费者,中间需要一个平台(牟东,某宝)来搭桥,这个平台就类似于中间件

比如生活中的租客和房主,中间需要一个中介来搭桥,这个中介就类似于中间件

语法:

app.use("路由",function(req,res,next){});

express的路由匹配顺序是从上往下依次匹配


2.每个请求加事件戳


其实这里类似 日志的一个思想雏形

服务端需要记录接收到的每次请求具体信息 (比如参数,请求方式等)

还需要记录每次请求的时间,

因为生成环境出的问题,需要排查,有些也不容易复现,所以查看日志非常重要

这个中间件 匹配所有路由,所有的请求都会进来,也就能获取所有的请求信息

响应信息也可以获取,写到日志文件里面 形成清晰的日志,便于以后查看

这个正则比较简陋, 能理解意思就行

核心代码


app.use(/\/.*/, function (req, res, next) {
   //这里可以 获取请求的参数 ,返回的参数 
//写到日志文件里面 形成日志
    console.log(new Date().toLocaleString());
    // next是一个函数,调用next相当于告诉express,继续向下执行代码
    next();
});



3.路由



app.use("/admin",function(req,res,next){
    console.log("这是中间件请求的admin路由");
     next();
});
app.get("/admin",function(req,res){
    console.log("这是get请求的admin路由");
    res.end();
});

admin get和use都会匹配

admin/level1  只有use会匹配


4.总结


中间件语法与路由语法的区别:

1. 中间件语法里的回调函数里多一个next参数

2. 中间件的语法里可以不写第一个路由参数, 如果不写, 表示通配路由;

路由语法如果不写第一个参数,什么都匹配不上

3. 中间件语法的第一个参数对路由值的匹配是开头模糊匹配,

路由语法的第一个参数对路由值的匹配是精确匹配.


5.后续


更复杂的内容 放到token在祥讲


6.静态资源


可以设置多个静态资源目录

因为开发过程可能 图片资源单独放一个目录

音视频单独放一个资源目录

Express 在静态目录查找文件,因此,存放静态文件的目录名不会出现在 URL 中。

通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了


// public作为静态资源根目录
//里面可以放图片 css js等资源
app.use(express.static("public"))
app.use(express.static("public2"))
上面如果不行 可以加上路径


app.use(express.static(__dirname+"/public"))
app.use(express.static(__dirname+"/public2"))
更多信息查看下方链接

express-静态资源目录

地址栏换成你的端口 和静态资源目录下的文件名就哦了
Express 在静态目录查找文件,因此,存放静态文件的目录名不会出现在 URL 中。
  1. 现在,你就可以访问 public 目录中的所有文件
    http://localhost:3000/images/kitten.jpg
    http://localhost:3000/css/style.css
    http://localhost:3000/js/app.js
    http://localhost:3000/images/bg.png
    http://localhost:3000/hello.html

2.注意 不要带上静态资源目录的名字比如public这个在地址栏不要写 ,否则访问不到

3.可以把自己之前写的项目放到这个服务器目录下

然后再地址栏输入 通过浏览器访问

(TOSI9UHO7L)QFMX[7YM26J.png

访问


7 创建虚拟路径


1.静态资源路径写法1


app.use('/static', express.static(__dirname+'/public')

2.静态资源路径写法2


const path = require('path')
app.use(express.static(path.join(__dirname, 'public')))
现在,你就可以通过带有 /static 前缀地址来访问 public 目录中的文件
  1. http://localhost:3000/static/images/kitten.jpg
  2. http://localhost:3000/static/css/style.css
  3. http://localhost:3000/static/js/app.js
  4. http://localhost:3000/static/images/bg.png
  5. http://localhost:3000/static/hello.html


8.扩展话痨


这个目录就是服务器目录,比如phpwww目录

早期,或者说为了省事,测试的时候前端会把代码压缩给服务端,服务端同事解压后也会放入到他本地的服务器目录,然后给前端人员一个地址,前端在这个地址上测试,迭代,直到没有问题,在由后端人员发布到生产环境

大体流程是这样的,但是具体测试,谁把代码放到服务器不一定

现代互联网公司 会通过一些构建工具,例如我之前经常使用的是Jekins

里面主要是通过脚本配置来发布测试代码和线上代码

大体内容如下

  1. gitlab或者公司指定的仓库拉取代码
  2. 将拉取的代码通过一些指令远程拷贝到服务器指定目录

这其中第一步 例如gitlab上会有很多分支,测试环境的分支,开发环境的分支,线上环境的tag分支等

拉取代码肯定需要配置相应的gitlab对应权限的账号

不同环境不同的分支 都是配置,配置一次,以后自动化,点击对应的功能按钮就好

远程拷贝等一些常规指令,需要大体能看懂,之前还自学,外加向运维同学请教, 学了不少,可惜现在忘完了,看到指令的话还能认识,

这里边可能还牵扯到一些 名字 割接 ,跳板机

割接 比如网络扩容,设备更新,就是网络改造中的对接操作

跳板机因为有些服务器就只是服务器,存放资料的,硬盘,没有屏幕,而且肯定也都在大机房,或者海底,山里,往上面拷贝东西,肯定也不会让你直接访问的,需要通过中介,层层跳转过去操作,那些中介电脑就是跳板机




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
JavaScript 前端开发 安全
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
168 0
|
7月前
|
JavaScript 前端开发
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
|
7月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
47 0
|
7月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
52 0
|
2月前
|
JavaScript
Node.js 路由
10月更文挑战第5天
24 2
|
3月前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
184 14
|
4月前
|
开发工具 git
IDEA——npm install 没有生成node_modules目录
IDEA——npm install 没有生成node_modules目录
279 0
|
6月前
|
JavaScript
Node.js 路由
Node.js 路由
28 3
|
7月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(下)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
57 0
|
7月前
|
JavaScript 前端开发 开发者
Vue路由及Node.js环境搭建
Vue.js 和 Node.js 是两个不同的技术,分别用于前端和后端开发,具有不同的用途和功能
33 1