跳到主要内容

· 阅读需 3 分钟

monorepo 工具选择

  • Nx

  • Lerna

  • Workspace(yarn/npm/pnpm)

    ps: 在做monorepo时,可以看看当前技术栈CLI是否有提供相关功能,例如:nest-cli

  1. Nx 和 Lerna 对比
对比项NxLerna
复杂性适合复杂项目适合简单、多包发布的项目
开发效率提供全面的优化工具更专注于发布和依赖管理
学习成本较高,需要理解其功能和机制较低,简单易用
社区支持活跃,功能更新频繁社区逐渐衰退

  1. 功能对比
功能NxLerna
任务调度内置智能调度,支持任务依赖分析和并行优化。无原生任务调度,但支持通过 npm scripts。
缓存机制强大的分布式缓存(构建和测试的结果可复用)。无缓存机制。
代码生成器提供模板代码生成器(React、NestJS 等)。不提供。
依赖管理依赖关系分析和图形化展示。简单的包间依赖分析。
版本发布支持,但不是主要功能。专注于多包发布(如 lerna publish)。
工具整合集成多种前端和后端框架(如 React、NestJS)。不集成框架,需手动配置。
社区生态主动开发,快速更新,支持现代技术栈。维护较少,社区活跃度有所下降。

  1. 选择建议
  • 如果是库开发和发布: 优先选择 Lerna
  • 如果是微服务或复杂架构: 优先选择 Nx
  • 需要两者功能: Nx 和 Lerna 可以搭配使用。

· 阅读需 1 分钟
  • 小程序题库创建器。在学习使用tailwind.css的时候想到——这么多css缩写,要是有个小程序让我闲暇时刷一下就好了。

  • web UI 序列化

功能点

  1. 支持上传设计稿

· 阅读需 1 分钟

tech stack

gatsby + strapi + apolloGraphql + minio

some points

  • gatsby 的 createSchemaCustomization Gatsby 能够从数据中自动推断出 GraphQL Schema(数据的形状)。createSchemaCustomization可以向查询层(query layer)添加自定义功能(额外的数据形状)。

TODO

  • strapi 功能

  • strapi 部署

  • strapi 插件开发

  • minio 功能

  • minio 部署

  • apolloGraphql 服务端功能

  • apolloGraphql 客户端功能

  • apolloGraphql 部署

· 阅读需 3 分钟

web 服务器可以承载多个域名。这被称为虚拟主机(Virtual Host)。通过配置不同的虚拟主机,同一个服务器可以为多个域名提供服务。每个虚拟主机都使用独立的配置文件,可以设置不同的域名、目录结构、访问权限等。当用户访问某个域名时,web 服务器会根据配置文件的设置将请求发送到对应的虚拟主机上。这样就实现了通过一个服务器为多个域名提供服务的功能。

当多个网站托管在一台服务器上并共享一个IP地址,并且每个网站都有自己的SSL证书,在客户端设备尝试安全地连接到其中一个网站时,服务器可能不知道显示哪个SSL证书。这是因为SSL/TLS握手发生在客户端设备通过HTTP指示连接到某个网站之前。

服务器名称指示 (SNI) 旨在解决此问题。SNI 是 TLS 协议(以前称为 SSL 协议)的扩展,该协议在 HTTPS 中使用。它包含在 TLS/SSL 握手流程中,以确保客户端设备能够看到他们尝试访问的网站的正确 SSL 证书。该扩展使得可以在 TLS 握手期间指定网站的主机名或域名 ,而不是在握手之后打开 HTTP 连接时指定。

location  /api {
proxy_ssl_server_name on; #将源域名指定为 example.com
proxy_pass https://example.com;
}

参考

记一次 nginx 转发代理 https 出现 502 的情况

proxy_ssl_server_name

什么是SNI?TLS服务器名称指示如何工作