一个使用 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部署服务,似乎无法持久化保存数据?所以演示的网址,并不能真正实现相应的功能。但如果你部署在自己的服务器上,是没问题的。
推荐文章: