router.js 773 B

123456789101112131415161718192021222324252627282930313233343536
  1. /**
  2. * React Static Boilerplate
  3. * Copyright (c) Konstantin Tarkus | MIT License
  4. */
  5. import React from 'react';
  6. import routes from './routes.js';
  7. async function render(path, container) {
  8. let component;
  9. try {
  10. const handler = routes[path];
  11. if (handler) {
  12. component = React.createElement(await handler());
  13. } else {
  14. component = React.createElement(routes['/404']());
  15. }
  16. if (container) {
  17. React.render(component, container);
  18. } else {
  19. return React.renderToString(component);
  20. }
  21. } catch (err) {
  22. component = React.createElement(routes['/500']());
  23. if (container) {
  24. React.render(component, container);
  25. } else {
  26. return React.renderToString(component);
  27. }
  28. }
  29. }
  30. export default { routes, render };