[开源]为了炫技而开发的一个粘贴板应用

如何体现自己技术很牛呢,当然是写一个软件啦。于是这样一个粘贴板应用就诞生了

使用了 Wails3 开发,前端框架是 SolidJS。技术亮点让我一一说明

粘贴板能力

wails 提供的粘贴板API只能读取、写入文本。而社区现在 star 数最多的 golang-design/clipboard 也只支持文本和图片
而我的粘贴板除了文本和图片,还支持文件和富文本

webdav数据同步

我的应用是使用 sqlite 作为数据存储,当时设想如果单纯同步数据库文件,应该会有冲突问题?比如 a电脑同步到远端后,b电脑进行了操作,然后再从远端同步,这时b电脑上的数据库文件和远端应该就不同了
所以自己实现了一套同步功能,把所有记录作为文本写入 webdav 服务,而且做到了尽量少的文件操作和文件数

前端架构(这里是重点)

我本身是前端开发,九年的工作经验让我积累、总结出一套前端脚手架/框架,它是框架/端无关的,专注业务逻辑编写,它的理论依据是

一个功能,产品在说明业务逻辑时,并不关心它使用什么框架、端实现,表明业务逻辑是框架/端无关。我们可以用某个语言表达完整的业务逻辑,而不依赖任何框架 or 端的能力

export const HomeIndexView = (props: ViewComponentProps) => {
  const [state, vm] = useViewModel(HomeIndexViewModel, [props]);
  return (<div></div>)
}

页面逻辑都在 HomeIndexViewModel 中,它是纯粹的 js 代码,没有框架、端相关的 API。在小程序中,也是可以直接使用的
和大部分人想象的不同,它框架无关,但又包含了 UI 逻辑,比如通过快捷键 gg 可以滚动页面到最顶部。比如一个虚拟列表组件,具体的可以看看代码

这种架构的好处有如下几点

  1. 框架or端的替换、升级、迁移都非常简单
  2. 视图和逻辑的完全分离,可以非常方便地实现一个相同功能,但样式差异极大的页面/组件。在视觉升级时非常简单
  3. 开发思维的改变,从「写框架代码」到「写业务代码」的转变。拿到需求,不是思考我用 react 要声明什么 state,声明什么 hook,而是专注业务的实现,再思考如何用 react 展示我的业务

GitHub - ltaoo/timeless: The Timeless frontend code 这套架构/脚手架,整理了一下代码放这里了

这里说这么多,还是想证明我的这套方案是有其价值的
国庆前 面了支付宝,终面面试官说这个方案在美团多年前就有,而且已经被淘汰了。还说就是之前的分出专门写页面和专门写逻辑的那套思路,大家看看确实是这样吗 :smiling_face_with_tear: 我21-24近三年的空余时间都是放在这套架构上了

奇奇怪怪的功能

回到粘贴板项目上,这个项目的初衷是简化日常开发的一些操作,比如一个时间戳,格式化要先复制,然后打开格式化网站,我完全可以复制后直接在粘贴板查看

类似这种文本操作类,都可以放在粘贴板里直接完成。后面发现和 utools 就有点像了。

除此之外,还实现了一个「抖音视频下载」功能,是的你没看错 :rofl: 如果内容是抖音的分享文案,就会多出一个下载按钮

在设置页面配置好抖音浏览器的cookie后,这里就能下载抖音视频了

其他就没什么了,很多功能也还不完善,也可能有 bug,毕竟只是一个「炫技之作」,可以给需要开发类似应用的佬们一个参考
想体验的话,仓库里只打了 macOS 的包,Windows 等我晚上打个包

26 个赞

牛哇大佬

太强了,大佬

能代替copyq 吗 我现在windows用的就是这个

太强了佬

厉害厉害,mark一下!

太高看我了,肯定不能。。刚起步,肯定比不过 copyq 这种知名项目

而且这个项目的定位目前是「基于粘贴板的开发者工具」

这套方案实际就是 mvvm?

好强,star了

MVVM 是思路,我给出的是具体的方案。比如所有想做视图逻辑分离的人,都会困惑 UI 逻辑到底放哪里,怎么放,我给出了解决方案

哇,是我一直想找的东西,star了!

可以的佬,感觉确实一直找不到对 mvvm 完整体现的项目结构。可惜我使用的是 flutter,顶了

你说的是mvvm吗

我觉得写视图相关代码,思路是共通的

我写过一些简单的 flutter 项目和一个上架的 swiftui 项目,同样的一个业务逻辑,我的代码思路完全相同,只是用来实现的语言不同

这个是说多年前的 页面重构工程师,就是专门写样式和专门写js的,现在很少见了

佬太强了

有类似项目,不过支持大佬!

太强了大佬

是的类似项目太多了 :joy: 所以重点讲的是这个项目的技术亮点

太强了,佬