TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括: 类型批注和编译时类型检查。 类型推断。 类型擦除。 接口。 枚举。 Mixin。 泛型编程。 名字空间。 元组。 Await。 安装 TypeScript 安装TypeScript: 1npm install -g typescript 安装完成后可以使用 tsc 命令来执行 TypeScript 的相关代码。查看 TypeScript 版本号: 1tsc -v...
跨域请求问题 跨域是指发送与当前服务的域名(或端口)不一致的请求。跨域问题的产生原因是浏览器不允许JS请求对域名不同或端口不同的服务发起请求(同源策略)。 演示跨域问题: 编辑一个html页面: 1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7 <script...
中间件(Middleware),特指业务流程的中间处理环节。 当一个请求到达Express的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理。 Express中间件的调用流程如下: Express的中间件,本质上就是一个处理函数。Express中间件的格式如下: 注:中间件函数的形参列表中,必须包含next函数。而路由的处理函数中只包含request(res)和response(res)。 利用中间件,可以实现后端中Filter(拦截器)或Interceptor(拦截器)等功能。 在中间件调用流程中,next()函数就是实现多个中间件连续调用的关键。next()表示将流转关系转交给下一个中间件或路由。 中间件的作用:通过...
路由的类型 在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系。Express中的路由分三部分组成: 1app.METHOD(PATH, HANDLER) METHOD:请求的类型。 PATH:请求的URL地址。 HANDLER:请求的处理(回调)函数。 路由的匹配过程 每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。 在匹配时,Express会按照路由被定义的顺序进行匹配,如果请求的类型和请求的URL同时匹配成功,则Express会将这次请求,转 交给对应的函数进行处理。 关于路由的基本使用,已经在 Express 基础 中进行了介绍。 路由的模块化使用 为了方使...
Nodemon是一种监听项目文件变动,让项目文件在修改时可以自动重启项目的工具。使用Nodemon时,当代码被修改,Nodemon会自动帮我们重启项目,极大方便了开发和调试。 Nodemon项目地址:https:/www.npmjs.com/package/nodemon。 使用Nodemon时,一般是在全局进行安装: 1npm i nodemon -g 安装完Nodemon后,可以使用nodemon命令来启动项目,这样当项目文件被修改时,nodemon会自动完成项目的重启。例如: 1nodemon app.js
Express是一个Web开发框架。Express本质上是NPM上的一个第三方模块,提供了快速创建Web服务器、API接口服务器的方法。Express中文网地址为https://www.expressjs.com.cn/,官网地址为https://expressjs.com/。 使用Node.js提供的原生http模块也一样可以创建Web服务器。只不过http模块用起来很麻烦、开发效率低,而Express在基于http的基础上进行了进一步的封装,能极大提高开发效率。 安装Express 4.17.2版本: 1npm i express@4.17.2 使用Express的基本步骤如下: 1const express =...
包 在Node.js中,第三方模块又称为包。第三方模块与包的概念相同,仅仅在称呼上有差异。包是由第三方个人或团队开发出来的,免费供所有人使用。 Node.js中的包都是免费且开源的,不需要付费即可下载使用。 包是基于内置模块封装出来的,提供了更高级、更方便的API,极大地提高了开发效率。 NPM 在 npm, Inc. 公司旗下的网站https://www.npmjs.com上,可以搜索到任何你需要的包。该网站是全球最大的包共享平台。在该网站上,你还能浏览到对应包的相关文档。 npm, Inc. 公司提供了地址为https://registry.npmjs.org/的服务器,来对外共享所有的包。可以通过该服务器来下载所需的包。 使...
模块化概念 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、可分解和可更换的单元。 在模块化时,要遵守固定的规则(模块化规范),把一个大文件拆成独立并互相依赖的多个小模块。 进行模块化拆分的好处: 提高了代码的复用性。 提高了代码的可维护性。 可以实现按需加载。 遵守同样的模块化规范,有利于降低沟通的成本,极大地方便了各个模块之间的相互调用,利人利己。 Node.js 模块化 Node.js中根据模块来源的不同,将模块分为了3大类,分别是: 内置模块:由Node.js官方提供,例如fs、path、http等。 自定义模块:用户自定义的模块。在Node.js中,用户创建的每个...
http模块是Node.js官方提供的、用于创建Web服务器的模块。通过http模块提供的http.createServer()方法,就能像Web服务器一样对外提供Web资源服务。 在Node.js中无需使用第三方Web服务器软件,通过http模块就能模拟服务器软件,从而对外提供Web服务。 http模块主要用于搭建HTTP服务端和客户端,使用HTTP服务器或客户端功能必须调用http模块。在Node.js中使用Web服务的基本步骤如下: 导入http模块: 1const http = require('http') 创建Web服务器实例。 1const server = http.createServer() 为服务器实例绑定...
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者时退出。每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。 事件驱动程序 Node.js 使用事件驱动模型。在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数: 这套流程有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的...