我 与 TDesignBlazor 的故事

前言

作者打拼了 .NET 十多年,属于全栈应用类型的工程师,特别是对于前端的技术情有独钟,从纯js到jquery,从bootstrap到自己写css,从web到winform,还写过一段时间的knockout.js,以至于公司里的前端的活都派给我,然后他们被裁了...

自从2018年接手了一个研发团队,当前后端打架成为常态,当前端缺席进度延迟成为阻碍,当绩效评估让我头疼,当敏捷推动一直不那么的丝滑,blazor 就成为那个我最终认为的那个解决方案,并且基于 Bootstrap 自行学习封装了一套 Blazor 组件库提供给自己团队,自此,以上的问题全部迎刃而解。

ab1b5b6d46c65e0f151e84102cb90f8c.png

过往

在这个 TDesignBlazor 之前,我写过Boostrap5的Blazor组件库,后来发现类似的组件库太多了,于是又写了一个Semantic-UI的Blazor组件库BlamanticUI,Github地址:https://github.com/AchievedOwner/BlamanticUI (已归档)。

但是在开发过程中,突然发现组件开发的共性,同时因为组件所需要的参数很多,相关的 CSS 组合也很多,非常的麻烦,毕竟重复性工作是十分枯燥的。因此,希望能有一个自动化的框架帮助我能完成80%的重复性工作,最起码简单的那些组件,比如 Button 之类的可以自动化一些。起初是在 BlamanticUI 组件库中自己实现的自动化,后来在封装 Bootstrap5 的 Blazor 组件库时又把类似的功能复制了一遍,突然就获得了一个灵感,并把它封装了一个独立的框架,即 ComponentBuilder 就此诞生。

Github:https://github.com/AchievedOwner/ComponentBuilder

ComponentBuilder 介绍:https://www.bilibili.com/video/BV1de4y1v7Fd/

该框架的初衷是让更多的 Blazor 贡献者加入开发组件库

偶遇

但是我发现很多人其实并不知道 Somantic-UI 的存在,而现在的前端很流行 Ant Design,同时也找到了相关的 Ant Design Blazor 组件库。后来经过一段时间的观察和探索,发现国内的几个大厂都在研究自己的组件库,其中阿里的Ant Design、字节跳动的 Acro Design 和腾讯的 TDesign 都已经有了成品演示,于是就想着用自己的 ComponentBuilder 来大展身手。经过自己仔细的调研发现,Ant-Design 和 Acro-Design 几乎一模一样,就是 CSS 的前缀不同而已,再加上 Ant-Design-Blazor 已经慢慢滴成熟,而却没有人做 TDesign,这就是个机会,再几番辗转深思熟虑后,于2022年9月,创建 Github 仓库,并借助 ComponentBuilder 框架的自动化优势,在月底发布了 0.1 版本,实现了大多数的静态组件的封装,就此拉开了序幕。

4cd35ba54d3cbd8b592b7103240e2014.png

热爱

我很喜欢 TDesign 的设计风格,所以在组件开发中,尽可能复制官方的命名、文档、排版等。不过后来发现,在技术上因为语言不同,所遵循的规范也不太一样。在我再三的纠结后,我决定不再盲目地跟风官方,还是需要符合《.NET 编程开发规范》,而且作为一款产品,要更加符合用户的人性,《Don't make me think》的理念要始终贯彻在任何产品中,因此在某些命名和设计上我做了些变更。

坚持

研发出身的我想进一步转型,毕竟开发出一款产品很容易,但是维持并运营下去却很难。因此下定决心,坚持做好一款产品,以前都是听PM得到用户的二手声音,我希望这次可以得到用户最真实的反馈。

挑战

我喜欢挑战,因此 TDesignBlazor 也是一个挑战,全程使用 RenderTreeBuilder 的 OOP 思想来编写组件,因此在前端的具象思维上也是一个挑战,因为它不同于 HTML 的所见即所得模式。我希望你和我一样爱上挑战!

8652ac257bbcd373abd1171ef3fcafff.png

贡献

希望广大的 Blazor 爱好者参与到贡献中。最大的优势有:

  • 使 Blazor 技术突飞猛进

  • 深入了解 PR + CI/CD 的 DevOps 流程

  • Kanban 敏捷方法的体验

  • 拥有开源项目经验

并且,TDesignBlazor已经获得了腾讯的关注46417051bdcc9be7a28030447d7b99f6.png

Github 地址:https://github.com/AchievedOwner/TDesignBlazor

未来

  • 继续基于 TDesign 的组件复刻为 Blazor 版本

  • 每2月一个大版本,每2周一个小版本

  • 以迅雷不及掩耳盗铃之势解决用户反馈

鸣谢

c8d0e7e9962632aff350890dd95d9bb4.png

期待你的名字和头像会出现在列表中126144ed9a3d737e0d6f3bf7f7af5919.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验数据

1.整段deng音频200多秒 2.加xx(1000:1480)之后 转载于:https://www.cnblogs.com/20179302yzl/p/10270632.html

25个好用的Shell脚本常用命令分享

