Ar turėčiau naudoti JSLint patvirtinimą arba „JSHint JavaScript“?

Šiuo metu tikrinu savo „JavaScript“, skirtą „JSLint“, ir judėti į priekį, padėdamas parašyti geriausią „JavaScript“ - ypač dirbant su „jQuery“ biblioteka.

Dabar bėgau į JSHint , JSLint kištuką.
Todėl man įdomu, ar interneto programos yra labai valdomos javascript, o tai yra geriausias ar tinkamiausias patvirtinimo įrankis darbui prieš:

  • JSLint arba JSHint?

Dabar noriu nuspręsti, kaip veikia patikros mechanizmas, ir judėti į priekį, naudokite tai patikrinti kliento pusėje.

Ir skirtumas tarp „jshint“ ir „jslint“? Prašome paaiškinti viename pavyzdyje javascript.

Nuorodos:

416
24 июля '11 в 0:04 2011-07-24 00:04 mėgėjas yra nustatytas liepos 24 d. 11 val. 0:04 2011-07-24 00:04
@ 8 atsakymai

[EDIT]
Šis atsakymas buvo redaguotas. Aš palieku pradinį atsakymą toliau kontekstui (kitaip komentarai neturi prasmės).

Kai šis klausimas buvo iš pradžių užduotas, „JSLint“ buvo pagrindinė priemonė, leidžianti pakartoti „JavaScript“ tekstą. „JSHint“ buvo naujas „JSLint“ kištukas, bet dar nesuderinamas su originalu.

Nuo to laiko JSLint išliko gana statiškas, o JSHint labai pasikeitė - sumažėjo daugelis prieštaringesnių JSLint taisyklių, pridėjo visą naują taisyklių rinkinį ir paprastai tapo lankstesnė. Be to, dabar yra dar viena ESLint priemonė, kuri yra dar lankstesnė ir turi daugiau taisyklių.

Savo pradiniame atsakyme sakiau, kad neturėtumėte priversti save laikytis JSLint taisyklių; tol, kol suprantate, kodėl jis išmeta įspėjimą, galite nuspręsti, ar pakeisti kodą, kad išspręstumėte įspėjimą.

Nuo 2011 m. Itin griežtas JSLint taisyklių rinkinys, tai buvo protingas patarimas - mačiau labai nedaug „JavaScript“ kodų, galinčių išlaikyti JSLint testą. Tačiau, atsižvelgiant į pragmatiškesnes taisykles, kurias galima rasti šiandienose „JSHint“ ir „ESLint“ priemonėse, daug realistiškesnis pasiūlymas yra pabandyti gauti kodą, per kurį jie būtų perduodami be įspėjimų.

Kartais gali būti atvejų, kai linteris skundžiasi tuo, ką padarėte tyčia - pavyzdžiui, žinote, kad visada turėtumėte naudoti === , bet tik tada, kai turite gerą priežastį naudoti == . Bet net ir tada, su ESLint, jūs galite pasirinkti eslint-disable aplink aptariamą liniją, kad jūs vis tiek galėtumėte perduoti pūkelių testą su nuliais įspėjimais, o likusio kodo dalis laikėsi taisyklės. (tiesiog nedarykite pernelyg dažnai!)


[ORIGINALUS ATSAKYMAS SURSE]

Bet kuriuo atveju naudokite JSLint. Tačiau nepertraukite rezultatų ir nekoreguokite visko, apie kurį jis įspėja. Tai padės jums patobulinti kodą, o tai padės rasti galimų klaidų, bet ne viskas, apie kurią JSLint skundžiasi, yra tikra problema, todėl nesijaučia, kad reikia užbaigti procesą be įspėjimų.

Bet kokiu atveju, bet kuris reikšmingas „JavaScript“ kodas, turintis didelę trukmę ar sudėtingumą, sukuria įspėjimus JSLint, nesvarbu, kaip gerai parašyta. Jei netikite manimi, pabandykite paleisti keletą populiarių bibliotekų, pvz., JQuery.

Kai kurie JSLint įspėjimai yra vertingesni nei kiti: išsiaiškinkite, kurie iš jų turėtų būti laikomasi ir kurie yra mažiau svarbūs. Turi būti atsižvelgta į kiekvieną įspėjimą, bet nesijaučia įpareigota pataisyti savo kodą, kad būtų pašalintas bet koks įspėjimas; visiškai normalu pažvelgti į kodą ir nuspręsti, kad esate patenkintas; laikas, kai daiktai, kurie nepatinka, yra teisingi dalykai.

