废话不想看版本:微信搜索小程序 GithubTree
或者扫码
一个方便在小程序里浏览、分享github项目的小程序,效果看下面的动图
- 复制github项目链接进入小程序,可直接打开项目;也可以搜索
- 支持常见文件类型渲染
- 可以分享项目
- 缓存github接口,让你第二次使用时如丝般顺滑
下面开始废话
每次有大佬在群里发了一个github项目,我想大概浏览下这个项目,都在想,要是手机上有类似Octotree这样的东西就好了;在手机网页里看项目结构、浏览代码,好蛋疼啊,想看个star数还得登录...
因此很早就萌发了在手机上做一个类似东西的想法(ps:有多久了我也不知道,反正拖到现在终于做好了🙄)
最开始想的是提供一个页面,用户把github项目地址复制进去,页面就能像Octotree一样展示树结构,并方便用户浏览。都开发到一半了,想到何不写成微信小程序呢,顺便练练手,另外,小程序的传播能力确实不错。然后就开始了踩坑之旅...
坑一:域名问题
小程序的接口域名必须备案而且必须是https,显然,github api的域名是没有备案的,所以必须走我自己的域名和服务器转发github 接口,再加上github对单IP请求次数的限制,所以我需要做各种缓存...
坑二:markdown渲染
最开始我使用的是现成的wxParse来解析md,说实话他的实现效率较低,一般的md文件解析会有明显的白屏,也不支持md内的代码高亮,并且如果有图片,会有明显的重排问题。作为有“追求”的前端工程师,简直不能忍,唉,重写吧...(选择死亡+1)
坑三:代码渲染
我找到的js的代码高亮库都是直接生成了html,所以需要将html转为小程序的视图(为了做一些优化,没有使用小程序的rich-text组件),并且如果代码过长,又会明显地白屏、卡顿,所以得做分段渲染...
坑四:其它
小程序setData接口传递数据的上限是1Mb,而某些github项目的目录结构大小是超过1Mb的,所以又得分段渲染...
我最开始是用ts写的,但遇到一个问题,只要在页面的配置json中加了useComponents字段,页面部分视图就出不来,去掉这个字段就可以,我表示很懵逼,遂放弃用ts折腾。
总体来说小程序的调式体验还行,就是有时候js报错,不抛出,或者抛出的错误让人摸不着头脑,然后就只有一点点删代码来猜测出错的位置...
最后,感谢室友大佬的设计@蔚泉
项目地址在这里:https://github.com/Youjingyu/github-tree-mp,轻拍...