
Le Web moderne est un système dynamique complexe qui est constamment en mouvement. Comme indiqué dans de nombreux articles, il devient très difficile de suivre tous les changements car de nouveaux outils et cadres apparaissent presque tous les jours. La connaissance devient obsolète avant même d'avoir un pied. Bien sûr, tout cela est le résultat évident d'un développement et d'une croissance rapides, mais cela ajoute inévitablement de la complexité aux développeurs Web et augmente le seuil d'entrée dans la profession.
Il arrive au point d'absurdité que vous devez d'abord configurer babel, puis webpack, puis traiter les paramètres spécifiques au cadre choisi pour créer un formulaire de saisie de données utilisateur simple ... Et c'est probablement trop de nouveaux mots pour un nouveau venu dans l'équipe à qui cette tâche simple a été confiée . Non, le projet sera probablement déjà configuré et configuré, et le débutant ne sera certainement pas laissé à la merci du destin en lui disant brièvement pourquoi. Mais il vaut la peine de reconnaître que c'est vraiment devenu trop compliqué et que nous semblons passer une partie importante du temps sur tous ces systèmes de construction et lutter avec la configuration.
Mais essayons de nous souvenir - a-t-il toujours été comme ça? Les créateurs du web rêvaient-ils d'un tel avenir? Non, bon sang, et encore non! Après tout, certains personne, souvent laid, rempli de trucs et astuces, mais le web était différent - simple et compréhensible! Ici, nous avons ajouté un script, voici un style, et voici notre mise en page. Alors qu'est-ce qui a mal tourné, est-ce que tout est vraiment devenu si mauvais? Après tout, javascript et le Web entier n'ont fait que croître et s'améliorer, le langage est devenu plus fort et plus expressif, la modularité est apparue, l'avantage de divers modèles architecturaux est devenu évident, et pourtant - où est cette ancienne simplicité? L'avons-nous vraiment perdue pour toujours?

(Magnifique araignée)
La réponse est en fait assez simple et directe. Le Web a vraiment grandi et est devenu plus compliqué, maintenant il n'est pas rare de trouver une application multimédia entièrement écrite pour la technologie Web ou un jeu 3D dans un navigateur, ce qui était impensable il y a 10 ans. Mais le principal problème est que nous voulons souvent du Web qu'il n'est pas encore prêt à nous donner - les dernières technologies et normes, des modèles architecturaux expérimentaux, tout est juste le plus récent et le plus moderne et bien sûr, il devrait fonctionner partout et pour tout le monde, et s'il vous plaît rapidement . Et puis un gang sauvage mené par webpack apparaît sur la scène et commence à corriger la balle. Et maintenant, vous êtes déjà accroché à des configurations complexes et votre projet dure environ une minute et demie et pèse cinquante mégaoctets. Finito la comedia. La lutte avec la configuration commence dans une tentative de réduire les performances et de réduire la taille. Et puis quel type de développement et de mise en œuvre des idées peut être discuté alors, si nous passons la part du lion sur les paramètres de la chaîne de montage. Admettez qui est votre expert en webpack?

Nous ne sommes pas habitués à cela, mais avons plutôt compris que c'est normal, mais comment faire autrement? Nous étions accrochés aux types et aux cadres, au corporatisme, à la sécurité - vous ne pouvez même pas vous quereller. Mais où est passée cette facilité et cette simplicité de l'expérience, pour lesquelles ce langage dynamique faiblement typé a été conçu? Et tout, pas le sien, a disparu sous les montagnes de ballots et d'entreprises. Mais vraiment rien ne peut être fait?
Il vaut la peine de s'arrêter et de réfléchir, mais que faisons-nous et pourquoi? Après tout, si nous utilisons webpack, rollup, parcel (soulignons si nécessaire) et créons tous ces bundles illisibles qui ne peuvent pas être débogués plus tard, même avec des cartes sources, alors sûrement quelqu'un en a besoin, non? Oui, tout est ainsi, pour une production rapide et efficace à partir de bundles, vous ne pouvez pas aller n'importe où et même le nouveau HTTP2 n'a pas rendu la tâche beaucoup plus facile. C'est pourquoi les développeurs emballent au bureau les longues soirées d'automne, restent plus longtemps au travail et brûlent des centaines de milliers de kilowatts d'énergie, emballent dans les départements, emballent dans les entreprises, emballent dans le monde entier transmettant un changement avec le mouvement du soleil. Il en est ainsi, et telle est la loi. Dura lex, sed lex. La vraie question shakespearienne est donc de blâmer ou de ne pas blâmer - elle meurt sans même avoir eu le temps de briser les lèvres du jeune Hamlet qui a ouvert le studio visuel afin d'accumuler un autre chef-d'œuvre.

