JavaScript est évidemment devenu assez indispensable; cependant, je suis encore nouveau dans ce domaine, et j'ai trouvé qu'il est difficile de lutter contre le sentiment que cela semble un tel gâchis et je ne veux pas y faire face en ce moment. Je suis beaucoup plus avancé dans ma compréhension des autres langues que je ne le suis avec JavaScript, car je n'arrive pas à maîtriser cette peur. J'ai l'impression que, lorsque j'écris JavaScript, j'essaie de peindre un portrait de chiots Weimaraner.
Cela m'aide généralement à garder à l'esprit une poignée des directives les plus importantes que je peux me poser pour chaque mouvement que je fais. (À mon avis, une poignée est de cinq ou moins.)
Pouvez-vous énumérer cinq (ou moins) questions spécifiques à JavaScript que je devrais me poser pour chaque mouvement que je fais, lorsque je code JavaScript? Que seraient-ils?
Mise à jour: pour clarifier, je ne demande pas cinq choses à garder à l'esprit lors de l'apprentissage de JavaScript; Je pose cinq questions que je me pose toujours à l'avenir, que tout le monde devrait toujours poser. Des questions de haut niveau comme: "Suis-je susceptible de répéter cela ailleurs?" ou "ce nom de variable / fonction est-il suffisamment spécifique (ou trop spécifique)" <== sauf que ces exemples de questions ne sont pas propres à JavaScript. Je recherche des directives particulières à JavaScript.
Réponses:
Je vais répondre à cela en deux parties. L'un est "Cinq conseils ou moins pour apprendre à écrire du bon JavaScript". L'autre est «Cinq conseils ou moins pour écrire un bon JavaScript».
Apprentissage:
Faire:
EDIT (ajout de questions pour se conformer au PO):
Quelle portée suis-je en train de référencer?
Cela devrait aider avec les fuites globales, les gestionnaires d'événements et quand utiliser les fermetures.
Suis-je en train de me répéter?
Une abstraction et une utilisation appropriées des techniques d'OO sont importantes. Utilisez-les judicieusement.
Mon code se répète-t-il?
Il est remarquablement facile de se retrouver à placer l'accès DOM dans une boucle, ou à créer des fonctions (anonymes ou non) dans une boucle. Notez que cela peut être vrai pour le code qui utilise
setTimeout
ousetInterval
aussi bien que les boucles traditionnelles.Est-ce que cela signifie ce que je pense que cela signifie?
Les valeurs véridiques et fausses dans JS peuvent être un peu délicates, en particulier lors de l'utilisation de comparaisons non strictes (
==
par opposition à===
). La frappe dynamique, la contrainte de type et le fait de référencer des objets ou des littéraux peuvent également être pertinents.la source
Tout d'abord, sachez comment fonctionne la technologie sous-jacente.
Vous devez le savoir parce que vous savez comment cela fonctionne, parce que vous allez rencontrer des problèmes de mise en réseau ou, comme je l'ai vu d'innombrables fois, les gens ne parviennent pas à comprendre ce qu'est réellement côté serveur et côté client. L'une des questions newb les plus courantes que je vois est "Comment puis-je faire JS changer une variable dans mon code ASP?!"
Comprenez que votre code est plus grand que vous ou votre situation spécifique
cell.innerHTML = "<script>alert("xss")</script>"
, et qu'une boîte d'alerte apparaît, vous avez mal fait.<noscript>
balises pour les alerter./[a-z ']/i
, mais qui incluent l'hindi, l'arabe, les accents (c'est un problème existant des développeurs à courte vue), chinois , et d'autres. Comprendre les jeux de caractères, Unicode et UTF-8.Vous êtes un programmeur, pas une fabrique de pâtes. Arrêtez d'écrire des spaghettis.
"This fizzes the bizz"
ou ceux mi-anglais mi-français ne sont pas utiles. Décrivez ce que fait une fonction. Décrire des sections complexes de code.<a href="javascript:alert("foo")">
. FFS NE FAIT PAS CELA. Attendez que le document complet soit chargé, séparez votre code JavaScript du document html. Il s'agit des pratiques de base de la POO 101, mais n'incluez jamais votre JS ou CSS dans votre document html. Découvrez comment le faire correctement ou trouvez quelqu'un qui sait vous montrer comment le faire. Encore une fois, posez des questions.Javascript:foo("buz")
s'agit d'un pseudo-protocole, il n'est pas entièrement pris en charge, et si vous n'utilisez pas le javascript en ligne, vous ne l'utiliserez pas en premier lieu. Je vous promets du fond du cœur qu'il n'y a aucune raison que ce soit sur cette terre ou n'importe où dans l'univers dont vous avez besoin pour mettre votre javascript à l'intérieur d'un élément HTML. Déjà. Alors ne le fais pas. Je n'aiderai même plus les gens qui font ça, c'est si mauvais.Découvrez comment écrire du code de telle manière qu'il ne se casse pas tout le temps.
main_backup_20110911.js.bak.1
Vous perdez des choses, votre répertoire devient désordonné, vous ne pouvez pas facilement «revenir en arrière» à un point précédent dans le temps. Vous ne pouvez pas voir ce qui se passe, vous ne pouvez pas créer de correctifs de code. Alors, commencez simplement à apprendre le GIT, cela devrait vous prendre une heure et vous ne reviendrez jamais.Écrivez du JavaScript que les gens adorent
Concentrez-vous sur les bases, toujours.
for (;;)
et pourquoi vous utilisez unefor( in )
boucle. Quand utiliser une boucle while. Arrêtez d'imbriquer les FI lorsque vous pouvez simplement utiliser un boîtier de commutateur. Les objets ne préservent pas l'ordre, ne les utilisez donc pas comme un tableau; vieux Opera / FF, vieux MISE, parfois Flash ne respectera pas l'ordre de vos objets. Utilisez un tableau si vous voulez garder un ordre de choses, utilisez un objet si vous voulez un objet (quelque chose qui n'a pas d'ordre d'éléments).Concentrez-vous sur le long jeu, pas un flash rapide et mourrez.
which
", déposez un tas de code que personne ne peut utiliser et disparaître. Vous n'avez rien apporté. N'utilisez pas de variables commea
etchezburger
.Pour toute personne intéressée, j'ai en fait pris la plupart de ces notes personnelles sur un tutoriel que je n'ai nulle part fini d' écrire.
la source
TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
Lisez le Javascript de Douglas Crockford : The Good Parts . C'est tout à fait une astuce, mais honnêtement, c'est le meilleur conseil que j'ai jamais entendu pour écrire un bon javascript.
De même, lisez les articles de Douglas Crockford sur Javascript .
la source
la source
Voici quelques questions qui devraient vous aider à utiliser JavaScript.
Comment fonctionne JSON et à quoi sert-il?
Pourquoi les objets fonctions sont-ils en Javascript?
Pourquoi ne devrais-je pas utiliser eval?
Comment créer des événements en javascript?
Comment puis-je utiliser la détection en javascript?
Couvre à peu près la plupart des choses que vous devez faire en Javascript.
la source
eval()
, vérifiez deux fois et triplez une autre façon; il existe presque toujours un moyen plus propre et plus simple, sauf si vous essayez d'exécuter une chaîne entière de JavaScript.(function() {/* stuff */})()
est un bon moyen d'encapsuler un ensemble de code et de lui créer une portée locale. Utiliser des objets est une autre façon, souvent meilleure; les objets sont plus analogues aux espaces de noms dans d'autres langues lorsqu'ils sont utilisés de cette manière. Faites juste attentionthis
. Contrairement à la plupart des autres langues,this
ne fait pas toujours référence à ce que vous pourriez penser intuitivement. Souvenez-vous également que sauf indication contraire, toutes les variables, fonctions et autres objets JS sont tous globaux, même sur plusieurs.js
fichiers.la source
return
, et la ligne suivante contenant vos données, vous l'aurez dit enreturn ;
raison d'ASI. Je dirais qu'il est plus important de comprendre les règles ASI et les espaces blancs que de "toujours utiliser des points-virgules". Mais c'est un excellent moyen de vous sauver.I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
Je pense que les classes sont un outil assez puissant pour structurer le code. Il existe de nombreuses règles indépendantes du langage sur la façon de concevoir des systèmes basés sur les classes et certains principes OO sont en fait plus clairement mis en œuvre lors de l'utilisation des classes.
Par conséquent, je vous suggère de jeter un œil à CoffeeScript .
À partir de là, je vous suggère d'essayer de rassembler des informations sur la façon de mettre en œuvre SOLID , DRY , GRASP , KISS et YAGNI , et plus important encore, de savoir comment gérer les situations, où elles semblent entrer en conflit (elles ne le font jamais, seulement votre compréhension d'eux ou le problème actuel le fait). C'est assez facile à trouver, même sur stackexchange.
Veuillez noter que ces principes s'appliquent tout autant au développement JavaScript "brut". Cependant, beaucoup de contenu que vous trouverez sur eux les illustrera en utilisant des langages basés sur la classe et il pourrait donc être utile de programmer dans une langue, où il n'y a pas trop de frais généraux impliqués pour les comprendre.
Personnellement, je pense que JavaScript est un langage extrêmement puissant, mais en fait, vous devrez d'abord comprendre profondément d'autres langues, pour vraiment apprécier ce fait.
la source
Je fais l'hypothèse que vous utilisez JavaScript pour le développement de l'interface utilisateur côté client dans une application Web.
1) Devrait-il être côté client ou côté serveur? Je sais que je suis allé écrire de gros morceaux de code qui méritaient vraiment d'être sur le serveur et vice versa. Souvent, je vais me lancer dans un appel AJAX pour quelque chose qui se trouve juste mieux placé dans le code du serveur à inclure sur le chemin. Surtout des choses qui sont de nature statique mais changent assez régulièrement (liste de catégories par exemple.)
2) Existe-t-il un plugin qui le fait déjà?J'utilise beaucoup JQuery et la réponse est presque toujours OUI! Je prends souvent du code de plugin que quelqu'un a écrit et l'adapte à mes besoins (en ajoutant généralement des classes supplémentaires aux choses, etc.), mais j'ai rarement besoin de recommencer à zéro.
3) Javascript est-il le bon endroit pour cela?Parfois, je me surprends à ajouter tout un tas de styles dynamiques à quelque chose via Javascript quand il est beaucoup plus logique d'utiliser un CSS intelligent.
4) Dois-je utiliser un outil différent? C'est quelque chose avec lequel je me suis débattu récemment. Il existe des alternatives javascript comme le script café qui sont bien gérées dans ma pile (Rails 3.1) et j'ai envisagé de déplacer ou non une grande partie de mon code là-bas.
5) Ce code Javascript est-il un bon code? Javascript est un code comme tout autre code. Ce code est-il aussi bon que le reste de mon code? Sinon, pourquoi pas? Est-ce jetable? Suis-je paresseux?
la source