Question

Je suis actuellement mon JavaScript validais contre JSLint et faire des progrès sur, il me aider à mieux écrire JavaScript -. En particulier dans le travail avec la bibliothèque Jquery

Je suis venu maintenant sur JSHint , une fourchette de JSLint .
Je me demande donc pour les applications web, qui sont très JavaScript a été conduite, ce qui est le meilleur ou le plus outil de validation applicable au travail contre:

  • JSLint ou JSHint?

Je veux décider maintenant sur un mécanisme de validation et aller de l'avant, utiliser ce pour la validation du côté client.

La différence entre jshint et JSLint? S'il vous plaît expliquer dans l'exemple javascript unique.

Liens:

  1. jshint - http://www.jshint.com/

  2. JSLint - http://jslint.com/

Était-ce utile?

La solution

[EDIT] Cette réponse a été modifiée. Je laisse la réponse originale ci-dessous pour le contexte (sinon les commentaires ne serait pas logique).

Lorsque cette question a été demandé, JSLint était le principal outil de peluchage pour JavaScript. JSHint était une nouvelle fourchette de JSLint, mais n'a pas encore beaucoup divergé de l'original.

Depuis, JSLint est resté à peu près statique, alors que JSHint a beaucoup changé - il a jeté un grand nombre de règles plus antagonistes de JSLint, a ajouté une quantité de nouvelles règles, et est généralement devenu plus souple. En outre, un autre outil ESLint est maintenant disponible, ce qui est encore plus flexible et a plus d'options de règle.

Dans ma première réponse, je l'ai dit que vous ne devriez pas vous forcer à coller aux règles de JSLint; aussi longtemps que vous avez compris pourquoi il a été lancer un avertissement, vous pourriez faire un jugement pour vous-même sur l'opportunité de modifier le code pour résoudre l'avertissement ou non.

Avec l'ensemble de règles ultra-stricte JSLint à partir de 2011, ce conseil était raisonnable - je l'ai vu très peu de JavaScript qui pourraient les jeux de caractères passer un test JSLint. Cependant, avec les règles plus pragmatiques disponibles dans les outils JSHint et ESLint d'aujourd'hui, il est une proposition d'essayer beaucoup plus réaliste pour obtenir votre code en passant par eux avec zéro avertissements.

Il peut y avoir encore de temps en temps des cas où un linter se plaindra de quelque chose que vous avez fait volontairement - par exemple, vous savez que vous devriez toujours utiliser === mais juste cette fois-ci vous avez une bonne raison d'utiliser ==. Mais même alors, avec ESLint vous avez la possibilité de spécifier eslint-disable autour de la ligne en question de sorte que vous pouvez toujours avoir un test de fibre de passage avec zéro avertissements, avec le reste de votre code obéissant à la règle. (Juste ne pas faire ce genre de chose trop souvent!)


[ORIGINAL RÉPONSE SUIVENT]

Par tous les moyens utiliser JSLint. Mais ne vous attardez pas sur les résultats et sur la fixation de tout ce qu'il met en garde contre. Il vous aidera à améliorer votre code, et il vous aidera à trouver des bugs potentiels, mais pas tout ce qui se plaint de JSLint se révèle être un vrai problème, alors ne vous sentez pas comme vous devez terminer le processus avec zéro avertissements.

Quasiment tout code Javascript avec une longueur significative ou la complexité produira des avertissements dans JSLint, peu importe à quel point il est écrit. Si vous ne me croyez pas, essayez d'exécuter certaines bibliothèques populaires comme JQuery à travers elle.

Quelques avertissements JSLint sont plus que d'autres: ceux qui apprennent à surveiller, et celles qui sont moins importants. Chaque avertissement doit être pris en considération, mais ne vous sentez pas obligé de fixer votre code pour effacer tout avertissement donné; il est parfaitement correct de regarder le code et vous décidez que vous êtes heureux avec elle; il y a des moments où les choses que JSLint ne aime pas sont en fait la bonne chose à faire.

Autres conseils

tl; dr plats à emporter :

Si vous êtes à la recherche d'un très haut niveau pour vous-même ou de l'équipe, JSLint. Mais ce ne est pas nécessairement la norme, à la norme, dont certains nous vient dogmatiquement d'un dieu javascript nommé Doug Crockford. Si vous voulez être un peu plus souple, ou avoir des anciens pros de votre équipe qui ne pas acheter dans les avis de JSLint, ou sont des allers-retours entre JS et autres langues C-famille sur une base régulière, essayez JSHint.

version longue :

Le raisonnement derrière la fourche explique assez bien pourquoi existe JSHint:

