# @deepkit/angular-ssr 中文文档

规范地址：https://npmcn.com/package/%40deepkit/angular-ssr/

版本：1\.1\.0
npm 元数据更新时间：2026-10-31T21:32:25.376Z
中文译文更新时间：2026-11-01T00:45:47.082Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40deepkit/angular-ssr
原文对照：https://npmcn.com/package/%40deepkit/angular-ssr/?lang=original
项目主页：https://github.com/deepkit/deepkit-framework#readme
源码仓库：https://github.com/deepkit/deepkit-framework

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：50.6 kB，20 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@angular/ssr ^22\.2\.5，@deepkit/app ^1\.1\.0，@deepkit/http ^1\.1\.0，@deepkit/event ^1\.1\.0，@deepkit/logger ^1\.1\.0，@deepkit/framework ^1\.1\.0
- 首次发布：2025-02-15T17:39:27.790Z
- 最新版本发布：2026-10-31T21:32:25.259Z
- 已发布版本数：14（近 12 个月 1 个）

## 中文简介

Deepkit +棱角SSR

## 安装

```sh
npm install @deepkit/angular-ssr
```

也可以使用：`pnpm add @deepkit/angular-ssr`、`yarn add @deepkit/angular-ssr`、`bun add @deepkit/angular-ssr`

## README

# Deepkit + Angular SSR

## 配置Deepkit App

-   确保将主应用程序放入其中 `app.ts` 然后在你的 `angular.json`：

在 `src/server/app.ts`：

```typescript
import { App } from '@deepkit/app';
import { FrameworkModule } from '@deepkit/framework';
import { AngularModule, RequestHandler } from '@deepkit/angular-ssr';

const app = new App({
  controllers: [
    // your controllers
  ],
  providers: [
    // your providers
  ],
  imports: [
    new FrameworkModule({}),
    new AngularModule({
      moduleUrl: import.meta.url,
    })
  ]
});

const main = isMainModule(import.meta.url);

if (main) {
  void app.run(); //allows to call all CLI commands, including server:start
}

export const reqHandler = main
  //when in main, we don't want to create a new request handler
  ? () => undefined
  : app.get(RequestHandler).create();
```

```json
{
  "builder": "@angular-devkit/build-angular:application",
  "options": {
    "outputPath": "dist/app",
    "index": "src/index.html",
    "server": "src/main.server.ts",
    "outputMode": "server",
    "ssr": {
      "entry": "src/server/app.ts"
    },
    "browser": "src/main.ts"
  }
}
```

一定要有 `src/server/app.ts` 同样在您的tsconfig中。

## 配置Angular应用

在 `app/app.config.ts` (客户端):

```typescript
@Injectable()
export class APIInterceptor implements HttpInterceptor {
  constructor(@Inject('baseUrl') @Optional() private baseUrl: string) {
    // In client build, `baseUrl` is empty and should be inferred from the current location.
    // If this is not correct, you can simply define the `baseUrl` in the `providers` array of the `appConfig` object.
    this.baseUrl = baseUrl || (typeof location !== 'undefined' ? location.origin : '');
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const apiReq = req.clone({ url: `${this.baseUrl}/${req.url}` });
    return next.handle(apiReq);
  }
}

export const appConfig: ApplicationConfig = {
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: APIInterceptor,
      multi: true,
    },
    // your other providers
  ],
};
```

在 `app/app.server.config.ts` (服务器端):

```typescript
import { appConfig } from './app.config';

const serverConfig: ApplicationConfig = {
  providers: [
    provideServerRendering(),
    provideServerRouting([
      {
        path: '**',
        renderMode: RenderMode.Server,
      },
    ]),
    {
      provide: HTTP_TRANSFER_CACHE_ORIGIN_MAP,
      deps: [REQUEST_CONTEXT],
      useFactory(context: any) {
        return { [context?.baseUrl]: context?.publicBaseUrl || '' };
      },
    },
    {
      provide: 'baseUrl',
      deps: [REQUEST_CONTEXT],
      useFactory: (context: any) => {
        return context?.baseUrl || '';
      },
    }
  ],
};

export const config = mergeApplicationConfig(appConfig, serverConfig);
```

## 常见问题

### @deepkit/angular-ssr 是什么？

Deepkit \+棱角SSR

### 如何安装 @deepkit/angular-ssr？

在项目目录运行 npm install @deepkit/angular-ssr，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@angular/ssr（^22\.2\.5）、@deepkit/app（^1\.1\.0）、@deepkit/http（^1\.1\.0）、@deepkit/event（^1\.1\.0）、@deepkit/logger（^1\.1\.0）、@deepkit/framework（^1\.1\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @deepkit/angular-ssr 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @deepkit/angular-ssr 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @deepkit/angular-ssr 可以商用吗？

@deepkit/angular-ssr 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @deepkit/angular-ssr 还在维护吗？

最新版本 1\.1\.0 发布于 2026/11/01（2 天前）；至今共发布 14 个版本，其中过去 12 个月发布了 1 个；首次发布于 2025/02/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

