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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。