GraphQL 是什么?
GraphQL 是一种用于 API 的查询语言,由 Facebook 于 2015 年开发,并在 2018 年开源。它的目标是提供一种替代 RESTful 架构的方案。让我们深入了解一下:
-
查询精确性:GraphQL 允许客户端精确地请求所需的数据,避免了不必要的数据传输。相比之下,RESTful API 通常返回整个资源,而客户端只需要其中一部分数据。
-
灵活性:GraphQL 的查询语法直观易懂,允许在一行或几行中发出 API 请求,而不是访问具有大量参数的复杂端点。这使得开发者能够更轻松地生成和响应 API 查询。
-
图状数据查询:GraphQL 特别适用于查询图状数据。例如,在 Facebook 上查看用户信息时,你可能需要获取用户的名字、头像、好友列表、照片和帖子等多层次的数据。使用传统的 RESTful API,需要多个请求才能获取所有这些数据,而 GraphQL 可以一次性获取整个页面所需的数据。
-
灵活的后端设计:GraphQL 不限定后端存储类型。虽然它背后的实际存储可以选择 NoSQL 类型的数据库,但也可以使用 SQL 类型的数据库,或者其他任何存储方式(例如文本文件、内存中等)。
介绍
-
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造,致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。
- 官网:https://koajs.com/
- GitHub 仓库:https://github.com/koajs/koa
- 一个翻译的中文网:Koa 中文网 (nodejs.cn)
-
Koa 的原理和内部结构很像 Express,但是语法和内部结构进行了升级
-
Koa 内部使用 ES6 编写,号称是下一代 Node.js Web 框架
-
它的主要特点是通过利用 async 函数,帮你丢弃回调函数
- Koa 1 是基于 ES2015 中的 Generator 生成器函数结合 CO 模块
- Koa 2 完全抛弃了 Generator 和 co,升级为了 ES2017 中的 async/await 函数
-
正是由于 Koa 内部基于最新的异步处理方式,所以使用 Koa 处理异常更加简单
-
Koa 中提供了 CTX 上下文对象
- Express 是扩展了 req 和 res
-
Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
-
有很多开发工具/框架都是基于 Koa 的
-
个人评价
- koa 2 好用,设计上的确有优势。优势不在能实现更强的功能,而是可以更简单地完成功能。
- koa 2 社区远不如 express
- koa 1 在思想上与 koa 2 是一致的,但是 koa 2 的实现更漂亮
-
Koa 相关资源推荐
Koa 源码目录结构
.
├── History.md
├── LICENSE
├── Readme.md
├── dist
│ └── koa.mjs
├── lib
│ ├── application.js # 最核心的模块
│ ├── context.js # 上下文对象
│ ├── request.js # Koa 自己实现的请求对象
│ └── response.js # Koa 自己实现的响应对象
└── package.json
基本介绍
网格布局(Grid)是最强大的 CSS 布局方案。
它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。
Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。
Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。
NoSQL 简介
诞生的背景
NoSQL是一种非关系型的数据库,它的出现是为了解决传统的关系型数据库在处理大规模、高并发、多样化的数据时遇到的一些问题。NoSQL的诞生背景有以下几个方面:
- 互联网的发展,导致了数据量的爆炸性增长,传统的关系型数据库在存储和处理海量数据时,面临着性能下降、扩展困难、成本高昂等挑战。
- Web2.0的兴起,使得网站的交互性和动态性更强,用户的个人信息、社交网络、地理位置、操作日志等数据呈现出多样化和非结构化的特征,传统的关系型数据库在存储和查询这些数据时,需要复杂的模式设计和转换,效率低下。
- 云计算的普及,促进了分布式系统的发展,分布式系统要求数据库具有良好的水平扩展性和高可用性,传统的关系型数据库由于其固定的模式和强一致性的要求,难以满足分布式系统的需求。
- 业务的不确定性,使得数据库的存储模式需要频繁变更,传统的关系型数据库在修改表结构时,需要耗费大量的时间和资源,影响业务的快速迭代和创新。
express 是什么
Express 是一个流行的 Node.js 网络应用框架,用于构建可扩展、灵活和高性能的 Web 应用程序。它简化了 Web 开发流程,提供了许多功能和中间件来处理路由、请求、响应等,从而使开发人员能够更轻松地构建 Web 应用。
特性
- 简洁性:Express 设计简洁,易于学习和使用,使开发人员能够快速上手。
- 灵活性:它不强制使用特定的项目结构或工作流程,允许开发者根据项目需求自定义。
- 大量中间件:有大量的中间件可供使用,加速开发,例如身份验证、会话管理、请求处理等。
- 高性能:Express 是基于 Node.js 构建的,具有出色的性能和可伸缩性。
什么是 MongDB
-
MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源 NoSQL 数据库系统。
-
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
-
这会让曾经使用过关系型数据库的人比较容易上手
-
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
https://www.mongodb.com/docs/manual/installation/
提示
Mac 中使用 brew 安装时,会自动下载最新版本的node,如果你在其他地方安装了node,可能会导致一些问题,例如 nvm。安装后可以运行 brew uninstall node
来卸载 node,以此保证环境的一致性。同时 npm 文件也要删除,可以通过npm config get prefix
命令查看 npm 文件所在的位置,然后删除