Establecer un entorno React, Parte 4

React ha sido conocido en el pasado por ser difícil de comenzar a crear aplicaciones, ya que realmente tenía que entender cómo configurar las herramientas de construcción manualmente. Esto es incluso antes de escribir una sola línea de código React.

La herramienta crear-reaccionar-aplicación ayuda enormemente con este problema, ya que le permite a cualquier persona crear una aplicación React en pleno funcionamiento sin necesidad de saber cómo configurar las herramientas de construcción. La realidad es que la aplicación crear-reaccionar estará bien para la mayoría de las aplicaciones, especialmente si eres nuevo en Reaccionar.

A medida que adquiera más experiencia con React, es posible que tenga ciertos requisitos para sus aplicaciones que necesitan una configuración personalizada de los archivos de configuración. En este caso, deberías poder configurar las herramientas de compilación React manualmente, ya que la aplicación create-react-app las oculta de forma predeterminada.

En este tutorial, te mostraré cómo configurar una aplicación React configurando manualmente las herramientas de compilación a medida que avanzamos. Esperamos que esto le dé la confianza para seguir adelante y experimentar con configuraciones más complejas..

Aunque puede parecer un poco desalentador al principio, disfrutará de todos los beneficios de tener un control total sobre cada configuración de configuración. Y puede decidir exactamente qué herramientas se incluyen en su aplicación, que pueden variar de un proyecto a otro. Este enfoque también le permite incorporar fácilmente nuevas herramientas de construcción a medida que se presentan (lo que hacen con frecuencia).

¿Estás listo para crear tu primera aplicación React completamente desde cero? Vamos a hacerlo.

Crear la estructura de archivos de la aplicación

Para demostrar cómo configurar una aplicación React a través de la configuración manual de las herramientas de construcción, estaremos construyendo la misma, muy simple, aplicación React de tutoriales anteriores en esta serie.

Comience por crear una carpeta llamada my-first-components-build, y luego abre una ventana de línea de comando que apunta a esta carpeta.

Tipo npm init para crear un paquete.json expediente. Este archivo contendrá toda la información sobre las herramientas utilizadas para crear su aplicación, además de la configuración asociada. Acepta todos los ajustes predeterminados y sigue pulsando. Entrar (alrededor de diez veces) hasta completar.

Si aceptaste todos los valores por defecto, paquete.json se verá así:

"name": "my-first-components-build", "version": "1.0.0", "description": "," main ":" index.js "," scripts ": " test " : "echo \" Error: no se especificó la prueba \ "&& exit 1", "autor": "", "license": "ISC"

Ahora necesitamos agregar los scripts React y ReactDOM a nuestro proyecto. Lo haremos a través de npm, el administrador de paquetes para Node.js.

Dentro del mismo directorio de línea de comandos, ingrese:

npm install --save reaccionar reaccionar-dom

Esto instala tanto React como ReactDom, más cualquier dependencia requerida por esos dos módulos. Notarás que ahora tenemos un nuevo nodo_módulos directorio que es donde los módulos se han añadido a.

Si echas un vistazo a la paquete.json archivo, un nuevo dependencias Se ha agregado una propiedad que contiene información sobre los módulos de nodos que instalamos..

"dependencias": "reaccionar": "^ 15.6.1", "reaccion-dom": "^ 15.6.1"

Esto sucedió porque especificamos la --salvar opción en nuestro npm instalar mando. Esto notificó a npm que queríamos hacer un seguimiento de nuestras dependencias de proyectos instalados. Esto es importante si queremos compartir nuestro proyecto..

Típicamente, porque la nodo_módulos La carpeta es tan grande que no desea intentar compartirla directamente. En su lugar, compartes tu proyecto sin el nodo_módulos carpeta. Entonces, cuando alguien descarga tu proyecto, todo lo que tienen que hacer es escribir npm instalar para duplicar la configuración directamente desde paquete.json.

