Imba est un langage de programmation open source créé par Scrimba spécifiquement pour développer des applications web. Il se compile en JavaScript et est capable de fonctionner au sein de l'écosystème JS existant. Nous parlons, par exemple, de Node.js, de npm, de Webpack.
La principale force d'Imba est que ce langage vous permettra de créer des applications beaucoup plus rapides que celles basées sur des bibliothèques utilisant la technologie Virtual DOM, comme React et Vue. Les gains de performances des applications sont obtenus grâce à la façon dont Imba fonctionne avec les mises à jour DOM. Des détails à ce sujet peuvent être trouvés
ici .

L'auteur de ce document, co-fondateur du projet Scrimba, dit qu'il utilise Imba depuis plusieurs années. Selon lui, écrire dans ce langage est un vrai plaisir, car il a, par rapport à JavaScript, une syntaxe plus propre, ce qui améliore la lisibilité du code.
Ce matériel est un guide pour Imba pour les débutants, dont le développement vous permettra de commencer à créer des applications simples. Tout d'abord, les bases du langage seront révélées ici, puis le développement d'interfaces utilisateur avec son aide sera considéré. Il montrera immédiatement la configuration de l'environnement de développement pour la programmation sur Imba.
À propos des projets utilisant Imba
Avant d'entrer dans le code, je voudrais attirer votre attention sur le fait que Imba n'est pas quelque chose comme un autre langage étrange compilé en JS et utilisé exclusivement dans des projets amateurs. Il est également utilisé dans les applications sérieuses des grandes entreprises.
Un exemple de son application est la plate-forme qui soutient la
criée aux poissons en Islande. Dans ce pays, le commerce du poisson représente environ 1,6% du PIB, soit environ 390 millions de dollars.
Ventes de poissons islandaisUn autre exemple est la plateforme de formation
Scrimba.com , où Imba est utilisé sur les parties client et serveur du projet. La convivialité de cette plate-forme, basée sur une application complexe, dépend fortement de la capacité d'Imba à synchroniser rapidement les changements DOM.
Plateforme Scrimba.comEn conséquence, nous pouvons dire que la langue que vous rencontrerez aujourd'hui est appropriée pour développer des projets de différentes échelles.
Syntaxe
La syntaxe Imba ressemble beaucoup à JavaScript, mais d'autres langages comme Ruby et Python ont également un effet. Peut-être que les caractéristiques de syntaxe d'Imba seront commodément considérées comme un exemple. Ci-dessous se trouve une simple fonction JS qui renvoie le plus grand des deux nombres qui lui sont passés, ou, si ces nombres sont égaux,
false
.
function findGreatest(num1, num2) { if (num1 > num2) { return num1 } else if (num2 > num1){ return num2 } else { return false } }
Maintenant écrivez la même chose sur Imba.
def findGreatest num1, num2 if num1 > num2 num1 elif num2 > num1 num2 else false
En comparant probablement ces deux exemples, vous pouvez immédiatement voir les différences entre Imba et JavaScript. À savoir, ils sont les suivants:
function
transforme en def
. La function
mot-clé function
remplacée par le mot-clé def
.- Manque de supports. Les paramètres de fonction ne sont pas placés entre parenthèses. En Imba, en fait, les parenthèses sont rarement nécessaires, bien que vous puissiez les utiliser si vous le souhaitez.
- Indentation. L'indentation joue un rôle très important dans Imba. Cela signifie que les accolades ne sont pas nécessaires ici.
- Mot clé de
return
manquant. Dans Imba, le retour de valeurs à partir de fonctions est effectué implicitement, c'est-à-dire qu'il n'y a pas besoin du mot-clé return
. Imba renvoie automatiquement la dernière expression de fonction.
Cela ne veut pas dire que les fonctionnalités de syntaxe décrites ci-dessus sont l'aspect le plus important d'Imba, mais elles rendent le code plus concis qu'un code similaire écrit en JavaScript. Cet avantage deviendra plus visible à mesure que nous progressons dans le matériau.
Conception de l'interface utilisateur
Parlons de la création d'interfaces utilisateur à l'aide d'Imba. En fait, ce langage a été créé juste pour cela. En particulier, cela signifie que les nœuds DOM sont intégrés dans le langage sous la forme de soi-disant «objets de première classe».
Si vous avez de l'expérience avec le développement de React, vous pouvez considérer cette fonctionnalité d'Imba comme si Imba avait sa propre version de JSX intégrée dans le langage.
Considérez le code suivant, dans lequel la bibliothèque React est utilisée pour rendre un bouton et afficher un message à la console lorsque vous cliquez sur ce bouton.
class App extends React.Component { logOut() { console.log('button clicked!') } render() { return ( <div className="container"> <button onClick={this.logOut}>click me!</button> </div> ) } }
Si vous réécrivez ceci sur Imba, vous obtenez ce qui suit.
tag App def logOut e log 'button clicked!' def render <self.container> <button :tap.logOut> 'Click me!' Imba.mount <App>
Comparons ces deux extraits de code. À savoir, nous prêtons attention aux trois caractéristiques suivantes:
- Balises en ligne. Notez que la construction de la
class App extends React.Component
été convertie en une forme beaucoup plus simple - la tag App
. Le tag
clé tag
est intégré dans la langue. Les balises DOM sont également intégrées. - Manque de balises de fermeture. Étant donné que l'alignement des lignes détermine la structure du programme, vous n'avez pas besoin de fermer les balises (par exemple, en utilisant la
</button>
). Cela accélère la saisie du texte du programme et réduit sa taille. - Syntaxe de classe simple. Imba simplifie le travail avec les classes HTML. A savoir, au lieu de la construction encombrante de
className="container"
il suffit d'ajouter .container
à la balise elle-même.
Vous avez peut-être également remarqué des fonctionnalités des gestionnaires d'événements dans Imba. À savoir, nous connectons le gestionnaire correspondant au bouton en utilisant la construction
:tap.logOut
, utilisée à la place de
onClick={this.logOut}
. Ce n'est là qu'une des nombreuses façons de gérer les événements provenant de l'utilisateur. Des détails à ce sujet peuvent être trouvés
ici .
Travailler avec des données
Parlons maintenant de l'utilisation des données dans Imba. L'exemple suivant montre une application React, dans l'état du composant
App
dont il existe une variable de
count
égale à 0. La valeur de cette variable diminue ou augmente en cliquant sur les boutons correspondants.
class App extends React.Component { state = { count: 0 } increase = () => { this.setState({ count: this.state.count + 1 }) } decrease = () => { this.setState({ count: this.state.count - 1 }) } render() { return ( <div className="container"> <button onClick={this.increase}>Increase!</button> <button onClick={this.decrease}>Decrease!</button> <p>{this.state.count}</p> </div> ) } }
Voici à quoi cela ressemblera sur Imba.
tag App prop count default: 0 def increase count += 1 def decrease count -= 1 def render <self.container> <button :tap.increase> 'Increase!' <button :tap.decrease> 'Decrease!' <p> count Imba.mount <App>
La première chose qui attire votre attention lorsque vous comparez ces deux exemples est la différence de quantité de code.
L'exemple Imba est environ deux fois plus court - à la fois en termes de nombre de lignes et de quantité de code.
Bien que la comparaison du nombre de lignes de code lors de la comparaison des langages de programmation ne soit pas si importante, elle affecte néanmoins la lisibilité du code qui, à l'échelle d'une certaine base de code, joue déjà un rôle. Moins de code sur Imba signifie une meilleure lisibilité par rapport à React.
Accès auto implicite
Vous avez peut-être remarqué que dans l'exemple ci-dessus, nous accédons directement à la variable d'instance de l'objet, en ne mentionnant que son
count
noms. Dans React, la même chose se fait en utilisant la construction
this.state.count
.
Dans notre exemple sur Imba, on pourrait également utiliser une construction de la forme
self.count
, cependant,
self
est accessible ici implicitement, donc
self
facultatif. Imba, lorsqu'il fait référence au
count
, découvre si une telle variable existe soit dans la portée, soit dans l'instance de l'application elle-même.
Mutabilité
Une autre différence majeure entre les deux exemples précédents est la façon dont ils implémentent le changement d'état. Dans un exemple écrit en Imba, l'état est modifiable, ce qui vous permet de modifier directement la valeur de la variable de
count
.
React adopte une approche différente, où la valeur de
this.state
considérée comme immuable, par conséquent la seule façon de le changer est d'utiliser
this.setState
.
Si vous préférez travailler avec un état immuable, vous pouvez utiliser la bibliothèque appropriée avec Imba. La langue Imba en ce sens n'est liée à aucune solution particulière. Nous, dans le projet Scrimba, utilisons un état mutable, car nous pensons que nous n'avons pas besoin des coûts excessifs des ressources système nécessaires pour garantir l'immunité.
Mise en place d'un environnement de développement
Maintenant que vous vous êtes familiarisé avec les bases d'Imba, il est temps d'expérimenter. Pour ce faire, vous devrez configurer l'environnement de développement. Pour ce faire, exécutez simplement les commandes suivantes.
git clone https:
Après cela, allez dans le navigateur à
http://localhost:8080/
et vous verrez la page principale du projet. Pour modifier l'application - éditez le fichier, qui se trouve sur
src/client.imba
.
Si l'installation locale d'Imba ne vous convient pas, vous pouvez utiliser le
sandbox interactif en
ligne du projet Scrimba.
Imba Performance
Parlons des performances des applications écrites en Imba. La raison pour laquelle Imba vous permet de créer des applications Web extrêmement rapides est que ce langage n'utilise pas le concept Virtual DOM, qui est devenu très populaire avec React. Imba utilise la technologie DOM mémorisée. Il est plus simple que le DOM virtuel et utilise moins de mécanismes intermédiaires pour travailler avec le DOM.
Dans
ce benchmark, que vous pouvez exécuter chez vous en cliquant simplement sur le bouton
RUN BENCHMARK
sur sa page, nous comparons le nombre d'opérations avec le DOM qui peuvent être effectuées en une seconde lors de la modification de la liste TODO en utilisant Imba, React et Vue.
Dans le test, dont les résultats sont présentés ci-dessous, il s'est avéré que Imba est 20 à 30 fois plus rapide que React et Vue. Sur différents ordinateurs, les résultats des tests varieront.
Mesures de performances Imba, React et VueComme vous pouvez le voir, l'utilisation d'Imba signifie la possibilité de travailler extrêmement rapidement avec le DOM.
Résumé
Dans cet article, nous avons couvert uniquement les bases d'Imba. Si cette langue vous intéresse, consultez sa
documentation . En particulier, il sera utile de maîtriser son concept d'utilisation des getters et setters et du mécanisme des appels implicites.
Voici une liste de ressources utiles liées à Imba. Il convient de noter qu'au début, cette langue peut sembler difficile, il faudra un certain temps pour la maîtriser, mais, comme tout le monde le sait, vous ne pouvez pas facilement sortir un poisson d'un étang.
Chers lecteurs! Envisagez-vous d'utiliser la langue Imba dans vos projets?
