Ryan Wang's Blog

Ryan Wang

  • Ryan Wang

    某平台又在对比 React 和 Vue 了,我不太理解这种对比甚至踩一捧一有什么意义。

    在 Halo 这几年的开发中,我也写了不少前端代码,但从未一股脑只用单一框架。每个框架在不同使用场景下都有各自的优势和劣势。

    • Vue:从 Halo 1.0 开始就在控制台使用,简单易上手,生态够用。但早期 VSCode 插件问题太多,严重影响开发体验。不过最近的 3.x 版本已经非常不错了。

    • React / Preact:Halo 官网的应用市场部分在用,不排斥 JSX,相比于 Vue 的 SFC,JSX 对我来说最大的优势就是一个文件可以写多个 React 组件。

    • Lit:用来为 Halo 插件编写 Web 组件。因为 Halo 的前台是纯后端渲染,针对部分需要交互的界面,Web 组件几乎是最好的选择,而 Lit 正是专门的 Web Component 框架。

    • Svelte:最近才开始接触,也用来写 Web 组件。相比 Lit,Svelte 对 CSS 和 CSS 框架支持更好,模板语法也更友好,后续写 Web 组件可能会优先选择 Svelte。

    还有构建工具:

    • Vite:从 Halo 2 开始就在用,相比于原来的 Webpack / Vue CLI 更容易配置,很多东西都已经开箱即用,不过早期的生产/开发不一致的问题也踩了不少坑,最近 Rolldown Vite 一发布 Beta 就用上了,非常不错。

    • Rsbuild:最近才用上,用于构建 Halo 插件的 UI 部分。之前插件 UI 采用 IIFE 格式加载,导致大型插件的 Bundle 体积过大,影响页面加载速度。而 Vite 不支持 IIFE 格式的代码分割,所以切换到 Rsbuild / Rspack。具体可查阅:《使用 Rspack 构建 Halo 插件的前端部分

    所以总结下来就是,不同框架有不同的优劣,针对场景选择合适的即可,不存在用了一个框架就要完全排斥另一个框架,甚至用出优越感的情况。

    开发日常

    0
    2025-11-15
  • Ryan Wang

    前端大一统时刻要来了?

    https://viteplus.dev

    开发日常

    0
    2025-10-12
  • Ryan Wang

    新的代码高亮插件,基于 https://shiki.style/

    https://www.halo.run/store/apps/app-kzloktzn
    import UnocssVitePlugin from "unocss/vite";
    import { defineConfig } from "vite";
    export default defineConfig({
      plugins: [
    // [!code hl:4]
        UnocssVitePlugin({
          configFile: "./uno.config.ts",
          mode: "shadow-dom",
        }),
      ],
    });
    import { defineConfig, presetIcons, presetWind3, presetWind4 } from "unocss";
    
    export default defineConfig({
    // [!code --]
      presets: [presetWind3(), presetIcons()],
    // [!code ++]
      presets: [presetWind4(), presetIcons()],
    });
    import { defineConfig } from "vite";
    export default defineConfig({
      build: {
    // [!code focus:6]
        lib: {
          entry: "./src/index.ts",
          name: "shiki-code",
          fileName: `shiki-code`,
          formats: ["es"],
        },
      },
    });

    开发日常

    0
    2025-09-25
  • Ryan Wang

    Halo AI 助手支持了 RAG 智能问答功能!

    • 内置向量库,无需额外部署。

    • 与 Halo 深度结合,支持为文章和 Docsme 文档创建知识库。

    • 支持权限控制,用于控制用户是否能使用智能问答。

    • 支持覆盖传统搜索弹窗、支持页面悬浮气泡,支持在文章或者页面中嵌入聊天框。

    https://www.halo.run/store/apps/app-riNgb/releases/app-release-zp2sylnn

    开发日常

    0
    2025-09-10
  • Ryan Wang

    快来试试新的评论框。

    开发日常

    1
    2025-08-14
  • Ryan Wang

    Biome.js 要开始支持 Vue 了!

    https://github.com/biomejs/biome/issues/6657

    Rust 重构世界!

    开发日常

    2
    2025-07-02
  • Ryan Wang

    给 Halo 做了一个创建插件项目的 CLI,现在创建插件更加方便了。

    https://github.com/halo-sigs/create-halo-plugin

    开发日常

    0
    2025-06-23
  • Ryan Wang

    在完全不熟悉移动端 App 和 Flutter 的情况下,通过 AI 辅助在 450 个小时编码时间内完成了 1PanelHalo App 的开发并上架,现在的 AI 辅助编程确实能够很好地提升编码效率。尤其是新入门一项技术栈的时候,可以很好地边学习边开发。当然,在开发这两个 App 的过程中也并非完全由 AI 去生成代码,毕竟 1Panel 和 Halo 这两个项目规模适中,完全依赖 AI 生成代码,估计还需要额外 450 个小时去 debug 和修复 bug。以下是我认为最有效的 AI 辅助方式:

    1. Cursor Tab:这在正常编码过程中的帮助非常大,尤其是在代码重构和自动语法修复的场景。

    2. 小范围的功能设计:告诉 AI 你需要实现什么样的功能,让 AI 给你提出解决方案。即使完全采用 AI 提供的代码,我也会尽可能阅读每一行代码,避免日后忘记代码的来源和逻辑。此外,目前不建议让 AI 直接生成较大范围的功能代码,尤其是一些关键业务逻辑。

    3. Bug 修复:直接将错误日志提供给 AI 分析异常原因,快速定位问题。

    4. Code Review:代码提交前让 AI 进行审查,主要检查是否存在逻辑错误以及有哪些可优化的地方。

    除了编码之外,针对 App 的开发场景,上架也是一个比较麻烦的事情,比如隐私/权限调查表的填写,我会向 AI 提供 App 的使用场景、用户范围、使用的三方库和统计平台等信息,让 AI 给出填写建议。

    开发日常

    1
    2025-04-22
  • Ryan Wang

    我看网上很多人认为现在前端圈流行的 SSR/同构框架(比如 Next.js、Nuxt.js)就是"现代版 PHP"。实在不敢苟同,这种观点反映出对这些框架和 PHP(或传统服务端模板)的理解不足。

    Next.js 等同构框架与传统服务端框架最本质的区别在于:它们优雅地抹平了服务端渲染与客户端交互的界限。开发者可以使用同一套 React 组件代码实现:

    1. 服务端渲染生成初始 HTML 返回给浏览器

    2. 在浏览器中通过水合(hydration)激活完整交互功能

    这一过程无需编写分离的服务端模板和客户端 JavaScript,而 PHP 则需要额外的前端代码来实现复杂交互,更不用说 Node.js 生态还有各种针对网页的客户端和服务端库。

    当然,也并不是说这种框架就是网页开发的银弹,任何技术都有各自的优势,选择自己认为合适的就好。

    开发日常

    0
    2025-04-14
  • Ryan Wang

    搞了个 https://www.lxware.cn/1panel-app,十年前最开始想学编程就是想开发 App,过了这么久才实现。

    Halo 再等等:)

    开发日常

    2
    2025-02-20