Nota: En npm 5.x, los módulos instalados se guardan automáticamente en paquete.json. Ya no tiene que especificar manualmente la --salvar opción.

Dentro de my-first-components-build carpeta, crea un nuevo src carpeta, y añadir una index.js archivarlo Volveremos sobre esto más adelante cuando comencemos a crear nuestra aplicación React, una vez que hayamos configurado los archivos de configuración del proyecto..

Agregue un archivo index.html dentro de la misma carpeta con el siguiente código:

    Creación manual de una aplicación React, utilizando herramientas de construcción   

Queremos poder compilar nuestra aplicación en un solo archivo JavaScript, y también hacer uso de las clases y módulos JSX y ES6. Para hacer esto, necesitamos instalar los módulos Webpack y Babel a través de npm.

Instalemos a Babel primero. Escriba lo siguiente en la ventana de línea de comandos:

npm install --save-dev babel-core babel-loader babel-preset-env babel-preset-reaccion

Esto instala todos los módulos necesarios para que Babel compile los códigos ES6 y JSX a JavaScript estándar..

Ahora, instalemos Webpack, de nuevo a través de la línea de comando:

npm install --save-dev html-webpack-plugin webpack webpack-dev-server

Esto instala todos los módulos necesarios para Webpack, un servidor web local, y nos permite dirigir Webpack para crear una dinámica index.html archivo en el público carpeta basada en la que agregamos a la src carpeta. También podemos agregar una referencia dinámica al archivo JavaScript incluido dentro del archivo HTML cada vez que se construye la aplicación..

Después de que estos nuevos módulos hayan sido instalados, su paquete.json archivo ahora se verá así:

"dependencies": "react": "^ 15.6.1", "react-dom": "^ 15.6.1", "devDependencies": "babel-core": "^ 6.25.0", "babel -loader ":" ^ 7.1.0 "," babel-preset-env ":" ^ 1.5.2 "," babel-preset-react ":" ^ 6.24.1 "," html-webpack-plugin ":" ^ 2.28.0 "," webpack ":" ^ 3.0.0 "," webpack-dev-server ":" ^ 2.5.0 "

Esta vez, sin embargo, las dependencias de Webpack y Babel se guardan en paquete.json como dev dependencias.

Esto significa que estos módulos particulares son necesarios durante la fase de desarrollo (es decir, compilación) de la aplicación. Por otro lado, las dependencias (como React y ReactDOM) se requieren durante el tiempo de ejecución, por lo que se incluirán directamente junto con nuestro código de aplicación personalizado.

Configuración de Webpack

Para que Webpack genere nuestra aplicación y la incluya en un solo archivo, debemos configurar los ajustes. Dentro de la carpeta de la aplicación raíz, cree webpack.config.js, que se utiliza para almacenar configuraciones de compilación específicas de Webpack.

Necesitamos webpack para hacer tres cosas:

  • Compilar código ES6 / JSX a JavaScript (a través de Babel).
  • Construya nuestra aplicación y agrúpela en un solo archivo JavaScript.
  • Cree un archivo index.html, y dentro agregue una referencia a nuestro archivo de JavaScript empaquetado.

Dentro webpack.config.js, añadir:

var ruta = requiere ('ruta'); var HtmlWebpackPlugin = require ('html-webpack-plugin'); module.exports = entry: './src/index.js', output: path: path.resolve (__ dirname, 'public'), nombre de archivo: 'build.js', module: rules: [test : /\.(js)$/, use: 'babel-loader'], plugins: [new HtmlWebpackPlugin (template: 'src / index.html')]

No te preocupes demasiado por la sintaxis utilizada aquí; acaba de entender la visión general de lo que está pasando.

Todo lo que estamos haciendo es exportar un objeto JavaScript con ciertas propiedades que controlan cómo Webpack construye nuestra aplicación. los entrada La propiedad especifica el punto de inicio de nuestra aplicación React, que es index.js. A continuación, el salida La propiedad define la ruta de salida y el nombre de archivo del archivo JavaScript empaquetado..

