如何在多页网站(非 SPA)中使用 react.js?
How to use react.js with a multi page website (Non SPA)?
我有一个 laravel 应用程序。
对于具有此类路由的页面:/admin/entity/
我想使用带有反应路由器的反应组件来处理 /admin/entity/:id
路由。
如果我使用 browserify 将所有组件捆绑在一个文件中,我无法访问任何组件以从外部呈现它,因为 browserify 将其包装到关闭状态。因此,我有几个问题:
我应该为每个页面创建单独的 bundle.js 文件并在该文件中显式呈现组件吗? 或者我应该将每个组件从 jsx 预编译为 js 并从 [=13= 内联呈现它] 文件? 将 React 库包含到 bundle.js 是否有意义,或者我可以从视图中显式加载它?
这是我的意见:
- 您应该将 React 和所有页面中的所有代码捆绑在一起,这些页面将包含由 React 组件呈现的任何部分(根据我的收集,
/admin/entity
)。
- 你的 React 组件应该总是渲染到一个特定的元素(例如,一个空的
<div>
)并且应该有类似 React Router 的配置,这样它会忽略 /admin/entity
但渲染/admin/entity/:id
。您的挑战是,任何指向不同 :id
URL 的链接都应该最好位于 React 组件内部,使用 Link
组件。这将自动连接您的路由器。
您的路线可能如下所示:
<Route path="admin/entity/:id" handler={Entity} />
我相信,当你 run
路由器时,如果浏览器的 URL 不是预期的格式,React 实际上不会呈现任何东西。
我有一个 laravel 应用程序。
对于具有此类路由的页面:/admin/entity/
我想使用带有反应路由器的反应组件来处理 /admin/entity/:id
路由。
如果我使用 browserify 将所有组件捆绑在一个文件中,我无法访问任何组件以从外部呈现它,因为 browserify 将其包装到关闭状态。因此,我有几个问题:
这是我的意见:
- 您应该将 React 和所有页面中的所有代码捆绑在一起,这些页面将包含由 React 组件呈现的任何部分(根据我的收集,
/admin/entity
)。 - 你的 React 组件应该总是渲染到一个特定的元素(例如,一个空的
<div>
)并且应该有类似 React Router 的配置,这样它会忽略/admin/entity
但渲染/admin/entity/:id
。您的挑战是,任何指向不同:id
URL 的链接都应该最好位于 React 组件内部,使用Link
组件。这将自动连接您的路由器。
您的路线可能如下所示:
<Route path="admin/entity/:id" handler={Entity} />
我相信,当你 run
路由器时,如果浏览器的 URL 不是预期的格式,React 实际上不会呈现任何东西。