http://badassjs.com/post/ 3364925033 / jshint-un-conduit communautaire fourche de-JSLint http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to-jshint /

Je suppose que l'idée est qu'il est plutôt que Crockford-Driven « dirigée par la collectivité ». En pratique, JSHint est généralement un peu plus clément (ou au moins configurable ou agnostique) sur quelques stylistiques et mineures « syntaxiques opinions » que JSLint est pointilleux sur.

À titre d'exemple, si vous pensez à la fois A et B ci-dessous sont très bien, ou si vous voulez écrire du code avec un ou plusieurs des aspects de A qui ne sont pas disponibles en B, JSHint est pour vous. Si vous pensez que B est la seule option correcte ... JSLint. Je suis sûr qu'il ya d'autres différences, mais cela met en évidence quelques-uns.

A) Laissez-passer JSHint hors de la boîte - ne JSLint

(function() {
  "use strict";
  var x=0, y=2;
  function add(val1, val2){
    return val1 + val2;
  }
  var z;
  for (var i=0; i<2; i++){
    z = add(y, x+i);
  }
})();

B) Laissez-passer deux JSHint et JSLint

(function () {
    "use strict";
    var x = 0, y = 2, i, z;
    function add(val1, val2) {
       return val1 + val2;
    }
    for (i = 0; i < 2; i += 1) {
        z = add(y, x + i);
    }
}());

Personnellement, je trouve le code JSLint très agréable à regarder, et les seuls traits durs de ce que je ne partage pas son sont haine de plus d'une déclaration var dans une fonction et de for-loop déclarations de var i = 0 , et quelques-uns des espaces blancs renforts de déclarations de fonction .

Quelques-unes des choses blancs qui impose JSLint, je trouve être pas nécessairement mauvais, mais désynchronisés avec quelques jolies conventions standards de blancs pour d'autres langues dans la famille (C, Java, Python, etc ...), qui sont souvent suivies de conventions en Javascript ainsi. Depuis que je vous écris dans plusieurs de ces langues tout au long de la journée, et travailler avec les membres de l'équipe qui ne le font pas comme des espaces de style Lint dans notre code, je trouve JSHint être un bon équilibre. Il attrape des choses qui est un bug légitime ou forme vraiment mauvais, mais n'aboie pas à moi comme JSLint fait (parfois, de manière je ne peux pas désactiver) pour les opinions stylistiques ou nitpicks syntaxiques que je ne me soucie pas.

Beaucoup de bonnes bibliothèques ne sont pas Lint'able, qui me montre qu'il ya une certaine vérité à l'idée que certains d'entre JSLint est tout simplement de pousser 1 version de « bon code » (qui est, en effet, un bon code ). Mais là encore, les mêmes bibliothèques (ou d'autres bons) ne sont probablement pas Hint'able non plus, donc, Touché.

Il y a un autre mûrir et développé activement "joueur" sur le javascript peluchage avant - ESLint :

ESLint est un outil d'identification et de rapports sur les modèles trouvés dans Code ECMAScript / JavaScript. À bien des égards, il est semblable à JSLint et JSHint à quelques exceptions près:

  • ESLint utilise Esprima pour l'analyse syntaxique JavaScript.
  • ESLint utilise un AST pour évaluer les tendances dans le code.
  • ESLint est complètement connectable, tous les seule règle est un plug-in et vous pouvez ajouter à l'exécution.

Ce qui importe vraiment est ici qu'il est extensible via plug-ins personnalisés / règles . Il y a déjà plusieurs plugins écrits à des fins différentes. Parmi les autres , il y a:

Et, bien sûr, vous pouvez utiliser votre outil de construction de choix pour l'exécution ESLint:

J'ai eu la même question il y a quelques semaines et évaluait les deux JSLint et JSHint.

Contrairement aux réponses à cette question, ma conclusion était pas:

Par tous les moyens utilisent JSLint.

Ou:

Si vous êtes à la recherche d'un très haut niveau pour vous-même ou de l'équipe, JSLint.

Comme vous pouvez configurer presque les mêmes règles que dans JSHint JSLint. Je dirais donc qu'il n'y a pas beaucoup de différence dans les règles que vous pourriez réaliser.

Ainsi, les raisons de choisir un

sur une autre plus politique que technique.

Nous avons finalement décidé d'aller avec JSHint pour les raisons suivantes:

  • semble être plus configurable JSLint.
  • semble définitivement plus axé sur la communauté plutôt que d'un man-show (peu importe comment cool L'homme est).
  • JSHint correspond à notre style de code OOTB mieux que JSLint.