En cuanto al proceso de compilación en sí, queremos que Webpack pase todos los archivos JavaScript a través del compilador de Babel para transformar JSX / ES6 a JavaScript estándar. Hacemos esto a través de la módulo propiedad. Simplemente especifica una expresión regular que ejecuta las transformaciones de Babel. solamente para archivos JavaScript.

Para completar la configuración de Babel, necesitamos agregar una entrada a la paquete.json Archivo para especificar qué transformaciones de Babel queremos realizar en nuestros archivos JavaScript. Abrir paquete.json y agrega un Babel propiedad:

"babel": "presets": ["env", "reaccionar"],

Esto ejecutará dos transformaciones en cada archivo JavaScript en nuestro proyecto. los env la transformación convertirá ES6 JavaScript en JavaScript estándar que es compatible con todos los navegadores. Y el reaccionar la transformación compilará el código JSX hasta createElement () Llamadas de función, que es perfectamente válido JavaScript..

Ahora, de vuelta a nuestro webpack.config.js expediente.

La última propiedad que tenemos es plugins, que contiene cualquier operación especial que queremos realizar durante el proceso de construcción. En nuestro caso, necesitamos Webpack para crear un index.html archivo que incluye una referencia al archivo JavaScript empaquetado. También indicamos una existente index.html El archivo (el que creamos anteriormente) se usará como plantilla para crear el paquete final. index.html expediente.

Construir y probar

Ahora agreguemos un guión propiedad a paquete.json. Por cierto, puedes agregar tantos scripts como quieras para realizar varias tareas. Por ahora, solo queremos poder ejecutar Webpack, así que en paquete.json eliminar el "prueba" Guión y reemplazarlo con:

"scripts": "build": "webpack",,

Antes de probar el proceso de compilación, agreguemos un componente React a index.js así que tenemos algo que hacer.

importar React, Componente desde 'reaccionar'; importar ReactDOM desde 'react-dom'; la aplicación de clase extiende el Componente render () return ( 

Hola Mundo!

) ReactDOM.render ( , document.querySelector ('#app'));

Esto debería parecerte muy familiar si has seguido los tutoriales anteriores de esta serie.. 

Desde la línea de comando, ejecute:

npm ejecutar construir

Después de un rato, deberías ver un nuevo público carpeta creada dentro my-first-components-build, que contiene index.html y index.js. Abrir index.html Para ver el resultado de nuestra aplicación React de prueba..

Observe que el archivo JavaScript incluido se ha agregado para nosotros, y el componente de prueba se representa en el elemento DOM correcto.

Automatizar el proceso de compilación

Una vez que comience a realizar varios cambios en su aplicación, pronto descubrirá que es bastante tedioso tener que editar manualmente un archivo, guardarlo, ejecutar el comando de compilación y luego volver a cargar la ventana del navegador para ver los cambios..

Afortunadamente, podemos usar el mini servidor Webpack que instalamos anteriormente para automatizar este proceso. Agrega un segundo script a paquete.json por lo que la propiedad 'scripts' se ve así:

"scripts": "build": "webpack", "dev": "webpack-dev-server --open",

Ahora ejecuta:

npm run dev

Después de unos segundos, verá una nueva pestaña del navegador abierta con su aplicación web ejecutándose. La URL ahora apunta a un servidor local en lugar de apuntar a un archivo local específico. Hacer un cambio menor a index.js en el src carpeta y guardar. Observe que su aplicación se actualiza automáticamente en el navegador casi instantáneamente para reflejar los nuevos cambios.

Webpack ahora supervisará los archivos en su aplicación para detectar cambios. Cuando se realice y se guarde cualquier cambio, Webpack volverá a compilar su aplicación y recargará automáticamente la ventana del navegador con las nuevas actualizaciones.

Nota: el servidor de Webpack no reconstruirá su aplicación, como tal, sino que almacena los cambios en un caché, por lo que puede actualizar el navegador tan rápidamente. Esto significa que no verá las actualizaciones reflejadas en el público carpeta. De hecho, puede eliminar esta carpeta por completo al utilizar el servidor Webpack..