(D'accord)
Mais attendez, vous avez dit que tout cela est nécessaire pour la production, mais qu'en est-il du développement? Pourquoi est-il impossible de se développer confortablement comme au bon vieux temps, juste en démarrant le serveur puis en emballant tout avant de l'envoyer en production? Et pourquoi utilisons-nous généralement les mêmes outils pour la production et le développement? Pourquoi ne pas utiliser une solution spécialement conçue pour le développement, car ce que nous faisons n'est pas particulièrement logique.
Et ce n'est vraiment pas logique, et nous le faisons plutôt en l'absence d'alternatives, ou tout simplement parce que nous y sommes habitués. Mais si je dis que vous avez le choix?

Découvrez
hq - un serveur spécialisé pour le développement d'applications Web. hq est un serveur statique sur les stéroïdes qui comprend tout ce qu'un serveur normal ne peut pas gérer. Voulez-vous la dernière fonctionnalité de la norme javascript, mais votre navigateur ne la prend pas encore en charge? - s'il te plait! Votre bibliothèque utilise le format commonjs - pas de problème! Avec les outils divers affûtés pour fonctionner avec chaque framework spécifique, hq les prend en charge tous, dès la sortie de la boîte. hq est tellement cool qu'il ne nécessite aucune configuration, il fonctionne et fait son travail. Pas de colis, tout est différent du vôtre, hq ne nécessite VRAIMENT aucune configuration, il n'existe tout simplement pas, il n'y a donc nulle part où aller. Installez-le une fois
npm install -g @hqjs/hq
puis exécutez avec une commande à la racine du projet pour commencer à expérimenter immédiatement
hq
Eh bien, vous dites, l'ancien gang nous a proposé la même chose, enfin, peut-être un peu plus de configuration, un peu moins simple, mais tout est très similaire, alors pourquoi avons-nous besoin de ce nouveau Chuck Norris dans le monde des vierges? Et puis je vous répondrai avec la nouvelle devise de la maison Greyjoy - "Nous ne sommes pas un bandit!". Oui, en fait, nous ne sommes pas des gangsters!

(Maison Greyjoy. Nous ne semons pas Bundlem)
Salut, je suis engagé dans le développement web depuis que j'ai 13 ans et j'ai commencé à frapper à 19 ans. Mon ami m'a accroché à ça quand je suis allé dans son garage où il a frappé des jours et des nuits pour voler. J'ai demandé ce que tu fais? Et il a dit que c'était quelque chose de nouveau, c'est maintenant très à la mode et cool et je dois absolument essayer. Au début, j'ai juste collé les fichiers, puis j'ai essayé un petit paquet avec le compilateur de fermeture, puis je n'ai pas pu m'arrêter. gulp, browserify, puis webpack ... Mes paquets sont devenus plus difficiles. Je ne savais pas comment m'arrêter, je suis tombé dans un cycle qui ne me permettait pas de partir. Chaque fois que j'arrivais à un nouveau projet, quelqu'un y frappait déjà et c'était tout simplement impossible de refuser. Aucun bandit n'était pas prestigieux! Des gens de la profession et même des amis proches ont refusé de communiquer et ne m'ont pas rappelé lorsqu'ils ont découvert que je voulais arrêter. Il n'y avait donc nulle part où aller. Mais maintenant je suis propre! Je ne suis plus un bandit pendant le développement! Mes amis et connaissances ont cessé de me frapper, maintenant cela n'est pas accepté dans notre entreprise. Et tu sais quoi? Je ne me suis jamais senti aussi bien! Le monde a finalement commencé à jouer avec de nouvelles couleurs et le temps a commencé à être à la fois au travail et en famille.
Sérieusement, le manque de paquets simplifie considérablement la vie. Rappelez-vous des situations insupportables où il est impossible de mettre un point d'arrêt non seulement sur l'expression, mais même sur la ligne souhaitée! Ou ces noms de variables générés par webpack __webpack __ @ #% ^ $ !!! Lorsque vous les lisez, il n'est pas surprenant d'appeler Satan, mais vous ne voulez pas les écrire sur la console et l'ennemi, et ce qui est le plus opposé, ils sont cachés derrière des noms humains normaux, alors devinez quoi d'autre. En général, le débogage se transforme souvent en enfer, même avec des cartes source complètes. Combien de fois par jour jurez-vous du code dans node_modules? Combien de malédictions tombent sur la tête des malheureux développeurs React et Angular car il est impossible de comprendre le message d'erreur et où cette erreur se produit-elle? Après avoir changé de siège, nous avons oublié tout cela comme un cauchemar. Il y a vraiment plus de temps, maintenant vous n'avez pas à vous demander pourquoi cela ne fonctionne pas ou ne fonctionne tout simplement pas en silence et où avons-nous obtenu cette bibliothèque avec dix mégaoctets dans la construction, maintenant vous pouvez clairement voir où! Il y a eu moins de souffrance, le travail est devenu plus facile et il s'avère que cela en fait un plaisir.

(Cette personne est Varg ou peau changeante, elle peut pénétrer la conscience des animaux. Maintenant, elle plane avec l'aigle, à la recherche de l'ennemi)
La meilleure partie est que le QG ne semble pas quelque chose de nouveau et de complexe, on a l'impression qu'il a toujours été avec nous, tout est si simple et familier. hq est un serveur statique qui vous comprend. Le démarrage d'un nouveau projet devient incroyablement rapide, une commande dans la console et vous pouvez commencer à expérimenter. Cadres, bibliothèques, formats, approches architecturales - tout cela ne crée plus de barrières, avec le QG, tout fonctionne comme au bon vieux temps, rapidement, simplement et logiquement! De plus, le projet
open source hq pour que vous puissiez toujours améliorer quelque chose ou ajouter la prise en charge d'un nouveau format.
Franchement, nous avons trouvé des défauts. Auparavant, lorsque la construction avec Webpack prenait plusieurs minutes, c'était une merveilleuse excuse pour chercher dans la cuisine une tasse de café aromatique, mais maintenant tout fonctionne si vite qu'il n'y a tout simplement pas de temps pour cela. Mais faut-il chercher une excuse pour un bon café?

Comment tout cela fonctionne-t-il? Cela peut donner l'impression que HQ est un monstre lourd tissé par le Dr Frankenstein à partir d'une variété de parties dissemblables et incohérentes assaisonnées d'un peu de magie noire. Mais en fait, tout est assez harmonieux et uniforme. hq distribue chaque fichier individuellement sur demande, comme le fait un serveur statique classique. Cela ne nous donne qu'une occasion limitée de se débarrasser du code inutilisé, sans tremblement complet de l'arborescence, mais cela économise beaucoup de temps consacré à l'analyse des dépendances. Toutes les transformations se produisent instantanément et à la volée. De plus, seul le minimum nécessaire est transformé. Si vous utilisez un navigateur moderne et respectez les normes Web, il est peu probable que votre code soit modifié. Bien que vous puissiez vous fier aux normes, rien ne garantit que les bibliothèques auxquelles vous êtes habitué feront de même. La plupart d'entre eux seront probablement livrés au format commonjs, ce qui ne leur permet pas de fonctionner tel quel dans le navigateur. hq s'en charge et convertit les modules commonjs au format ESM, traite les importations non standard, mais plutôt communes (comme css ou json) et détruit les objets importés si nécessaire. hq fonctionne en conjonction avec un navigateur Web, en utilisant son système de mise en cache pour accélérer la livraison des actifs et transférer uniquement les fichiers qui ont été modifiés. Il rechargera automatiquement la page lorsque vous modifiez votre code afin que vous puissiez évaluer instantanément le résultat des modifications. hq peut fonctionner avec de nombreux frameworks, mais ne dépend pas de leur code. Au lieu de cela, hq effectue une série de transformations AST à l'aide de plugins babel spécialement créés pour hq afin qu'il puisse comprendre et transformer la variété des technologies et des approches utilisées dans le développement en une seule norme prise en charge par le navigateur.
Ainsi, malgré toutes les difficultés et les défis présentés par le web moderne, le développement de projet peut rester simple et intuitif, tout comme à l'aube de la technologie web. Essayez
hq maintenant pour améliorer votre expérience de développement dans un ancien projet, ou utilisez-le pour créer un nouveau projet passionnant!
npm install -g @hqjs/hq