【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系列应用占用内存也太多了

相关推荐
懂点Tech7 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
qq_401700419 小时前
Linux设备树详解
linux·运维·服务器
云梦谭9 小时前
让 Linux 主动连接 Windows:配置 Windows 11 SSH 服务端
linux·windows·ssh
奇树谦9 小时前
Windows CMD 下 mc 运维指南:SeaweedFS 安装验收与 MinIO 数据迁移
运维·windows
刚入门的大一新生9 小时前
Linux-信号
linux·运维·服务器
keren214 小时前
SceneDock:Windows 场景化工作台——一键启动工作链,还能被 AI Agent 调用(CLI / MCP)
windows·开发工具·效率工具·mcp
GeW14 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux
mounter62514 小时前
深入理解 gccrs:GCC 如何实现 Rust 编译器,以及编译 Linux 内核面临的挑战
linux·驱动开发·rust
垚垚学技术_聚焦云原生14 小时前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
无足鸟ICT15 小时前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash