
Tout développeur Web qui fait cela depuis au moins quelques années entendra probablement une question similaire jour aprÚs jour:
Je veux vraiment devenir dĂ©veloppeur web, mais je ne sais pas par oĂč commencer. Des suggestions?
Il y a environ 10 ans, la réponse était trÚs simple. Créez simplement index.html, ajoutez-y quelques balises, rendez le titre rouge avec CSS et activez jQuery pour gérer les clics!
Oh, comme tout a changé. Maintenant, nous travaillons avec des outils de construction, un routage cÎté client, des cadres spéciaux avec un runtime sophistiqué, une liaison «ceci» partout, des littéraux de modÚle, CSS-in-JS ... comment choisir ce qui est le plus important?
Tout cela a conduit Ă d'innombrables variations sur la façon de commencer avec des degrĂ©s divers de "entrez-le maintenant, et je vous expliquerai plus tard." Certains encouragent les nouveaux arrivants Ă apprendre React ou Vue tout de suite pour se familiariser avec les pratiques modernes. Alors que d'autres crient du haut des montagnes, les dĂ©butants devraient toujours commencer par les bases. En vĂ©ritĂ©, les deux approches ont leurs mĂ©rites. Le premier peut inciter les nouveaux arrivants Ă des choses comme le rechargement Ă chaud et les composants, au risque de laisser trop de cĂŽtĂ©. Alors que le second permet aux nouveaux arrivants de comprendre comment le DOM fonctionne sous le capot, en mĂȘme temps, peut-ĂȘtre distraire les gens avec la complexitĂ© de la vanille JS, dont nous avons longtemps ignorĂ©.
C'est pourquoi nous avons besoin d'un terrain d'entente. Un moyen de commencer avec les bases, tout en absorbant les concepts modernes tels que le développement basé sur les composants, les CSS isolés vs en cascade, les modÚles, les fonctions déclaratives, etc. etc.
Svelte, Ă votre service
SvelteJS est une cartouche assez nouvelle dans le cadre des cadres js, qui commence tout juste à attirer l'attention. Quelqu'un peut le savoir aprÚs avoir publié
State of JavaScript 2018 . Bref, Svelte se veut un framework qui n'est pas vraiment un framework. Il est basé sur un outil de compilation de composants au stade de l'assemblage, qui vous permet de charger sur la page uniquement ce qui est nécessaire pour afficher votre application. Cela signifie qu'il n'y a pas de DOM virtuel, pas de frameworks au-dessus des frameworks et
pas de framework en runtime .
Tous ces arguments sont assez sĂ©rieux pour les dĂ©veloppeurs plus expĂ©rimentĂ©s, mais la plupart des dĂ©butants ne pourraient probablement pas lire le dernier paragraphe sans se casser la tĂȘte. Heureusement, ce n'est pas la magie de la compilation qui rend Svelte si convivial pour les dĂ©butants, mais sa syntaxe.
Si vous n'avez jamais vu le composant Svelte, voici un exemple simple:
<p class="pretty">Here's some markup <strong>written by {name}!</strong></p> <style> .pretty { color: red; } </style> <script> let name = "Ben"; </script>
Voyons cela. Donc, tout d'abord, il convient de noter que tout cela peut ĂȘtre Ă©crit mĂȘme dans un fichier
.html normal, mĂȘme dans un fichier
.svelte , si votre ùme le désire. Nous voyons également des balises familiÚres qui rappellent le développement sans framework:
style et
script . Les styles et le code JS sont écrits dans ces balises pour construire correctement les composants. De plus, il permet à la coloration syntaxique de fonctionner sans plugins d'édition supplémentaires, tels que les solutions CSS-in-JS. De plus, le compilateur Svelte est suffisamment intelligent pour isoler les styles spécifiques aux composants par défaut. Par conséquent, vous n'aurez pas de styles circulant entre les composants.
Vous voyez également comment quelque chose de magique se produit avec le
nom de la variable JavaScript. Il s'agit d'un nouveau concept brillant pour Svelte 3, oĂč toute variable dans le script de votre composant est accessible Ă partir du balisage. Nous n'avons pas de syntaxe spĂ©ciale Ă apprendre pour gĂ©rer l'Ă©tat. Il n'y a ni Angular
$ scope , ni React
this.state , ni
données de Vue. Au lieu de cela, nous pouvons simplement utiliser des variables ordinaires pour décrire l'état, provoquant un nouveau rendu chaque fois que leurs valeurs changent.
Cette liberté de ce «jargon» syntaxique signifie que la création d'un composant commence à ressembler à la création d'un CodePen, sans avoir à réfléchir à la façon de connecter la fonction JS déclarative à une sorte de sélecteur DOM.
Une autre bonne chose est que les composants Svelte sont importés aussi facilement que les composants traditionnels. Vous pouvez simplement importer
.html , car Svelte sait comment le déployer:
<div> <Wizardry /> </div> <script> import Wizardry from './wizardry.html'; </script>
Cool, mais attendez une minute ...
Certains lecteurs peuvent trouver ce concept aussi Ă©poustouflant que moi. Dans le mĂȘme temps, d'autres ont probablement leurs propres arguments contre l'utilisation de cette approche pour enseigner aux dĂ©butants. Ne sont-ils pas curieux de savoir comment fonctionne la manipulation DOM?
La réponse est ... possible. Mais quand quelqu'un commence (au moins par expérience personnelle), vous pouvez accepter un peu d'abstraction pour accélérer la création de choses sympas.
De plus, tout comme certains langages, tels que Java et JS, la gestion abstraite du pointeur via la rĂ©cupĂ©ration de place, la plupart des outils de dĂ©veloppement Web modernes ignoraient la manipulation DOM. Ă l'exception des cas extrĂȘmes plus difficiles dont les dĂ©butants n'auront probablement pas besoin. Soit dit en passant, si vous vous demandez ce qu'est la gestion des pointeurs, je pense que cela ne fait que prouver mon point. Ainsi, au lieu de forcer les dĂ©butants Ă manipuler le DOM ou Ă apprendre des mĂ©thodes spĂ©cifiques au framework pour gĂ©rer l'Ă©tat, pourquoi ne pas simplement les laisser accĂ©der aux variables directement Ă partir du balisage? Maintenant, ils peuvent apprendre les principes de base de la gestion des composants par l'Ătat sans tomber dans le deuil.
D'accord, je vois un exemple de base, mais Svelte devrait avoir des fonctionnalités spécifiques pour que cela fonctionne.
C'est sans doute vrai, mais c'est beaucoup moins que vous ne le pensez. Une partie de la syntaxe de Svelte est pour le mappage itératif et conditionnel des éléments DOM. Cela fonctionne trÚs similaire à la
carte de JSX, mais sans tous ces supports imbriqués dans lesquels les nouveaux arrivants (et moi) peuvent facilement se perdre. Voici la méthode de base qui génÚre une liste d'éléments à partir d'un tableau:
<ul> {#each profiles as profile} <li>{profile.name}: {profile.role}</li> {/each} </ul> <script> const profiles = [ {name: 'Wes Bos', role: 'React extraordinaire'}, {name: 'Chris Coyier', role: 'Father of CodePen'}, {name: 'Cassidy Williams', role: 'Letting you know it's pi time'} ]; </script>
Encore une fois, je comprends toute critique concernant la syntaxe, mais j'aime la facilité de compréhension. Au lieu d'incorporer JavaScript dans notre code HTML, nous disons simplement: hé, parcourons ce tableau et créons un élément pour chacun d'eux.
Il convient de mentionner une autre caractĂ©ristique de Svelte, dont je ne suis pas si enthousiaste: la syntaxe de transmission des accessoires aux composants. Oui, il est entiĂšrement fonctionnel et facile Ă apprendre, mais en mĂȘme temps, il peut sembler trop magique au goĂ»t de certaines personnes. Pour traiter les accessoires, nous les passons simplement au composant oĂč qu'il soit importĂ© ...
<Profile coolGuy="Scott Tolinski" />
... et nous obtenons cette variable comme un "let" exporté:
<p>{coolGuy}</p> <script> export let coolGuy = ''; </script>
Je comprends parfaitement que pour certains, cela ressemblera à un abus de "l'exportation". Mais au moins cela correspond à la façon dont les débutants doivent conceptualiser les modules: nous exportons ce dont nous avons besoin pour accéder en dehors du composant, et importons ce que nous voulons utiliser dans notre composant.
Je pourrais surmonter cette bizarrerie ... mais qu'en est-il de l'étape de construction requise?
Ainsi, une autre critique à propos du démarrage du travail avec les frameworks est la nécessité d'utiliser un gestionnaire de packages. Ce qui veut dire ... bon sang, utilise le terminal!
Ăcoutez, je comprends que l'ouverture de cette chose peut ĂȘtre extrĂȘmement intimidante, avec sa police mono et son «cd» effrayant pour naviguer dans les rĂ©pertoires. Mais honnĂȘtement, ce n'est vraiment pas un gros obstacle lorsque vous n'avez besoin que d'une seule Ă©quipe pour courir. De plus, le terminal intĂ©grĂ© dans VS Code facilite le dĂ©marrage. Il s'ouvre mĂȘme en bas de la fenĂȘtre directement dans le rĂ©pertoire de votre projet!
Svelte propose en fait un
démarreur téléchargeable , mais j'ai créé
mon propre modÚle de démarrage qui utilise simplement Rollup pour le téléchargement direct. En fait, le fichier de configuration fait moins de 30 lignes! Pour un projet Svelte de base, voici tous les répertoires et fichiers dont vous avez besoin:
/public
index.html
/src
index.html
app.js
rollup.config.js
package.json
Ajoutez simplement la commande pour démarrer l'étape de construction dans package.json et vous avez terminé! Vous pouvez, bien sûr, dire que tous les modules et fichiers supplémentaires dont d'autres frameworks ont besoin ne sont pas un problÚme si un débutant ne les touche pas, mais, à mon avis, moins il y a de choses supplémentaires, mieux c'est pour les débutants.
D'accord, c'est cool et pratique pour les débutants. Mais dans quelle mesure ce cadre est-il stable?
Il s'agit d'une question trĂšs d'actualitĂ© pour un cadre jeune comme Svelte. Tous les exemples que j'ai montrĂ©s utilisent la syntaxe de Svelte version 3, qui au moment de la rĂ©daction de ce document est toujours en version bĂȘta. Aussi excitant que cela puisse ĂȘtre, j'attendrais encore quelques mois avant de me prĂ©cipiter avec lui pour des sĂ©minaires de programmation. NĂ©anmoins, Svelte propose une page de
documentation trĂšs concise
pour la version 3 , ce qui peut le rendre plus facile pour les débutants.
Jetons donc un coup d'Ćil Ă certains des principaux avantages de l'apprentissage du dĂ©veloppement Web avec Svelte:
- Il s'agit d'un framework de composants avec 0 plugins supplémentaires.
- Il gĂšre l'Ătat sans aucune poubelle ordinaire
- Utilise l'isolation de style sans utiliser CSS-in-JS (donc aucun plugin d'éditeur ou syntaxe stupide n'est nécessaire)
- Pour commencer, vous n'avez besoin que d'un script de construction trĂšs simple.
- Il n'y a pratiquement pas de fichiers supplémentaires dans le projet de base
Bien sĂ»r, c'est parfaitement normal si je ne pouvais pas vous convaincre dans cet article. Tous les bons articles ont suscitĂ© une petite controverse! Mais j'espĂšre que cet article vous a au moins montrĂ© Ă quel point Svelte peut ĂȘtre sacrĂ©ment cool et simple Ă apprendre.
Merci d'avoir lu ça!
Je suis un développeur Web frontal dans le processus d'apprentissage, toujours en train de jouer avec quelque chose de nouveau. J'essaierai de publier réguliÚrement ici, alors écrivez si vous l'aimez!
***
Du traducteur:
Merci d'avoir lu cette traduction! J'espĂšre que cet article vous encourage Ă considĂ©rer Svelte comme un outil de formation ou mĂȘme un nouveau projet.
Venez Ă mon atelier de 2 heures sur Svelte 3 Ă
HolyJS Piter du 24 au 25 mai . Qui veut simplement suivre le développement de Svelte - bienvenue sur la chaßne de télégramme en langue russe
SvelteJS . Nous serons ravis de vous voir!
Et une petite enquĂȘte, sans rĂ©fĂ©rence au cadre et Ă la technologie. Votre opinion est juste intĂ©ressante.