[JAVA] Mécanisme de conversion vers une langue que le navigateur peut reconnaître

Langues supérieures et inférieures

** ・ Langage haut de gamme ** Les langages de haut niveau sont des langages de programmation conçus pour être plus faciles à comprendre pour les humains que les machines. De plus, "haut de gamme" ne signifie pas un excellent langage, mais signifie qu'il est possible de décrire des éléments uniques au modèle et au système d'exploitation avec un haut degré d'abstraction, et de nombreux langages utilisés pour développer des logiciels d'application, etc. Est classé comme un langage de grande classe, donc l'expression «de grande classe» est utilisée.

** ・ Langue inférieure ** Les langages que les machines reconnaissent facilement sont appelés langages de bas niveau. "Lower" ne signifie pas qu'il s'agit d'un langage inférieur, mais qu'il est plus proche du matériel Par conséquent, l'expression «bas grade» est utilisée.

Pour afficher le fichier dans le navigateur, la machine le reconnaît après l'avoir développé dans un langage de haut niveau. Vous devez le traduire dans une langue inférieure que vous pouvez, et cette traduction s'appelle ** compilation **.

compiler

C'est la tâche de traduire un langage de programmation afin qu'il puisse être compris par la machine opérateur. La compilation est appelée ** compilateur (un langage de programmation convivial) ** C'est fait par le programme. S'il y a un langage que le compilateur ne peut pas reconnaître, vous devez le ** précompiler ** dans un langage qui peut être reconnu à l'avance.

Précompilé

Pré-compilation qui permet au compilateur de traduire des langues qu'il ne peut pas traduire. Alternativement, il se réfère au prétraitement requis pour le traitement principal. En d'autres termes, la précompilation est la compilation qui doit être effectuée avant la compilation ou le traitement principal.

Par exemple, une application Web précompile un fichier écrit dans une langue supérieure, puis le transmet au navigateur afin que le navigateur Web puisse effectuer le processus principal de lecture et d'affichage du fichier statique.

Il existe un mécanisme appelé ** Asset Pipeline ** comme méthode pour effectuer une telle précompilation.

Pipeline d'actifs

C'est une fonction qui organise les fichiers statiques appelés actifs tels que JavaScript et CSS en petits morceaux. Étant donné que la fonction de précompilation des langages de haut niveau peut être ajoutée au pipeline d'actifs, il sera possible de l'appliquer au développement à l'aide de SCSS, TypeScript, etc.

Le traitement du pipeline d'actifs est effectué dans le flux de ** «(1) précompilation», «(2) concaténation», «(3) compression» et «(4) placement» **. Après avoir précompilé et concaténé plusieurs fichiers statiques, compressez et réduisez le poids et placez-le dans le répertoire public afin qu'il puisse être transmis au navigateur.

Jusqu'à présent, Rails utilisait le pipeline d'actifs de Gem appelé ** Sprockets ** par défaut pour précompiler CSS, JavaScript, etc.

Cependant, ces dernières années, il est devenu courant de développer avec des fonctions de bibliothèque JavaScript, donc à partir de la version 6, la pré-compilation à l'aide de ** module bundler ** est devenue la norme.

Bundler de modules

Module Bundler est un outil permettant de gérer les modules JavaScript tout en tenant compte de leurs dépendances.

Un module est un groupe de processus qui divise les fonctions une par une afin qu'elles puissent être lues à partir d'autres fichiers. En JavaScript, si vous divisez plusieurs fonctions en fichiers, des problèmes se produiront lors de leur combinaison en un seul fichier, donc dans l'environnement Node.js, les fonctions sont gérées dans des unités appelées modules.

Un module vous permet de diviser un grand nombre de fonctions en plusieurs fichiers, et même si vous combinez les fonctions divisées en un seul fichier, cela fonctionnera sans problème. Cependant, il existe un problème en ce qu'il ne peut pas fonctionner correctement s'il existe un module qui ne peut pas être chargé en raison de la dépendance créée car il est divisé en plusieurs parties.

Le regroupeur de modules qui gère tous les modules d'un lot résout ce problème. Ces dernières années, ** webpack ** est devenu le courant dominant parmi les bundleurs de modules.

webpack webpack est un outil de gestion de divers JavaScripts requis lors de la création d'une application Web. Webpack fait quatre choses principales.

Éléments basiques rôle
Entry Décidez quel fichier utiliser comme référence (point d'entrée) pour résoudre la dépendance
Output Spécifiez où et quel nom pour sortir le fichier qui est utilisé comme point d'entrée et compilé par webpack.
Loaders Lisez (chargez) la méthode de conversion de fichiers tels que CSS et HTML autres que JavaScript en modules et effectuez le traitement spécifié.
Plugins Introduisez et étendez (branchez) les tâches que le chargeur ne peut pas effectuer autres que le regroupement de fichiers, comme la compression.

En d'autres termes, en utilisant webpack, il est possible de convertir et de compresser la bibliothèque JavaScript et divers langages autres que JavaScript, puis de les placer où vous le souhaitez.

Il est possible d'opérer des commandes en introduisant webpack dans Rails, mais comme il est un peu difficile de décrire le fichier de paramétrage, il existe un joyau appelé ** Webpacker ** qui simplifie le paramétrage.

Webpacker C'est une gemme qui fait de Webpack une spécification Rails et prépare un fichier de configuration dédié et une méthode d'assistance. À partir de la version 6 de Rails, Webpacker est installé par défaut. Webpacker met à disposition des packages JavaScript en plus de la précompilation de fichiers statiques similaires au pipeline d'actifs Sprockets.

Recommended Posts

Mécanisme de conversion vers une langue que le navigateur peut reconnaître
Description qui le rend accessible uniquement aux affiches
[Android] Je souhaite créer un ViewPager pouvant être utilisé pour les didacticiels
Comment faire un MOD pour Slay the Spire
Premiers pas avec Java
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
SDWebImage: Comment vider le cache pour une UIImageView particulière
Rechercher une instruction Switch qui peut être convertie en une expression Switch
Un mémorandum pour atteindre le lieu qui démange pour Java Gold
Créons un conteneur Docker qui peut SSH à la configuration minimale de CentOS 8
Comment gérer le type auquel j'ai pensé en écrivant un programme Java pendant 2 ans
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
J'ai posé une question qui peut être utilisée pour des entretiens techniques
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Comment identifier le chemin sur lequel il est facile de se tromper
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Une histoire sur l'évolution des compétences du COBOL cultivé pendant 5 ans à la fin des années 20 à un langage Web
À propos de la langue à apprendre à partir de maintenant
Un mémo sobrement accro à la demande de multipart / form-data
Comment interagir avec un serveur qui ne plante pas l'application
Liste de réglages de Glassfish que je souhaite conserver pour le moment
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java