You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Deno Fresh是否支持在routes目录中直接提供HTML文件?

问题解答

核心结论

是的,Fresh框架的路由系统必须依赖JS/TS(.tsx/.jsx/.ts/.js)文件定义路由规则,直接将.html文件放在routes目录下不会被框架识别,这就是你访问出现404的原因。

更安全的替代方案

既然你不想使用存在安全风险的dangerouslySetInnerHTML,可以尝试以下两种合规且安全的方式:

1. 转换为TSX组件(推荐)

将test.html的内容直接迁移到routes目录下的.tsx文件中,完全遵循Fresh的路由规范:

// routes/test.tsx
export default function TestPage() {
  return (
    <div>
      {/* 把test.html里的所有内容直接复制到此处 */}
      <h1>Test Page</h1>
      <p>原HTML中的标签、文本都可以直接在这里编写</p>
    </div>
  );
}

完成后访问localhost:8000/test即可正常加载页面,无需担心安全问题。

2. 通过配置文件映射静态HTML路由

如果HTML内容较大,不想手动转换,可以在Fresh配置文件中添加路由映射,直接返回静态HTML文件:

// fresh.config.ts
import { defineConfig } from "$fresh/server.ts";

export default defineConfig({
  routes: [
    {
      path: "/test",
      handler: async () => {
        const htmlContent = await Deno.readTextFile("./static/test.html");
        return new Response(htmlContent, {
          headers: {
            "Content-Type": "text/html; charset=utf-8",
          },
        });
      },
    },
  ],
});

这种方式通过原生Response返回HTML,规避了React的dangerouslySetInnerHTML风险,同时让localhost:8000/test可以正常访问。

为什么routes目录不识别.html文件?

Fresh的文件系统路由仅扫描.tsx/.jsx/.ts/.js后缀的文件作为路由入口,框架会根据这些文件的路径和文件名自动生成路由规则。.html文件不在框架的路由识别范围内,因此访问对应路径会返回404。


内容的提问来源于stack exchange,提问作者Ooker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:55:56