logo
  • 指南
  • 配置
  • 插件
  • API
  • 示例
  • 社区
  • Modern.js 2.x 文档
  • 简体中文
    • 简体中文
    • English
    • 命令
      文件约定
      src/
      App.[tj]sx
      entry.[tj]s
      entry.server.[tj]sx
      modern.runtime.[tj]s
      routes/
      *.[server|node].[tj]sx
      api/
      lambda/*.[tj]s
      server/
      modern.server.[tj]s
      shared/
      config/
      html/
      favicon.*
      icon.*
      mock/
      public/
      upload/
      modern.config.[tj]s
      运行时
      Core
      createRoot
      render
      Router
      router
      SSR
      NoSSR
      renderStreaming
      renderString
      createRequestHandler
      BFF
      useHonoContext
      Utility
      CSS-In-JS API
      Head
      loadable
      📝 编辑此页面
      上一页App.[tj]sx下一页entry.server.[tj]sx

      #entry.[tj]sx

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

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

      在 src/entry.[tj]s 中这样实现:

      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 />);
      });

      #完全接管 webpack 入口

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

      src/entry.jsx
      import React from 'react';
      import ReactDOM from 'react-dom/client';
      import App from './App';
      
      ReactDOM.createRoot(document.getElementById('root')!).render(<App />);