Katana 是一个现代 Swift 框架,用于编写 iOS 应用,深受 React 和 Redux 启发,为应用程序的各个方面提供了结构。
- 逻辑:应用程序的状态完全由一个可序列化的数据结构描述,唯一改变状态的方式是派遣一个动作。一个动作是改变状态的意图,并包含所有相关信息。因为所有变化都集中发生,且遵循严格的顺序,所以不会出现任何微妙的数据竞争条件。
- UI:UI 是通过组件树的 props(配置数据,例如按钮的背景色)和状态(内部状态数据,例如按钮的高亮状态)声明性描述的。这种方法让您可以将组件视为隔离的、可复用的 UI 零件,因为组件的渲染方式仅取决于组件自身的当前 props 和状态。
- 逻辑 ↔️ UI:UI 组件与应用程序状态连接,并且每当状态发生变化时都会自动更新。您通过选择将输入给组件 props 的应用程序状态的部分来控制它们如何变化。为了尽可能快地渲染这个过程,只更新相关的 UI 部分。
- 布局:Katana 定义了一种简洁的语言(灵感来自 Plastic),用于描述完全响应式的布局,它将适当地缩放到任何纵横比或大小,包括字体大小和图像。
我们认为自从我们在生产中使用 Katana 以来,它就对我们的帮助很大。在 Bending Spoons,我们使用了很多开源项目,并希望回馈社区,希望您会发现这个库有用,并可能做出贡献。❤️