V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tanrunhao
V2EX  ›  程序员

切换 Deno 技术栈的一点心得

  •  
  •   tanrunhao ·
    tans · 2023-09-09 19:45:12 +08:00 · 2091 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文 po https://cn.denopark.com/blog/stack

    denopark tech stack

    总结一下 deno 好处:

    1. 无需购买服务器
    2. 无需安装依赖,使用简单
    3. 自带 kv 数据库

    以下是复制原文。

    切换 Deno 技术栈的一点心得

    从零开始的挑战

    本网站使用 deno 编写,运行在 deno deploy 上,并使用 fresh 框架,并且使用 supabase 作为数据库以及它的 realtime 实现多人在线, 游戏使用一个叫 kaboom.js 的轻量有趣的游戏引擎。 而这些技术在编写此网站前从未使用过。

    产品时候使用都是新的技术框架,是十分冒险的。但是现在回头看是十分正确的。

    网站上线到现在,有超过 1 万的注册用户。并且期间受到恶意注册攻击,注册超过 10 万的垃圾账号。但是网站都一直保持正常运行。 现在回头看,这些技术的选择让我的工作变得轻松和愉悦。

    为什么使用新技术

    因为新的技术是最简单的,第一版本发布用户测试时候,我只有 kv 没有数据库。开发期间只需要跑一行命令行 deno task start . 没有 npm install ,没有 pm2 logs. 更不用安装数据库,搭建测试和正式环境。

    没有任何 ci ,action 。提交代码马上上线,fresh 的服务器渲染解决了 seo 问题。deno deploy 让我没有服务器运维的烦恼。这些对于一个开发者来说都是无比幸福的事情。

    随着 supabase 的引入,项目变得有一些复杂。但是 supabase 的数据库+实时功能实现太诱惑了。

    正是因为这些新技术带来极大的便利, 我们同时需要克服新技术带来的摩擦。我要分享使用新技术的秘诀,就是放弃完美主义。

    用最简单的方式使用新技术

    如果你的目标是让产品上线, 遇到问题马上用愚蠢的方案解决。比如网站的多语言如何实现,成熟的框架可能会有标准答案。我找不到,找到可能也不会用。所以最本的办法是把多语言写在 html 里面,通过语言变量去选择。

    <a>{["Edit", "编辑", "編集"][langIndex]}</a>
    

    像以上代码充斥着所有 html 代码中,但是我可以说效果很好。我方便修改,AI 也可以协助我修改。更重要的是我不用等 Fresh 的多语言支持,因为这是我自己的方式实现的。

    最后

    我不是想推广 deno 这项技术, 虽然我的域名包含 deno 。但和官方没有关系,存粹是我注册不了 dinopark 的域名而已。

    或者有更好的技术方案, 比如 bun ,hono 。 但是 deno 和 fresh 是值得尝试的, 特别是你还在使用 express 写网站。

    4 条回复    2024-02-05 14:57:25 +08:00
    chuck1in
        1
    chuck1in  
       2023-09-09 19:50:49 +08:00
    不用 express 的话用什么呢。 如果只是个小网站,不需要 nestjs 那种比较大型的架构。
    tanrunhao
        2
    tanrunhao  
    OP
       2023-09-09 19:56:14 +08:00
    @chuck1in fresh , 有点像 next.js , 如果是不想捆绑 deno , 可以看以下 hono.dev
    tanrunhao
        3
    tanrunhao  
    OP
       2023-09-09 19:57:57 +08:00
    @chuck1in 选择可以 edge deploy 的框架, 这样子做小项目的时候, 都不用服务器费用。 现在 vercel ,deno deploy 这些 edge deploy platform 都有很高的免费额度。
    iugo
        4
    iugo  
       286 天前
    我们使用 deno 有一段时间了. 我们最在乎的是:

    1. Web API 兼容. (前后端一致)
    2. 原生 TypeScript 支持. (前后端类型一致)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   898 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.