> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# entry.tsx

通常情况下[`routes/`](/zh/apis/app/hooks/src/routes.md) 和 [`App.tsx`](/zh/apis/app/hooks/src/app.md) 钩子文件已经能满足我们的需求，当我们需要在组件渲染之前添加自定义行为或者完全接管 Rspack 打包入口时，可以在 `src` 或者入口目录下放置 `entry.ts`。下面分两种情况进行讨论。

## 在组件渲染前添加自定义行为

在 `src/entry.ts` 中这样实现：

```js title=src/entry.tsx
import { createRoot } from '@modern-js/runtime/react';
import { render } from '@modern-js/runtime/browser';

const ModernRoot = createRoot();

async function beforeRender() {
  // todo
}

beforeRender().then(() => {
  render(<ModernRoot />);
});
```

## 完全接管 Rspack 入口

当项目未安装 `@modern-js/runtime` 依赖时， `src/entry.tsx?` 即为真正的 Rspack 打包入口文件, 可以直接像使用 create-react-app 等脚手架一样组织代码：

```js title=src/entry.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')!).render(<App />);
```