1.列出所有目录使用量,并按大小排序。复制代码 代码如下:ls|xargs du -h|sort -rn #不递归下级目录使用du -sh2.查看文件排除以#开关和空白行,适合查看配置文件。复制代码 代码如下:egrep -v "^#|^$" filenamesed /#.*$/d; /^ *$/d3.删除空格…

mysql中查询一个字段属于哪一个数据库中的哪一个表的方式

mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个库中的哪一张表 select table_schema,table_name from information_schema.columns where col…

macos剪切_如何使用macOS的内置“ Kill and Yank”作为替代剪切和粘贴

macos剪切Everyone knows about cutting and pasting by now. But did you know that your Mac sort of has a second clipboard known as kill and yank? 现在,每个人都知道剪切和粘贴。 但是您是否知道Mac上还有第二个剪贴板,称为“ kill and yank”&…

ExtJS 折线图趟过的坑

问题: 1、根据条件检索后绘制折线图,之前的坐标没有清除如图 解决方案: 在绘制之前,清空坐票: leftLine.surface.removeAll(); leftLine.redraw(false); 完整代码如下 storeBar.load({params: { SDate: bTime, EDate: …

EventBus的实现

EventBus概要 EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。这种方式的实现不仅仅局限于前端,在iOS中的消息消息中心也是如此实现。 设计模式:订阅者发布者模式,这种设计模式在前端很常见。A…

Django05-1: 有名分组、无名分组与反向解析

有名、无名分组 分组正则表达式,加小括号 url(r^test/(\d), views.test),def test(request,xx):print(xx)return HttpResponse("OK") 无名分组 将括号正则表达式匹配的内容,当作位置参数传递到后面的视图函数 有名分组 正则表达式起一个别…

Django的第一步(第一节)

写下你的第一个Django应用第一部分让我们通过例子来学习.在本教程中,我们将引导您完成基本投票应用程序的创建.其中包括两部分:一个让人们查看民意调查并投票的公共网站.允许您添加,更改和删除民意调查的管理网站.我们假设你django已经安装好了,你可以通…

ad中电源插座怎么封装_您可以在房屋中安装的各种电源插座

ad中电源插座怎么封装You may already know about smart outlets, or outlets with integrated USB ports. But you might be surprised at how many “normal” outlets you can actually buy for your house. They’re all built for different situations, and you want to …

Arithmetic Slices

这两天一直复习动态规划,就想到leetcode上刷刷题,easy难度的很少,大部分都是medium和hard。本题是第一道DP类型medium难度的题目,但是用其他的方法比如暴力法也可以求解。首先来看题目描述: A sequence of number is c…

在Data Lake Analytics中使用视图

在Data Lake Analytics中使用视图 1. 概述 在Data Lake Analytics(以下简称DLA)中使用视图(VIEW)功能,可以大大简化对于重复SQL,特别是较为复杂的SQL语句的编写和维护。目前DLA中还不支持SQL视图的物化。在…

C# 实例详解委托之Func、Action、delegate(精品)

概述委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,本节主要就这三种委托的用法通过实例展开讲解。Func用法解析【Func】:Func是带返回值的委托:原型函数如下(以…

Django05-2:路由分发/命名空间/伪静态/虚拟环境/django版本区别

路由分发 补充:每一个应用可以有独立的templates模板文件夹,static静态文件加,urls.py 总路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

Word中查找替换软回车键和回车键

在Word中使用搜索功能搜索“^p”组合字符串可以查找文档中的所有换行符(回车键),使用“^l”(英文输入状态下shift6与小写字符L的组合)可以搜索所有的软回车符。使用替换功能就可以搜索替换二者。转载于:https://www.cn…

minecraft服务器_如何使用Minecraft领域设置简单的无压力Minecraft服务器

minecraft服务器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自动化测试基础篇--Selenium浏览器操作

Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退、前进按钮等。一、控制浏览器窗口大小有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏…

Sublime text3配置xdebug调试记录

第一次配置遇到的问题记录; 问题:配置php.ini的时候xdebug.remote_port 9001刚开始我一直配置9000端口冲突,然后一切弄好了访问浏览器就一直在转圈无法访问; 现在开始配置: 1.打开sublime 输入install Package如下显示在按回车&a…

.NET Conf China 2022 今天(12.4) 日程一览

点击蓝字关注我们.NET Conf China 2022 诚邀您的加入立即扫码预约加入.NET年度盛宴!!CSDN 直播https://bbs.csdn.net/forums/DotNET?typeId20680 思否直播https://segmentfault.com/area/dotnetconf-2022主论坛分论坛前端专场-A会场出品人:张…

移动web开发适配rem

移动的meta标签 <meta name"viewport" content"widthdevice-width, initial-scale1,user-scalableno"> 常见移动web适配方法&#xff1a; 1.定高&#xff0c;百分比布局 2.flex布局 3.media媒体查询 rem&#xff08;font size of the root element…

Django06:视图层/上传文件/request 方法补充/FBV与CBV

三板斧 HttpResponse, 返回字符串类型render, 返回html页面&#xff0c;而且在返回给浏览器之前&#xff0c;可以给html文件传值redirect 重定向 总结&#xff1a;视图函数必须返回一个HttpResponse对象&#xff0c; 查看源代码能发现。 JsonResponse对象 json用途&#x…