# 资源 > ## 公共资源 Nitro 通过 `public/` 目录管理资源。 Nitro v3 Alpha 文档仍在开发中 —— 可能存在更新、不完善之处以及偶尔的错误。 `public/` 目录下的所有资源都会被自动提供服务。这意味着你可以直接通过浏览器访问它们,无需任何特殊配置。 ```md public/ image.png <-- /image.png video.mp4 <-- /video.mp4 robots.txt <-- /robots.txt ``` ### 生产环境公共资源 构建 Nitro 应用时,`public/` 目录会被复制到 `.output/public/`,同时会创建包含元数据的清单并嵌入到服务器包中。 ```json { "/image.png": { "type": "image/png", "etag": "\"4a0c-6utWq0Kbk5OqDmksYCa9XV8irnM\"", "mtime": "2023-03-04T21:39:45.086Z", "size": 18956 }, "/robots.txt": { "type": "text/plain; charset=utf-8", "etag": "\"8-hMqyDrA8fJ0R904zgEPs3L55Jls\"", "mtime": "2023-03-04T21:39:45.086Z", "size": 8 }, "/video.mp4": { "type": "video/mp4", "etag": "\"9b943-4UwfQXKUjPCesGPr6J5j7GzNYGU\"", "mtime": "2023-03-04T21:39:45.085Z", "size": 637251 } } ``` 这使得 Nitro 无需扫描目录也能识别公共资源,从而通过缓存头实现高性能。 ## 服务器资源 `assets/` 目录下的所有资源都会被添加到服务器包中。构建完成后,你可以在 `.output/server/chunks/raw/` 目录找到它们。请注意资源的大小,因为它们会与服务器包一同打包。 除非使用 `useStorage()`,否则资源不会包含在服务器包中。 这些资源可以通过使用 [存储层](/docs/storage) 的 `assets:server` 挂载点访问。 例如,你可以将一个 json 文件存放在 `assets/data.json`,并在你的处理器中这样获取它: ```js import { defineHandler } from "nitro/h3"; export default defineHandler(async () => { const data = await useStorage("assets:server").get("data.json"); return data; }); ``` ### 自定义服务器资源 若要添加来自自定义目录的资源,你需要在 Nitro 配置中定义路径。这允许你添加位于 `assets/` 目录之外的目录中的资源。 ```js [nitro.config.ts] import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({ serverAssets: [{ baseName: 'my_directory', dir: './my_directory' }] }) ``` 举例来说,你可能想添加一个包含 HTML 模板的目录。 ```js [nitro.config.ts] import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({ serverAssets: [{ baseName: 'templates', dir: './templates' }] }) ``` 然后你可以使用 `assets:templates` 基础路径来访问你的资源。 ```ts [handlers/success.ts] import { defineHandler } from "nitro/h3"; export default defineHandler(async (event) => { const html = await useStorage("assets:templates").get("success.html"); return html; }); ```