Пример для React
Так как библиотека роутинга — сложный интеграционный пакет, требующий сервера для SSR и работы с History API, Live Preview недоступно. Однако вы можете загрузить готовые примеры.
Предпросмотр
src
components
pages
client.tsx
declarations.d.ts
router.ts
server.tsx
style.module.css
template.html
build.ts
package.json
plugins.ts
tsconfig.json
tsx
import { createRoot, hydrateRoot } from 'react-dom/client';
import { App } from './components/App';
import { getRouter, RouterContext } from './router';
const router = getRouter();
await router.init(location.href, { skipLifecycle: Boolean(SSR_ENABLED) });
if (SSR_ENABLED) {
hydrateRoot(
document.getElementById('example-app')!,
<RouterContext.Provider value={{ router }}>
<App />
</RouterContext.Provider>
);
console.log('SSR: App has been hydrated, no lifecycle called');
} else {
createRoot(document.getElementById('example-app')!).render(
<RouterContext.Provider value={{ router }}>
<App />
</RouterContext.Provider>
);
console.log('CSR: App has been rendered and lifecycle called');
}
Скачивание
shell
npx degit dkazakov8/reactive-route/examples/react react-example
cd react-example
npm installЗатем выберите режим и систему реактивности для запуска:
npm run mobx— CSR (только клиентский рендеринг) для MobXnpm run observable— CSR (только клиентский рендеринг) для Observablenpm run ssr-mobx— SSR для MobXnpm run ssr-observable— SSR для Observable
Обратите внимание, что в этом примере оборачивание компонентов в observer выполняется сборщиком ESBuild. В собственных проектах не забудьте следовать соответствующему руководству по интеграции.