一个使用 next.js 写的网址缩短系统
网址缩短,以前我用 php 做过,这次用 next.js 重写一下。
核心原理依然是 key、value。说说那个 key,其实就是用 10 转 62 实现的,10 转 62 的代码来源于网络,不是我写的。
function string10to62(number) {
var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'.split(''),
radix = chars.length,
qutient = +number,
arr = [];
do {
let mod = qutient % radix;
qutient = (qutient - mod) / radix;
arr.unshift(chars[mod]);
} while (qutient);
return arr.join('');
}
key/value 数据库我用的是 nedb。next.js 的动态路由,文件名为 [slug].js,在 pages 文件架下。
下面代码能自动获得参数:
import { useRouter } from 'next/router';
const router = useRouter();
const { slug } = router.query;
这样就能拿到 slug,去 kv 里就能找到原始的 url,跳转即可。
演示地址:nextshort.vercel.app/
github 地址 github.com/codetyphon/nextshort
另外,now 的 next.js 部署服务,似乎无法持久化保存数据?所以演示的网址,并不能真正实现相应的功能。但如果你部署在自己的服务器上,是没问题的。
推荐文章: