FullStack – Dart Frog + React

Requisitos:

Dart frog
Node

En el post anterior dart-frog vimos como hacer un pequeño API con Dart Frog, pero seamos sinceros eso es mas bien algo que usaríamos para microservicios o solo backend. Así que agreguemos sabor potenciando este framework …


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Ushieru Kokoran

Requisitos:

  • Dart frog
  • Node

En el post anterior dart-frog vimos como hacer un pequeño API con Dart Frog, pero seamos sinceros eso es mas bien algo que usaríamos para microservicios o solo backend. Así que agreguemos sabor potenciando este framework con Vite.

En la misma carpeta de nuestro proyecto de Dart Frog creemos un proyecto de Vite.

# npm
$ npm create vite@latest

# vite
$ yarn create vite

El Framework que uses para trabajar con Vite es el de tu preferencia yo usare react por que es el que mas me gusta.

Seguiremos la documentación de Vite para backend integration te invito a que le des una leída para entender a fondo que estamos haciendo aquí. Esto es solo una guía rápida.

Development

Dart Frog tiene soporte para archivos estáticos creando una carpeta /public en la raíz del proyecto. A esta le vamos a agregar un index.html con la siguiente estructura:

<!-- public/index.html -->

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="module">
        import RefreshRuntime from 'http://localhost:5173/@react-refresh'
        RefreshRuntime.injectIntoGlobalHook(window)
        window.$RefreshReg$ = () => { }
        window.$RefreshSig$ = () => (type) => type
        window.__vite_plugin_react_preamble_installed__ = true
    </script>
    <script type="module" src="http://localhost:5173/@vite/client"></script>
</head>

<body>
    <div id="root"></div>
    <script type="module" src="http://localhost:5173/src/main.jsx"></script>
</body>

</html>

Listo nuestro archivo tendremos que hacer que nuestro index.dart sirva este archivo estático.

// routes/index.dart

import 'dart:io';

import 'package:dart_frog/dart_frog.dart';
import 'package:path/path.dart' as path;

Response onRequest(RequestContext context) {
  final file = File(path.join(Directory.current.path, 'public', 'index.html'));
  if (!file.existsSync()) {
    return Response(body: 'Index Not found');
  }
  final indexHtml = file.readAsStringSync();
  return Response(body: indexHtml, headers: {'Content-Type': 'text/html'});
}

Corremos ambos proyectos.

run terminal

Entramos a http://localhost:8080/ (Que es donde se esta ejecutando Dart frog) y...

dart frog + react crash

Estuvimos muy cercas... pero que paso? revisemos los recursos que se estan descargando por red.

Net status

Claro esta intentando buscar un recurso que no tenemos en data_frog/public están en frontend/public. entonces lo unico que hay que hacer es mover esos recursos de frontend/public -> data_frog/public.

En App.jsx tenemos un import de esta manera import reactLogo from './assets/react.svg' por lo que hay que eliminar esa linea y mover ese SVG de react a la carpeta public de dart_frog frontend/src/assets -> data_frog/public.

Y ya lo tendriamos.

dart frog + react

Production

Para tener nuestra aplicación lista para producción hay que seguir unos pasos muy sencillos.

  • Crear un build de producción de Vite.
  • Pasar todo lo que esta en frontend/dist -> dart_frog/public
  • Generamos un build de nuestra app

En la terminal seria algo así:

$ cd frontend
$ yarn build
$ mv -v ./dist/* ../public/
$ cd ..
$ dart_frog build

Dart frog aun no tiene una forma de ignorar carpetas para la build final por lo que tendrás que eliminar la carpeta frontend del build final.

delete dir

No queda mas que ejecutar para ver el resultado final.

$ dart .\build\bin\server.dart

Final

Ya puedes hacer las ediciones que quieras y mandar a llamar los endpoints de dart frog desde vite con fetch y mejorar así tus desarrollos con Dart Frog.

viteReactDartFrog

Te dejo el link al repositorio Dart Frog FullStack.

Que te pareció este experimento?
Cuéntame en los comentarios y Happy Hacking 🧑‍💻🎉


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Ushieru Kokoran


Print Share Comment Cite Upload Translate Updates
APA

Ushieru Kokoran | Sciencx (2022-09-10T20:11:49+00:00) FullStack – Dart Frog + React. Retrieved from https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/

MLA
" » FullStack – Dart Frog + React." Ushieru Kokoran | Sciencx - Saturday September 10, 2022, https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/
HARVARD
Ushieru Kokoran | Sciencx Saturday September 10, 2022 » FullStack – Dart Frog + React., viewed ,<https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/>
VANCOUVER
Ushieru Kokoran | Sciencx - » FullStack – Dart Frog + React. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/
CHICAGO
" » FullStack – Dart Frog + React." Ushieru Kokoran | Sciencx - Accessed . https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/
IEEE
" » FullStack – Dart Frog + React." Ushieru Kokoran | Sciencx [Online]. Available: https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/. [Accessed: ]
rf:citation
» FullStack – Dart Frog + React | Ushieru Kokoran | Sciencx | https://www.scien.cx/2022/09/10/fullstack-dart-frog-react/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.