Maison > Article > interface Web > Partage de fonctions qui permet à JavaScript de se séparer
Cet article vous présente principalement l'utilisation de la programmation fonctionnelle pour rompre avec JavaScript. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
À propos du DHTML
DHTML est l'abréviation de Dynamic HTML, qui est du HTML dynamique (une application sous le Standard Universal Markup Language), qui est du HTML statique relativement traditionnel. Un concept de création de pages Web en chinois. Le soi-disant HTML dynamique (DHTML en abrégé) n'est pas réellement un nouveau langage. Il s'agit simplement d'une intégration de scripts HTML, CSS et côté client, c'est-à-dire qu'une page inclut html+css+javascript (ou autre côté client). scripts) ), où les scripts CSS et côté client sont écrits directement sur la page au lieu de créer un lien vers les fichiers associés.
A cette époque, JavaScript évoluait lentement et était principalement utilisé dans la validation de formulaires. Par conséquent, il n’était pas aussi populaire qu’aujourd’hui et n’attirait pas beaucoup d’attention. On peut dire que ce n'est qu'une cerise sur le gâteau. Vous devez vous assurer que votre application peut toujours être utilisée normalement après la désactivation de JavaScript dans le navigateur. Plus tard, les frameworks sont apparus les uns après les autres : jQuery, Knockout, Angular, React, Vue, etc.
De même, JavaScript évolue également à un rythme accéléré. Nous n'utilisons ES6 que depuis peu de temps, et maintenant les gens ont presque ignoré ES7 et ont commencé à parler d'ES8.
Et nous avons de nombreuses alternatives, telles que TypeScript, CoffeScript, ClojureScript, ELM, etc.
Nous avons été submergés par trop de frameworks et de langages, et il est difficile de tous les suivre et de tous les maîtriser.
Mauvais itinéraire
À mesure que JavaScript mûrissait, les concepts de programmation orientée objet (POO) ont filtré, et j'adorais ça.
J'ai commencé à essayer toutes les différentes façons de créer des classes et j'ai finalement pu utiliser correctement l'héritage. Je me suis dit : JavaScript commence à vraiment ressembler à un langage !
Cependant, ce n'est que plusieurs années plus tard que j'ai découvert que la POO était la pire conception introduite par JavaScript !
J'essaie d'apporter ma compréhension du C# à JavaScript. Au début, j'étais plein d'attentes, mais plus tard, j'ai trouvé que c'était trop compliqué et brûlant le cerveau.
C'est principalement parce que l'héritage prototypique de JavaScript est différent de celui de C#. J'ai l'habitude d'écrire du code élégant comme console.log(this) tous les jours. Mais et maintenant ? Si je ne respecte pas accidentellement les règles, cela me donnera des cauchemars. Les méthodes privées et les valeurs privées doivent avoir un trait de soulignement devant leur nom, et même les fermetures doivent être utilisées pour garantir la confidentialité.
Par conséquent, non seulement la POO a causé de nombreux problèmes, mais aussi l'ajout de la POO a apporté de nombreux nouveaux problèmes.
Programmation Fonctionnelle
Je ne l'ai pas compris au début. Je peux lire et comprendre ce code fonctionnel, mais je ne sais pas pourquoi ! Finalement, je me suis forcé à l'apprendre.
Les langages fonctionnels m'ont donné une nouvelle perspective et m'ont permis d'envisager la programmation d'une manière complètement différente.
Cela ne semblera pas naturel au début et il faudra du temps pour s'y habituer. Toutes les définitions sont basées sur des fonctions, les valeurs ne peuvent pas être modifiées et il n'y a pas d'état. J'utilise la pensée fonctionnelle pour résoudre des problèmes. Comme je ne le connaissais pas, il m'a fallu plus de temps pour l'apprendre. Petit à petit, je suis devenu compétent dans l'utilisation de méthodes fonctionnelles pour programmer. Et je connais aussi la signification sous-jacente de tout code écrit de cette façon.
Mon code est plus concis et facile à réutiliser. Peu à peu, les fonctionnalités du langage que j'utilisais ont disparu du code et mon code semblait avoir été écrit dans un autre langage. Est-ce que j'utilise toujours JavaScript ?
1. N'utilisant plus var
J'ai remplacé var par const. Grâce au design fonctionnel, mes fonctions sont pures. La valeur d'une variable ne sera plus modifiée, également pour garantir qu'elle ne sera pas utilisée.
Je vais vérifier le code pour m'assurer que chaque var, même let, toutes les déclarations utilisent const.
2. Il n'y a pas de boucle for
Lors de l'apprentissage d'un langage de programmation, nous apprendrons la boucle for au début. Mais depuis que j'ai appris la programmation fonctionnelle, j'ai modifié la boucle for pour utiliser le filtre, la cartographie et la réduction. Pour ceux qui nécessitent des calculs supplémentaires, j'utiliserais la récursivité ou une bibliothèque tierce comme lazy.js.
Il n'y a plus de boucle for dans mon code maintenant. Si vous la voyez, dites-le-moi et je l'éliminerai.
3. if peut également être simplifié
J'ai commencé à arrêter d'écrire de gros morceaux de code à l'intérieur de if. J'ai extrait la logique à l'intérieur et l'ai mise dans une fonction distincte. De cette façon, nous pouvons simplifier si nous utilisons l'opérateur ternaire (a?b:c).
Il n'y a presque plus d'instructions if dans mon code de nos jours. Pour permettre aux autres développeurs de comprendre plus facilement mon code, je l'utilise rarement.
4. Dites adieu au switch
De même, je n'aime pas utiliser switch, mais je recherche une manière d'écrire fonctionnelle.
J'aime aussi utiliser l'opérateur cond de Ramda au lieu du commutateur.
5. Ne vous inquiétez pas pour ça
Oui, vous avez bien entendu ! Nous pouvons également éliminer complètement cela.
JavaScript fonctionnel vous permet d'abandonner complètement l'utilisation de ceci ennuyeux
Maintenant, il n'y a que des données et des fonctions, et même les données ne sont qu'une expression spéciale de la fonction, vous n'en avez plus besoin. J'ai commencé à comprendre les objets comme des états et des fonctions dans des langages fonctionnels. Je n'ai même pas besoin de lier un état ou des fonctions à des objets, comme en POO.
La conception orientée objet n'est pas nécessaire
Avec le recul, je trouve que la complexité apportée par la programmation d'objets de surface est vraiment inutile. Je peux implémenter les mêmes fonctionnalités et accomplir les mêmes tâches en utilisant des langages fonctionnels. De plus, le code est plus léger car il n’est pas nécessaire de faire circuler ces objets complexes. Il n'y a que des données et des fonctions, et comme les fonctions ne sont pas liées aux objets, elles sont plus faciles à réutiliser. Je n'ai plus à m'inquiéter de tous les problèmes liés à l'héritage prototypique traditionnel. JavaScript n'est pas bien conçu.
Le manque de contrôleurs d'accès privés, publics, internes ou protégés pour JavaScript n'est plus un problème. Les contrôleurs d'accès sont conçus pour résoudre les problèmes dus à l'introduction de la programmation orientée objet. En JavaScript fonctionnel, ces problèmes n'existent plus.
Résumé
Mon code est complètement différent maintenant. Il contient de nombreuses fonctions pures, que j'ai transformées en différents modules ES6. Ces fonctions peuvent être utilisées pour créer des fonctions plus complexes. Un grand nombre de fonctions sont des expressions lambda très simples sur une seule ligne.
Maintenant, ma vision du logiciel a changé : l'entrée est un flux de données, puis le programme agit sur le flux de données pour effectuer diverses opérations sur les données, puis renvoie de nouvelles données.
La conception fonctionnelle a un impact sur les langages de programmationet est partout. LINQ en C# en est le meilleur exemple. De même, Java 8 introduit également des fonctionnalités de langage fonctionnel.
Recommandations associées :
Introduction détaillée au comportement XML (comportement) - nouveau DHTML ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!