Je faire une troisième suggestion, Google fermeture du compilateur (et aussi le Fermeture Linter ). Vous pouvez l'essayer en ligne .

La fermeture du compilateur est un outil pour faire télécharger et exécuter plus rapidement JavaScript. Il est un véritable compilateur pour JavaScript. Au lieu de compiler à partir d'une langue source en code machine, il compile de JavaScript pour mieux JavaScript. Il analyse votre JavaScript, il analyse, supprime le code mort et réécritures et réduit au minimum ce qui reste. Il a également la syntaxe des contrôles, des références variables et types, et met en garde contre les pièges JavaScript communs.

Avant-propos: Ce escaladé rapidement. Mais a décidé de le passer. Que cette réponse utile pour vous et les autres lecteurs.

 Je me suis un peu emporté ici

Les conseils de code

au cours des années Alors que JSLint et JSHint sont de bons outils à utiliser, je suis venu à apprécier ce que mon ami @ugly_syntax appels:

plus petit espace de conception .

Ceci est un principe général, tout comme un « zen moine », ce qui limite les choix que l'on doit faire, on peut être plus productif et créatif.

Par conséquent, mon zéro-config favorite JS style code:

StandardJS .

UPDATE :

flux a beaucoup amélioré. Avec elle, vous peut ajouter des types à vos JS avec vous aidera à prévenir beaucoup des bugs. Mais il peut aussi rester en dehors de votre chemin, par exemple lorsque l'interface JS typées. Faites un essai!

Démarrage rapide / TL; DR

Ajouter standard comme une dépendance à vous projeter

npm install --save standard

Ensuite, dans package.json, ajoutez le script de test suivant:

"scripts": {
    "test": "node_modules/.bin/standard && echo put further tests here"
},

Pour la sortie snazzier tout en développant, npm install --global snazzy et l'exécuter au lieu de npm test.

Note: La vérification de type contre Heuristique

Mon ami lorsque l'on évoque l'espace de conception appelé Elm et je vous encourage à donner cette langue un essai.

Pourquoi? JS est en fait inspiré par LISP, qui est une classe spéciale des langues, qui se trouve être typées . Langue tels que Elm ou Purescript sont dactylographiée langages de programmation fonctionnelle.

Type restreindre votre liberté pour que le compilateur pour être en mesure de vérifier et de vous guider lorsque vous finissez par violation de la langue ou les règles de votre propre programme; quelle que soit la taille (LOC) de votre programme.

Nous avons eu récemment un jeune collègue mettre en œuvre une interface réactive deux fois: une fois dans Elm, une fois dans React; un coup d'oeil pour avoir une idée de ce que je parle.

Comparer Main.elm (dactylographiée) ? index.js (typées, pas de tests)

(ps. Notez que le code n'est pas React idiomatiques et pourrait être améliorée)

Une dernière remarque,

la réalité est que JS est typées. Qui suis-je de suggérer Programmation typée pour vous?

Voir, avec JS nous sommes dans un domaine différent: libéré des types, nous pouvons facilement exprimer des choses qui sont difficiles ou impossibles à donner un bon type (qui peut certainement être un avantage)

.

Mais sans types il y a peu de garder nos programmes en échec, donc nous sommes obligés d'introduire des tests et (dans une moindre mesure) les styles de code.

Je vous recommande de regarder LISP (par exemple ClojureScript ) d'inspiration et d'investir pour tester vos codes. Lire Le chemin du substack pour avoir une idée.

Paix.

Eh bien, au lieu de faire les réglages manuels de charpie, nous pouvons inclure tous les paramètres de peluches en haut de notre fichier JS lui-même par exemple.

Déclarez tout le var global dans ce fichier comme:

/*global require,dojo,dojoConfig,alert */

Déclarer tous les paramètres tels que lint:

/*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */

Espérons que cela vous aidera à:)

Il y a aussi une autre activement développé alternatif - JSC - code JavaScript style :

est un CSJ linter de style de code pour l'application de programmation de votre style guider. Vous pouvez configurer votre projet pour JSC en détail à l'aide sur 150 règles de validation, y compris les préréglages de guides de style populaires comme jQuery, Airbnb, Google, et plus encore.

Il est livré avec plusieurs que rel="nofollow"> paramètres prédéfinis, vous pouvez choisir en spécifiant simplement le preset dans le fichier de configuration de .jscsrc et le personnaliser - override, activer ou désactiver les règles:

{
    "preset": "jquery",
    "requireCurlyBraces": null
}

Il y a aussi des plug-ins et extensions construites pour les éditeurs populaires.

Voir aussi:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top