hackpack / hackmini
Hacklang 的迷你框架。
Requires
- hhvm: ^3.11
- fredemmott/definition-finder: ^1.1.1
- fredemmott/hhvm-autoload: ^0.1.0
Requires (Dev)
- hackpack/hackunit: ^0.7.1
This package is not auto-updated.
Last update: 2024-09-14 18:47:41 UTC
README
使用 Hack 编写的迷你框架
特性
HackMini 在“微型”框架和“臃肿”框架之间,提供了一套平衡的特性,减轻了开发者对灵活、可维护、干净代码库的需求。
类型安全
HackMini 尽可能使用 Hack 的严格模式,因此框架的所有组件都必须完全类型化。这意味着,即使依赖于 HackMini 的函数或类,您的所有代码都可以是类型安全的。
类型安全对于代码的可维护性和灵活性至关重要。当您的代码是类型安全的,并且您更改了任何函数或类的接口时,类型检查器会告诉您必须更新所有其他地方以适应新功能。这就像已经为您编写了一整个类的集成测试!
路由和中间件栈
HackMini 大量使用用户定义的属性以实现易于路由。属性也用于定义特定路由的中间件栈。
定义路由处理器
路由处理器必须是普通函数或静态类方法。路由处理器必须用 <<Route('/path')>>
属性标注。路径属性参数必须在应用程序范围内是唯一的。
<?hh // strict <<Route('/users')>> function userListHandler( \FactoryContainer $c, \HackPack\HackMini\Message\Request $req, \HackPack\HackMini\Message\Response $rsp, ) : \HackPack\HackMini\Message\Response { return $rsp->show('Some HTML'); }
HTTP 消息抽象(PSR-7... 类似)
工厂容器
命令行
非特性
其他框架的一些特性在 HackMini 中被有意不实现。在 Composer 时代,我们开发者只需要足够的脚手架来将请求传递到我们的代码,并将响应返回给用户。对于中间的部分,我们有大量的工具可供选择,而 HackMini 使得使用最适合您绝妙想法的工具变得容易。
魔法
HackMini 的主要目标是代码的清晰性。这是通过尽可能使用严格模式实现的,这样框架代码就能尽可能多地提供给 Hack 类型检查器信息。
如果 HackMini 的实现中任何内容不清楚或代码文档编写得不好,请 在 GitHub 上提交一个问题。更好的是,提交一个 pull request!
数据库抽象
有许多数据库抽象解决方案,没有必要让围绕您应用程序的脚手架强制采用任何特定的数据库交互方式。HackMini 故意避免任何数据库交互,让您有自由选择您喜欢的解决方案!
模板
正如有许多数据库解决方案一样,也有许多模板引擎,包括 XHP!HackMini 提供了 PSR-7 兼容的请求和响应抽象,这使得将您喜欢的数据发送到用户变得容易。
配置
HackMini 通过最小化所需的配置量来优先考虑开发者体验。最小值是零,这就是 HackMini 所需要的。
没有特定的 HackMini 配置文件。Web 服务器可能需要一些配置,系统依赖项可能需要安装,但 HackMini 只做它最擅长的事情...使您能够以您自己的风格轻松编写干净的代码。