如何体现自己技术很牛呢,当然是写一个软件啦。于是这样一个粘贴板应用就诞生了
使用了 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 可以滚动页面到最顶部。比如一个虚拟列表组件,具体的可以看看代码
这种架构的好处有如下几点
- 框架or端的替换、升级、迁移都非常简单
- 视图和逻辑的完全分离,可以非常方便地实现一个相同功能,但样式差异极大的页面/组件。在视觉升级时非常简单
- 开发思维的改变,从「写框架代码」到「写业务代码」的转变。拿到需求,不是思考我用 react 要声明什么 state,声明什么 hook,而是专注业务的实现,再思考如何用 react 展示我的业务
GitHub - ltaoo/timeless: The Timeless frontend code 这套架构/脚手架,整理了一下代码放这里了
这里说这么多,还是想证明我的这套方案是有其价值的
国庆前 面了支付宝,终面面试官说这个方案在美团多年前就有,而且已经被淘汰了。还说就是之前的分出专门写页面和专门写逻辑的那套思路,大家看看确实是这样吗
我21-24近三年的空余时间都是放在这套架构上了
奇奇怪怪的功能
回到粘贴板项目上,这个项目的初衷是简化日常开发的一些操作,比如一个时间戳,格式化要先复制,然后打开格式化网站,我完全可以复制后直接在粘贴板查看
类似这种文本操作类,都可以放在粘贴板里直接完成。后面发现和 utools 就有点像了。
除此之外,还实现了一个「抖音视频下载」功能,是的你没看错
如果内容是抖音的分享文案,就会多出一个下载按钮
在设置页面配置好抖音浏览器的cookie后,这里就能下载抖音视频了
其他就没什么了,很多功能也还不完善,也可能有 bug,毕竟只是一个「炫技之作」,可以给需要开发类似应用的佬们一个参考
想体验的话,仓库里只打了 macOS 的包,Windows 等我晚上打个包