Cuando necesite construir su aplicación, simplemente puede ejecutar npm ejecutar construir para crear el público Carpeta de nuevo (si es necesario) y envíe sus archivos de aplicaciones, listos para su distribución.

Terminando nuestra aplicación

Para completar, agreguemos los dos componentes simples que hemos estado usando en los tutoriales anteriores.

Agregue dos nuevos archivos en la carpeta del proyecto raíz llamada MyFirstComponent.js y MySecondComponent.js a la carpeta principal de la aplicación. En MyFirstComponent.js, añade el siguiente código:

importar React, Componente desde 'reaccionar'; la clase MyFirstComponent extiende el Componente render () return ( 

this.props.number: Hola de React!

) exportar por defecto MyFirstComponent;

Y en MySecondComponent.js, añadir:

importar React, Componente desde 'reaccionar'; la clase MySecondComponent extiende el Componente render () return ( 

this.props.number: My Second React Component.

) exportar por defecto MySecondComponent;

Para utilizar estos componentes en nuestra aplicación, actualizar index.js a lo siguiente:

importar React, Componente desde 'reaccionar'; importar ReactDOM desde 'react-dom'; importar MyFirstComponent desde './MyFirstComponent'; importar MySecondComponent desde './MySecondComponent'; la aplicación de clase extiende el Componente render () return ( 

Mis primeros componentes reaccionan!

) ReactDOM.render ( , document.querySelector ('#app'));

Esto da como resultado el mismo resultado que hemos visto anteriormente, excepto que esta vez a través de la configuración de la aplicación React 100% manualmente.


Plantillas reutilizables de React Setup

Una vez que haya realizado esta configuración manual una vez y haya creado los archivos de configuración de configuración, esta es la única vez que necesitará hacer esto completamente desde cero. Para proyectos futuros, puede reutilizar uno o más de sus archivos de configuración existentes, haciendo que los proyectos React posteriores sean mucho más rápidos de configurar.

Incluso podría crear un conjunto de plantillas de inicio React especialmente diseñadas y alojarlas en GitHub. Entonces sería un caso simple de clonar un proyecto de inicio y ejecutar npm init para instalar los módulos Node.js requeridos.

Descarga e instala el proyecto

El proyecto React para este tutorial está disponible para descargar, por lo que puede jugar con él o usarlo como una plantilla para nuevos proyectos..

Haga clic en el Descargar adjunto Enlace en la barra lateral derecha para acceder al archivo .zip del proyecto. Una vez descargado, extraerlo y abrir una ventana de línea de comandos. Asegúrate de estar en el my-first-components-build directorio.

Ingrese los siguientes comandos para instalar y compilar la aplicación React.

npm install npm run dev

El primer comando descargará todos los módulos Node.js necesarios para el proyecto, lo que tomará un minuto o dos. El segundo comando compilará la aplicación React y ejecutará el mini servidor web, mostrándolo en el navegador.

Intenta hacer algunos cambios en tu aplicación React. Cada vez que guarde los cambios, su aplicación se volverá a compilar y la ventana del navegador se actualizará automáticamente para reflejar la nueva versión de la aplicación..

Cuando desee compilar su proyecto para su distribución, simplemente ejecute el siguiente comando.

npm ejecutar construir

Conclusión

A lo largo de esta serie de tutoriales, hemos examinado varias formas en que puede acercarse a la configuración de las aplicaciones React, cada una de las cuales requiere progresivamente más tareas de configuración por adelantado. Pero el beneficio a largo plazo es que usted tiene mucho más control y flexibilidad sobre cómo se configura el proyecto exactamente.

Una vez que haya dominado la configuración de React, creo que encontrará el desarrollo de aplicaciones muy divertido. Me encantaría escuchar tus comentarios. Déjame saber qué planeas construir a continuación con React!