node
1 | const express = require("express"); |
导入和创建模块
1 | const express = require("express"); |
这里介绍一下自建模块的方法
square.js
1 | exports.area = (width) => { |
main.js
1 | const square = require("./square");//模块路径 |
Node 是一个单线程事件驱动的执行环境。“单线程”意味着对服务器的所有请求运行在同一个线程上,而不是分布在不同的进程上,这里我们就需要用到另一个操作异步API
我们常见的代码如下,其执行顺序以文本顺序进行打印
当我们以异步API的方式进行执行时
其输出就根据逻辑顺序进行打印,而这种打印就需要用到异步API,也就是说异步API其实是一个多线程操作
路由定义
路由处理器基本格式
1 | app.get("/", (req, res) => { |
get作为一个处理器,处理传入的请求
其他处理器
checkout()
, copy()
, delete()
, get()
, head()
, lock()
, merge()
, mkactivity()
, mkcol()
, move()
, m-search()
, notify()
, options()
, patch()
, post()
, purge()
, put()
, report()
, search()
, subscribe()
, trace()
, unlock()
, unsubscribe()
.
中间件跟处理器有着类似的作用,中间件函数通常是对请求或响应执行某些操作,然后调用“栈”里的下一个函数,可能是其他中间件或路由处理器
1 | const a_middleware_function = (req, res, next) => { |
中间件函数和路由处理回调之间的唯一区别是:中间件函数有第三个参数 next
,在中间件不会结束请求周期时应调用这个 next
(它包含中间件函数调用后应调用的下一个函数),但不同的是中间件需要提前导入,处理器不需要
托管静态文件
1 | app.use(url,express.static("public")); |
即可通过url访问指定路径下的文件
错误处理
处理错误的特殊中间件函数有四个参数(err, req, res, next)
,而不是之前的三个
1 | app.use((err, req, res, next) => { |