133
24 июля '11 в 1:00 2011-07-24 01:00 atsakymą pateikė Spudley, liepos 24 d., 11 val., 1:00, 2011-07-24 01:00

tl; dr Takeaway:

Jei ieškote labai aukšto lygio sau ar komandai, JSLint. Tačiau tai nebūtinai yra standartas, tik standartas, kai kurie iš jų dogmatiškai pasiekia mus iš javascript dievybės, pavadinto Doug Crocford. Jei norite būti šiek tiek lankstesnis arba turėti senų profesionalų savo komandoje, kurie neperka JSLint nuomonėse arba reguliariai vaikščioti tarp JS ir kitų C šeimos kalbų, pabandykite JSHint.

ilga versija:

Šakės paaiškinimas paaiškina, kodėl JSHint yra:

http://badassjs.com/post/3364925033/jshint-an-community-driven-fork-of-jslint http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to -jshint /

Todėl manau, kad idėja yra ta, kad ji yra „bendruomenės orientuota“, o ne „Crockford“. Praktiškai JSHint paprastai yra šiek tiek švelnesnis (arba bent jau pritaikomas arba agnostikas) keliose stilistinėse ir foninėse sintaksinėse „nuomonėse“, kurias JSLint yra įsipareigojęs.

Pavyzdžiui, jei manote, kad ir A, ir B yra žemiau, arba jei norite parašyti kodą su vienu ar daugiau A aspektų, kurie nėra B, JSHint yra skirtas jums. Jei manote, kad B yra vienintelis teisingas pasirinkimas ... JSLint. Esu tikras, kad yra ir kitų skirtumų, tačiau tai pabrėžia keletą.

border=0

A) Pasitraukite JSHint iš dėžutės - JSLint avarijos

 (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) Pereina ir JSHint, ir 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); } }()); 

Asmeniškai aš rasiu JSLint kodą, kuris yra labai malonus pažvelgti, ir vienintelės sudėtingos savybės, su kuriomis nesutinku, yra jo neapykanta dėl daugiau nei vienos var deklaracijos funkcijoje ir -loop var i = 0 deklaracijų ir kai kurių erdvinių valdiklių, skirtų funkcijų deklaracijos.

Keletas „JSLint“ taikomų tarpų, manau, kad tai nebūtinai yra bloga, bet nėra sinchronizuojama su kai kuriomis įprastomis erdvės konvencijomis kitoms šeimos kalboms (C, Java, Python ir kt.), Kurios dažnai laikomos konvencijomis „Javascript“. Kaip visą dieną rašau įvairiomis kalbomis ir dirbdamas su komandos nariais, kurie nepatinka mūsų kodo „Lint“ stiliaus erdves, JSHint yra geras balansas. Jis sugauna medžiagą, kuri yra teisinė klaida arba tikrai bloga forma, bet nežievėja man, kaip JSLint (kartais taip, kad negaliu išjungti) stilistinėms ar sintaksinėms nitpik, kurios man nereikia.

Daug gerų bibliotekų nėra „Lint'able“, kuri man rodo, jog yra tam tikra tiesa, kad kai kurie „JSLint“ tiesiog stumia 1 „geros kodo“ versiją (tai yra tikrai geras kodas). Bet vėlgi, tos pačios bibliotekos (ar kitos geros), tikriausiai, negali būti „Hint'able“, taigi taip irgi.

364
26 мая '12 в 7:36 2012-05-26 07:36 atsakymą pateikė Ben Roberts , gegužės 26 d. 12 val. 7:36 2012-05-26 07:36

Ant priekinio javascript yra dar vienas brandus ir aktyviai sukurtas „žaidėjas“ - ESLint :

ESLint yra įrankis, skirtas identifikuoti ir pranešti apie ECMAScript / JavaScript kodą. Daugeliu atžvilgių tai panaši į JSLint ir JSHint su keliomis išimtimis:

  • „ESLint“ naudoja „Esprima“, kad išanalizuotų „JavaScript“.
  • ESLint naudoja AST, kad įvertintų kodo modelius.
  • ESLint yra visiškai prijungtas, kiekviena taisyklė yra įskiepis, ir galite jį prijungti vykdymo metu.

Iš tikrųjų svarbu, kad jis būtų išplėstas per vartotojo įskiepius / taisykles . Jau yra keletas papildinių, skirtų įvairiems tikslams. Tarp kitų yra:

