我不知道其他人都是怎么管理自己常用网站的。
之前很多人用收藏夹,可是我一直用不惯,一来需要同步,二来点起来很不清晰,我不是很满意。后来导航网站就出现了,比如hao123之类的,可是里面广告太多了。排在前面的都是广告,很多导航网站也不提供自定义功能。
有些人用搜索引擎,就是首页设置成百度,这对我来说,还是不够快。浏览器自带的首页、标签页,简直可以用乱七八糟妖魔鬼怪来形容。
后来我有了自己的服务器,就做了一个html静态页面,把自己的常用网站都放上去,大图标,点击后直达。个人博客、代码库、日历、宝塔面板、NAS、几个常用网盘,还有几篇经常要翻的论文站点。点一下就过去了,比每次输网址、或者在收藏夹里翻找要快得多。
但是静态网站,有一个问题,更新起来比较麻烦,每次我都要进入到服务器,手动修改上面的链接和排序,很多时候事情一多,一懒,就不改了,结果一个页面,好几年也没更新,其实我自己常用的网站,早就更新好几轮了,之前经常访问的,后来就再也不打开了,但是还是占据着导航上宝贵的位置。
后来我干脆自己做了一个面向个人的极简的导航系统。这个东西就是 SimpleNav,中文名叫简航。
本文目录5
1它是什么样的
一句话:把你的常用网站,按你自己的分类放在一页上,顶部带一个能切引擎的搜索框。
技术上非常土:纯 PHP 加 SQLite。没有 MySQL,没有框架,没有 Composer,也没有 Bootstrap 和 jQuery。整个项目 PHP 三千多行,JS 七百多行,CSS 不到四百行。
我说"土"不是自谦。我是刻意这么选的。导航站这种东西,功能本来就简单,如果为了它去装一个框架、拉一堆依赖,往后每次升级都要跟着处理依赖冲突,实在不划算。现在这个状态,你把它扔到任何一个装了 PHP 的服务器上,改个目录就能跑,几年不管它也不会坏。
数据全部存在一个 SQLite 文件里。备份就是把那个文件拷走,迁移就是换个地方放着。
2为什么不用书签
有人会问,浏览器不是自带书签吗,为什么还要单独搞个网站。
书签的问题在于,它只属于那台机器、那个浏览器。我平时在台式机、笔记本、手机之间来回换,书签就算有同步功能,在新电脑上,也没办法直接使用。
导航站的好处是,它就是一个网址。任何设备打开浏览器输同一个地址,看到的都是同一套东西。手机上加到主屏,点开就是自己的常用站,跟装了个 App 差不多。
还有一点,导航站是可以分享的。我把家里的 NAS、日历、家书这些入口都放在上面,家里人用手机打开同一个地址,也能直接点进去,不用我一个个教他们记域名。
3几个我特意做的细节
做这个东西的过程中,有几个地方我花的时间比预想的多,写出来给有兴趣的人看。
图标。 加一个网站的时候,它会先去访问那个网址,把标题抓回来当名字,然后按清晰度从高到低的顺序去找图标:先看网站自己的 manifest 里有没有 512 的大图标,再看 apple-touch-icon,再看页面里声明的 icon,最后才是根目录那个 favicon.ico。找到之后统一压成 128×128 的 PNG 存在本地。
为什么要存本地?因为直接引用对方网站的图标地址,一旦对方改版或者挂了,你的导航页上就是一排破图。存本地虽然占点空间,但页面永远是完整的。
自定义过的图标不会被覆盖。 后台有个"一键全部更新",用来批量刷新所有网站的名称和图标。但有些图标我是不满意的,自己手动传了一张,这时候一键更新就会把我的图冲掉。所以我加了个标记:只要你手动设过图标,这个网站的图标就加到保护名单里,一键更新只刷名称,不碰图标。
排序是固定的,新加的一律在最后。 这个听起来理所应当,但实现上有个坑。早先我是用"交换相邻两条的排序号"来实现上移下移,结果问题来了:历史数据里存在排序号重复的记录,交换两个相同的数字等于什么都没干,排序就退化成按 id 排。表现就是"我排好的顺序,过两天自己乱了"。
后来改成稀疏排序:新增的条目,排序号直接取"同组最大值加 1000",天然排在最后;拖动调整的时候,把整组的顺序号重排成 1000、2000、3000……这样任意两条之间都留着空隙,以后再插也不会挤。
顺带把排序改成了拖拽。原来只有上移下移按钮,网站多了以后一条一条点太难受。现在按板块分标签页,每个板块单独拖,松手自动保存。
页面不会被缓存住。 我一开始被这个问题烦了很久:后台改完设置,前台刷新还是旧的。查下来是服务器上装了页面缓存,它不认 PHP 发的 no-store,只认一个特定的 cookie。最后是在 .htaccess 里从请求侧把那个 cookie 注入进去才解决的。这类问题不自己踩一遍,很难想到。
4它不适合谁
说完好的,说点不好听的。
这东西是单管理员的。也就是说,它只适合一个人用,或者一家人共用一个。它没有多用户注册、没有权限体系、没有社交功能。如果你想要的是一个可以给很多人开账号、还能互相评论的导航站,那它不合适,你该去找那些正经的导航 CMS。
它也不做内容抓取、不做推荐。上面有什么,完全是你自己加进去的。它不会猜你想看什么,也不会给你推热门链接。
还有,它是给"有点技术基础"的人用的。部署本身不难,上传、改权限、打开页面初始化,几分钟的事。但如果你完全没碰过服务器,用云笔记或者浏览器书签可能更省事。
5代码和地址
完全开源,代码不加密,也没有任何统计和后门。
开源地址:https://code.yangyq.net/laoyang/SimpleNav
我自己的线上演示版本:https://n.yangyq.net/
需要说明的是,我那个线上版本里放的是我自己的链接,你打开会看到一堆跟你没关系的东西,包括内网地址和后台入口。看看长什么样就行,别照着抄。
想自己部署的话,把代码拉到服务器上,保证 PHP 有 SQLite 扩展,目录可写,浏览器打开首页就会跳到安装向导,填个站点名和管理员账号就完事了,数据库文件会自动建好。装完之后安装程序会自己删掉,不用你手动处理。
如果你在用的过程中发现什么问题,或者有什么想加的,可以在博客下面留言,也可以通过反馈系统提交:https://feedlite.yangyq.net/index.php?sw=simplenav
另外,页面最下面也放了「开源」和「反馈」两个链接,随时可以点过去。
我做这个东西没别的目的,就是自己要用。如果刚好也能帮到你,那挺好。



评论
写下你的评论还没有评论,来说第一句吧。