Fabulous是一个现代的声明性UI框架,用于在.NET中制作跨平台移动和桌面应用程序。
它的目的是通过结合表达性UI语法,简单且健壮的模型视图 - 上升(MVU)体系结构和功能性编程来为您带来丰富的开发体验和对代码的信心。
可以在docs.fabulou.dev上找到神话般的完整文档。
其他有用的链接:
此外,我们还有神话般的Discord服务器,您可以在其中提出任何神话般的相关问题。
我们认为,声明性的UI,功能编程和MVU州管理非常适合应用程序开发。
Fabulous将帮助您快速地创建移动和桌面应用程序,并充满信心地归功于声明性的UI和MVU架构,所有这些都是单语言:F# - 一种功能性编程语言。
神话般的旨在通过低记忆消耗和有效的视图扩散机制来表现。
请注意,神话般的本身不会提供任何UI渲染。您需要将其与另一个框架相结合:
如果无法正确完成,典型的UI开发可能是一场噩梦。
它通常是在一个地方创建的,然后根据需求和用户在做什么而在这里和那里进行突变。相关的UI最终在多个地方出现,因此很难在精神上思考所有可能性。直到由于意外用户流动而导致的不可避免的种族条件或错误。
借助Swiftui启发了其声明性的UI,很棒的是UI更容易推理。
组件的UI在一个地方定义,每当该组件的状态更改时,Fabulous都会称呼它。
您无需考虑如何突变UI,Fabulous将会处理它,以始终匹配所需的最新UI。
/// A simple Counter app made with Fabulous.MauiControls
type Model =
{ Count : int }
type Msg =
| Increment
| Decrement
let view model =
Application (
ContentPage (
" Counter app " ,
VStack ( spacing = 16. ) {
Image ( Aspect.AspectFit , " fabulous.png " )
Label ( $ " Count is {model.Count} " )
Button ( " Increment " , Increment )
Button ( " Decrement " , Decrement )
}
)
)
MVU使这些状态之间的每个状态和过渡明确。
您无需担心可能导致无效状态的意外操作,这会崩溃该应用程序。
相反,您可以非常轻松地使用F#记录和歧视工会类型对应用程序的状态或组件的状态进行建模。
开始时,Fabulous将初始化状态。然后,当发送消息时,神话般的消息将使您从一个状态过渡到另一个状态,给定特定的消息。
如果同时收到几条消息,Fabulous会排队,让您正确更新状态。
let init () =
{ Count = 0 }
let update msg model =
match msg with
| Increment -> { model with Count = model.Count + 1 }
| Decrement -> { model with Count = model.Count - 1 }
最后,鉴于MVU的功能性质,单位测试应用程序的每种可能状态非常简单。
[<Test>]
let ``When clicking the Increment button , increment the count by one`` () =
let previousState = { Count = 10 }
let expectedState = { Count = 11 }
let actualState = App.update Increment previousState
actualState |> should equal expectedState
.NET是Microsoft的一个非常成熟且广泛的框架。它可以在任何设备和平台上运行,非常有效,并且具有庞大的开源和许可库,插件和其他框架的生态系统。
您将能够通过直接在神话般的应用中使用第三方软件包从.NET生态系统中受益。
向我们展示您的支持的最简单方法是给项目一个明星。
您也可以通过成为GitHub赞助商计划的赞助商来支持我们。
这是支持使神话般的Dotnet最好的宣言UI框架所做的所有努力的绝佳方法。
如果您需要支持,请参见下面的商业支持部分。
您是否找到了一个错误或建议如何增强神话般的神话般?打开一个问题,我们将尽快看一下。
您想用PR做出贡献吗?始终欢迎PR,只需确保从正确的分支(主)创建它,然后遵循贡献者指南即可。
对于更大的变化,或者如果有疑问,请确保谈论您对团队的贡献。通过问题,讨论或使用Discord服务器与团队联系。
如果您希望我们为您提供:
随时与我们联系:[email protected]