《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Lad 是最好的Node.js框架,由前Express TC 和Koa团队成员制作。
Lad特征
Lad 拥有数十种功能,并且非常可配置。
微服务
这些微服务已针对安全性、性能和优雅重新加载进行了预配置。
- Webapp 服务器 → web.js
- API 服务器 → api.js
- 作业调度程序 → bree.js
- 代理服务器 → proxy.js
后端
- Redis、会话、Flash toast 和模式SweetAlert2消息(使用支持Cluster、Sentinel等的ioredis)
- 基于 Koa 的 webapp 和 API 服务器(使用 HTTP/2 进行生产!)
- 内置分页(使用ctx-paginate)
- 带有 BasicAuth 和版本控制的 RESTful API
- 具有 cron 和人类可读语法的自动化作业调度程序(由Mongoose和Bree支持)
- 基于护照的身份验证和基于组(类 Unix)的许可
- Stripe 启发的错误处理
- 带有通用数据库插件的 Mongoose 和 MongoDB
- 带有Nodemailer和本地渲染的电子邮件模板引擎
- 代理消除了对 Nginx 反向代理或 Apache 虚拟主机的需求
- 通过内置的 i18n 翻译支持多语言(见配置)
- 用于简单 SEO 的站点地图生成器
表现
- 压缩和零膨胀方法
- 基于流的文件上传
- 优雅的重新加载、关闭和重新连接处理
- 清单资产修订
- 准备好 Amazon S3 和 CloudFront
开始使用
严格支持基于 Mac 和 Ubuntu 的操作系统(不支持 Windows)。
要求
请确保您的操作系统已安装以下软件:
- Git - 参见GitHub 的安装教程
- Node.js (v10+) - 使用nvm在任何操作系统上安装它
- 安装后nvm需要运行nvm install node
- 建议您安装yarn ,它是npm的替代品
- MongoDB (v3.x+):
- Mac(通过brew)brew tap mongodb/brew && brew install mongodb-community && brew services start mongodb-community:.
- Ubuntu:
sudo apt-key adv --keyserver hkp:echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.listsudo apt-get updatesudo apt-get -y install mongodb-org
Redis (v4.x +):
- Mac(通过brew):brew install redis && brew services start redis
- Ubuntu:
sudo add-apt-repository -y ppa:chris-lea/redis-serversudo apt-get updatesudo apt-get -y install redis-server
安装
npm:
npm install -g lad
yarn:
yarn global add lad
用法
创建项目
lad new-projectcd new-project
首先,尝试在命令行上键入npm start(或)。yarn start这将向您显示您可以运行的所有脚本。
该start脚本(以及许多其他脚本)在后台使用nps和nps-utils。
该脚本接受一个<task>参数,而一个任务all将生成、监视和重新编译上述所有微服务。
只需打开http://localhost:3000进行测试!
npm:
npm start all
yarn:
yarn start all
调试
- DEBUG- 使用调试输出进行调试(社区中广泛采用的包,用于跨所有 Node 包进行调试):
DEBUG=* ...
NODE_DEBUG=* ...
- MONGOOSE_DEBUG- 调试 Mongoose 原始数据库操作输出:
MONGOOSE_DEBUG=true ...
- TRANSPORT_DEBUG- 调试 Nodemailer 传输:
TRANSPORT_DEBUG=true
REDIS_MONITOR- 调试 Redis 使用MONITOR(使用@ ladjs/redis并传递参数):truemonitor
REDIS_MONITOR=true ...
- REDIS_FRIENDLY_ERROR_STACK- 使用友好的错误堆栈消息调试 Redis(请参阅ioredis的showFriendlyErrorStack选项)
REDIS_FRIENDLY_ERROR_STACK=true ...
配置
环境变量
根据Twelve-Factor ,我们通过名为@ladjs/env的dotenv配置包简化了 Lad 项目的配置。
我们使用以下三个包来管理配置:
- dotenv-extended - 允许我们.env在一个名为.env.schema
- mustache - 允许我们在我们的配置文件中使用Mustache 模板语言.env.env.defaults
- dotenv-parse-variables - 自动解析变量类型process.env(例如,FOO=4将设置process.env.FOO = 4为Number变量类型而不是 a String)
配置由以下按优先级顺序管理:
- 文件内容位于config/index.js(读取process.env环境变量)
- 目录下文件的内容config/environments/(为每个环境设置默认值,例如,您可以通过NODE_ENV=staging,它将加载文件config/environments/staging.js)
- 用于覆盖默认值或设置所需的环境变量(例如NODE_ENV=production)
- 环境配置在.env
- 环境配置在.env.defaults
优先级是环境配置文件、环境变量,然后是.env文件。
基本上,如果dotenv已经检测到它被作为环境变量传递,它就不会设置环境变量。
查看config文件夹的内容以及.env.defaults的默认值。
持续集成和代码覆盖
以下是使用Codecov设置SemaphoreCI所需的简单步骤:
- 转到SemaphoreCI并注册一个免费帐户
- 将存储库推送到 GitHub 后,将其作为项目添加到 SemaphoreCI
- 使用以下构建设置在 SemaphoreCI 上配置您的项目:
- 在 Codecov 上添加您的项目并将令牌复制到剪贴板
- 为您的项目转到 SemaphoreCI 的项目设置并添加CODECOV_TOKEN为环境变量(使用剪贴板中的内容)
- 在 SemaphoreCI 上运行测试构建(“重建最新版本”)并检查以确保您的代码覆盖率报告在 Codecov 上正确上传
- 确保您的README.md文件具有正确呈现的构建状态和代码覆盖率标记(如果您的 GitHub 存储库是私有的,您将需要使用来自每个提供商的不同标记链接)
—END—
开源协议:MIT license
开源地址:
https://github.com/ladjs/lad