吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3169|回复: 20
收起左侧

[其他原创] 我写了一个专门用于桌面软件的前端组件库

  [复制链接]
thepoy 发表于 2024-3-12 21:42
本帖最后由 thepoy 于 2024-3-12 22:17 编辑

本组件库使用 solidjs 开发,应用于使用 tauri、electron 开发的桌面软件,所以当前未实现message、notification、modal等反馈组件,这些组件可通过桌面开发框架调用系统 API 或创建多窗口实现。

组件以精简为主,绝不添加复杂功能,对复杂功能有需要的应该使用 antd、element-plus 等全功能组件库。

参考了一些 React 组件库的实现,包括:

  • antd
  • mui

所以这个组件库没有自己的设计风格,一切为了效率,对设计有需求可以自己修改组件样式。

代码:https://github.com/alley-rs/alley-components

在线示例:https://codesandbox.io/p/devbox/github/alley-rs/alley-components/tree/release?file=%2Fsrc%2FApp.tsx

基于此组件库开发的小软件:https://github.com/alley-rs/alley-transfer

版规要求上传代码,下面是组件库使用的一段示例代码:

import { createSignal, lazy } from "solid-js";
import { Button, FloatButton, Layout, Toast } from "alley-components";  // 直接导入
import { Dynamic } from "solid-js/web";
import DarkSwitchButton from "./DarkSwitch";
import { AiOutlineClose, AiOutlineDelete } from "solid-icons/ai";

// 使用 Dynamic 而不是路由加载 Layout.Content
const children = [
  lazy(() => import("./components/buttons")),
  lazy(() => import("./components/inputs")),
  lazy(() => import("./components/tooltips")),
  lazy(() => import("./components/progresses")),
  lazy(() => import("./components/spinners")),
  lazy(() => import("./components/alerts")),
  lazy(() => import("./components/typographys")),
  lazy(() => import("./components/toast")),
  lazy(() => import("./components/list")),
];

const LazyMenu = lazy(() => import("alley-components/lib/components/menu"));  // 懒加载导入

const menus = [
  "按钮",
  "输入",
  "文字提示",
  "进度条",
  "加载中",
  "警告",
  "文本",
  "轻提示",
  "列表",
];

const App = () => {
  const [index, setIndex] = createSignal(0);

  const [toastOpen, setToastOpen] = createSignal(false);

  return (
    <>
      <Layout
        menu={
          <LazyMenu
            style={{ width: "160px" }}
            defaultSelectedIndex={0}
            items={menus.map((s, idx) => ({
              children: s,
              onClick: () => setIndex(idx),
            }))}
          />
        }
        content={<Dynamic component={children[index()]} />}
      />

      <Toast
        message="已清空"
        open={toastOpen()}
        onClose={() => setToastOpen(false)}
        action={
          <Button
            icon={<AiOutlineClose />}
            type="plain"
            shape="circle"
            onClick={() => setToastOpen(false)}
            danger
          />
        }
      />

      <FloatButton.Group>
        <FloatButton.BackTop visibilityHeight={100} />
        <DarkSwitchButton />
        <FloatButton
          danger
          icon={<AiOutlineDelete />}
          onClick={() => setToastOpen(true)}
        />
        <FloatButton />
      </FloatButton.Group>
    </>
  );
};

export default App;

免费评分

参与人数 11威望 +1 吾爱币 +30 热心值 +10 收起 理由
skyjianmin + 1 + 1 我很赞同!
wayket + 1 + 1 我很赞同!
jihu + 1 + 1 我很赞同!
Arkuna + 1 + 1 谢谢@Thanks!
FY1103 + 1 + 1 我很赞同!
xrds1969 + 1 + 1 我很赞同!
thesilence + 1 + 1 我很赞同!
chu558558 + 1 + 1 我很赞同!
jjds + 1 谢谢@Thanks!
爱飞的猫 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
HongHu106 + 1 + 1 热心回复!牛蛙牛蛙

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

爱飞的猫 发表于 2024-3-12 22:03

感谢分享开发的前端库,但是也请在主贴放一些代码片段,例如从你的沙盒链接里选取部分代码贴进来展示如何集成。

参考版规:

发布帖子必须带上关键代码

 楼主| thepoy 发表于 2024-3-12 22:05
爱飞的猫 发表于 2024-3-12 22:03
[md]感谢分享开发的前端库,但是也请在主贴放一些代码片段,例如从你的沙盒链接里选取部分代码贴进来展示如 ...

组件库哪儿有关键代码啊,我随便上传一段也不合适啊

点评

随便挑一段就成 你之前更新的那段也可以  详情 回复 发表于 2024-3-12 22:22
爱飞的猫 发表于 2024-3-12 22:22
thepoy 发表于 2024-3-12 22:05
组件库哪儿有关键代码啊,我随便上传一段也不合适啊

随便挑一段就成
你之前更新的那段也可以
生命的插曲 发表于 2024-3-13 06:19
请教一下,这个怎么用?
 楼主| thepoy 发表于 2024-3-13 07:00
生命的插曲 发表于 2024-3-13 06:19
请教一下,这个怎么用?

你指的是什么怎么用?
woawapj 发表于 2024-3-13 07:54
进来学习一下
TobiasCN 发表于 2024-3-13 08:06
进来就是学习,加油,加油。
ysjd22 发表于 2024-3-13 08:21
进来学习一下代码
Corgibro 发表于 2024-3-13 08:34
不得不说真厉害,虽然不是干这个的,看不懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表