Žinoma, galite naudoti savo kūrimo įrankį, kad paleistumėte ESLint :

46
23 дек. atsakymą pateikė 23 d. 2014-12-23 09:20 '14 ne 9:20 2014-12-23 09:20

Prieš keletą savaičių turėjau tą patį klausimą ir įvertinau JSLint ir JSHint.

Skirtingai nei atsakymai į šį klausimą, mano išvada nebuvo:

Bet kuriuo atveju naudokite JSLint.

Arba:

Jei ieškote labai aukšto lygio sau ar komandai, JSLint.

Kaip JSHint galite konfigūruoti beveik tas pačias taisykles kaip ir JSLint. Todėl norėčiau pasakyti, kad nėra skirtumų tarp taisyklių, kurias galėtumėte pasiekti.

Taigi priežastys, dėl kurių pasirinkote vieną iš kitų, yra labiau politinės nei techninės.

Galiausiai, mes nusprendėme eiti su JSHint dėl ​​šių priežasčių:

  • Atrodo, kad jis yra labiau pritaikomas.
  • Tai neabejotinai labiau orientuota į bendruomenę nei vieno asmens šou (nesvarbu, koks asmuo yra vėsus).
  • JSHint atitinka mūsų OOTB kodo stilių geriau nei JSLint.
15
22 дек. atsakymas duotas lexicore 22 d. 2014-12-22 17:45 '14, 17:45 2014-12-22 17:45

Norėčiau pateikti trečiąjį pasiūlymą, „ Google“ uždarymo kompiliatorių (ir uždarymo „Linter“ ). Čia galite pabandyti internete.

Uždarymo kompiliatorius yra įrankis, leidžiantis pagreitinti „JavaScript“ įkėlimą ir veikimą. Tai tikras „JavaScript“ kompiliatorius. Vietoj to, kad būtų išverstos iš šaltinio kalbos į mašinos kodą, jis yra sudarytas su „JavaScript“, kad pagerintumėte „JavaScript“. Ji analizuoja jūsų „JavaScript“, analizuoja, pašalina negyvą kodą ir perrašo ir sumažina tai, kas liko. Ji taip pat tikrina sintaksės, kintamojo ir tipo nuorodas ir įspėja apie įprastas „JavaScript“ klaidas.

12
24 июля '11 в 0:07 2011-07-24 00:07 atsakymą pateikė Jeff Foster liepos 24 d., 11 d. 0:07 2011-07-24 00:07

Na, vietoj to, kad atliktumėte rankiniu būdu sukurtus pūkelių nustatymus, mes galime įtraukti visus pūkelių nustatymus, pavyzdžiui, mūsų js failo viršuje.

Nurodykite visus šio failo pasaulinius kintamuosius, pavyzdžiui:

  

Pripažinkite visus pūkelių nustatymus kaip:

  

Tikiuosi, kad tai padės jums :)

8
17 сент. Atsakymą pateikė Vikash Pandey 17 sep . 2014-09-17 16:02 '14 ne 16:02 2014-09-17 16:02

Pratarmė: Na, tai pakilo. Bet aš nusprendžiau tai nutraukti. Tegul šis atsakymas bus naudingas jums ir kitiems skaitytojams.

2019

23 янв. Atsakymą pateikia laidai 23 Jan 2016-01-23 21:23 '16 at 21:23 2016-01-23 21:23

Yra dar vienas aktyviai sukurtas alternatyvus - „ AOC“ stiliaus „JavaScript“ kodas :

AOC yra stiliaus vadovo programavimo kodas. Galite sukonfigūruoti ATP savo projektui naudodami 150 patvirtinimo taisyklių, įskaitant iš anksto nustatytus populiarių stilių vadovus, pvz., JQuery, Airbnb, Google ir kt.

Jame yra kelios iš anksto nustatytos nuostatos , kurias galite pasirinkti tiesiog nustatydami nustatymą .jscsrc konfigūracijos .jscsrc ir nustatydami jį pakeisti, įjungti arba išjungti visas taisykles:

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

Taip pat yra populiariems redaktoriams sukurti papildiniai ir plėtiniai.

Taip pat žiūrėkite:

1
25 авг. atsakymą pateikė alecxe 25 rug . 2015-08-25 18:58 '15 at 18:58 2015-08-25 18:58

Kiti klausimai apie „ etiketes „ arba „ Užduoti klausimą“