【goed/ui】自定义组件设计思想篇

组件包(editor/editor.go)

go 复制代码
package editor

// Props 即契约 ------ 对应 TS 的 interface EditorProps

type Props struct {
    // ui.Props 可根据组件特性决定是否嵌入全局通用属性
    Path    string
    Focus   bool
    OnSave  func(content string)  // 事件就是普通字段,React 风格
}

// View 即组件 ------ 对应 const Editor: FC<Props>
var View = ui.ViewFn[Props](func(p *Props, children ...*ui.VNode) *ui.VNode {
    // p.Path、p.Focus 全部强类型,无需 GetProp/断言
    return ui.H("div", &ui.Props{Style: p.Style},
        ui.H("textarea", &ui.Props{Focus: p.Focus}),
    )
})

调用组件

go 复制代码
func NewApp(path string) *ui.ComponentDef {
    return ui.Component(func(_ *ui.SetupContext) func() *ui.VNode {
        return func() *ui.VNode {
            return ui.H(editor.View, &editor.Props{
                Style: ui.Style{Flex: 1},
                OnClick: func() {},
                Path:   path,
                Focus:  true,
                OnSave: func(c string) { save(c) },
            })
        }
    })
}

总结

不像vue3反倒像是react + ts的感觉了

底层从windows gdi提升到direct2d后,界面清晰度和抗锯齿效果都提升,但是启动内存也加了个几十MB,不过相对于webview还是低得多。

最新的electron系列应用占用内存也太多了

相关推荐
Vex2une3 小时前
Windows 性能监视器发展史:从 PerfMon 计数器到 XPerf 深度诊断
windows·wpa·etw·性能监视器·perfmon·性能计数器·xperf
在角落发呆4 小时前
工具配置备份步骤:从手动备份到自动化方案
运维·windows·自动化
_upupup4 小时前
Linux的调试工具——gdb/cgdb
linux·服务器
JeJe同学5 小时前
Docker镜像导入、容器启动
linux·运维·docker
Vd7H20A75 小时前
Windows 下用 llama.cpp 运行 Qwen3.8-27B 并开启 512K 上下文 完全指南
windows·llama
Jason_zhao_MR5 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
闲云野鹤在人间6 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
一个风轻云淡7 小时前
GCC 和 GDB命令简单解读
java·linux·前端
H.莓飛7 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
资料库017 小时前
Linux 8个常见运维故障排查
java·linux·运维