Статьи

Дружимо JSLint з Notepad ++

У Notepad ++ є плагін JSLint. Його можна встановити з менеджера плагінів (Модулі -> Plugin Manager ->
Show Plugin Manager -> JSLint -> Install). Коли я перший раз його встановив то не міг натішитися. Він дозволив мені писати дуже красивий код за канонами. Але, радість моя була недовгою. Через пару оновлень NPP, плагін перестав працювати. Його автор швидко написав фікс оновлення. Я його встановив (з плагін менеджера воно недоступне). Але тепер плагін став глюканат натрію в кубі. Ніякі настройки не дозволяли прибрати деякі помилки. Приклад: я історично звик використовувати tab замість пробілів. Однак співтовариство з відомих причин ( http://www.jslint.com/help.html#new ) Відкидає таби і використовує 4-е пробілу. Це їх право, питань немає. Але я використовую таби. І ось цей плагін мені каже, що я повинен використовувати прогалини місце табів. Це поведінка відключається директивою white: true, але ця ж директива відповідає і за те, щоб не було зайвих прогалин, наприклад перед перенесенням рядка. Раніше Онон мені говорило, що там намішано прогалини з табами. Тепер або те або це. Це до плагіну NPP ніякого відношення не має. Проблема плагіна в тому, що він дуже не чула реагує на зміну параметрів. Іноді практично не реагує. Тому, ось знайшов рішення, яке використовує зв'язку NodeJS і JSLint модуль через NppExec плагін.

  1. Встановлюємо NPPExec (Плагіни-> Plugin Manager -> Show Plugin Manager -> NPPExec -> Install).
  2. Встановлюємо NodeJS, якщо ви цього ще не зробили
  3. Встановлюємо JSLint, пуск -> виконати -> cmd:> npm install -g jslint
  4. Тиснемо F6 в NPP або вибираємо підміню Модулі> NppExec> Execute ... і вставляємо в поле наступне: NPP_SAVE cmd / K (CD "$ (CURRENT_DIRECTORY)" && jshint "$ (FILE_NAME)" && exit) || exit
  5. Тиснемо Save і задаємо ім'я для цієї команди, наприклад Run JSLint.
  6. Тиснемо в меню Plugins> NppExec> Advanced options ... ставимо галку Place to the Macros submenu. У списку Associated script вибираємо названий нами сниппет (дивіться крок 5). У текстовому полі Item name ви може встановити ім'я команди в підміню Макроси.
  7. Тепер ви можете призначити гарячі клавіші, для цього сниппета в підміню Макроси> Змінити гір. клавіші / видалити макро ..., у вкладці Plugins commands.

Сподіваюся, що це комусь допоможе.

Результат буде такий:

Результат буде такий:

З настройками справа дещо складніша. Так, можна їх вказувати прямо в коді. Наприклад так

/ * Global jQuery, window * / / * jslint white: true * /

Але таке сміття в коді мене трохи дратує. . Крім того, майже в усіх моїх скриптах використовується jQuery, і кожен раз вказувати, що і для чого не дуже хочеться.

Тому створюємо де-небудь тут c: \ Program Files \ nodejs \ node_modules \ файл .jslint.conf (назва папки і файлу можуть бути іншими) і засовуємо всі необхідні настройки в нього.

Наприклад так

{ "Predef": "Jodit, jQuery", "white": true}

Далі, треба змінити код запуску jslint. Тиснемо F6 і міняємо скрипт, додаючи шлях до файлу конфігурації

NPP_SAVE cmd / K (CD "$ (CURRENT_DIRECTORY)" && jslint "$ (FILE_NAME)" --config "c: \ Program Files \ nodejs \ node_modules \ .jslint.conf" && exit) || exit

Усе

Наведу ще список доступних опцій. Дуже бідно чомусь все це описано в документації

Опція Чи означає adsafe true дивіться http://www.ADsafe.org/ bitwise true якщо хочете дозволити побітові операції Детальніше browser true стандартні браузерні змінні будуть перевизначені (window, document, setTimeout) Детальніше cap true назви тегів можна писати в будь-якому регістрі. continue true потрібна опція, дозволяє використовувати в циклах continue css true Детальніше debug true можна використовувати debugger в своєму коді. Хто не знає, якщо відкрити відладчик браузера (F12) то на місці цієї комманди автоматично буде створена точка зупинки. Штука дуже корисна коли ваші скрипти занадто великі і ставити точки зупину вручну проблематично. Або наприклад при налагодженні подібних inline оброблювачів <button type = "button" onclick = "debugger; alert (1)">. Ясно, що в продакшен такі команди треба прибирати. devel true всякі глобальні налагоджувальні штуки будуть доступні. Детальніше eqeq true Дозволяє використовувати == і! = місце строгих === та! == Якщо не знаєте, для чого це взагалі треба просто дайте відповідь на питання, що буде повернуто тут console.log (false == null); console.log (false ==! null); es5 true дозволити ES5 Синаксисі. Всякі штуки типу стрілочних функцій і т.д. evil true Є хороша фраза eval is evil, але як в анекдоті - випадки бувають різні. Детальніше forin true дозволити використовувати конструкцію for (in). Детальніше Раніше воно дозволяло використовувати через hasOwnProperty, але така нотація означало що цикл буде в будь-якому випадку перебирати всі методу і властивості об'єкта, будь то методи і властивості прототипу чи ні. Це може сильно уповільнити роботу скрипта. Тому використовуємо Object.keys () і звичайний цикл з ітератором fragment true дозволити використання HTML фрагментів. Детальніше indent Число символів для tab (за замовчуванням 4). maxerr Скільки максимально помилок виводити в консолі (за замовчуванням 50) maxlen Максимальна кількість символів в рядку newcap true Дозволити використання конструкторів ні з великої літери. Детальніше node true всякі глобальні штуки з Node.js будуть глобально зумовлені. more about node nomen true дозволити використання знака нижнього підкреслення в назвах змінних on true дозволити inline обробники в html коді Детальніше passfail true Чи не показувати всі помилки, а зупиниться на першій. plusplus true дозволити оператори інкремента і декремента ++ і - Детальніше Знаючі люди люди кажуть, що код вельми не читабельний і може потім модифікуватися під вірус. Тому особисто я перейшов на i + = 1 predef Визначені глобальні об'єкти. Засовує сюди все класи, які використовуємо з різних файлів, наприклад jQuery regexp true коли програміст каже що цю проблему можна вирішити використовуючи регулярні вирази то це означає рівно одне, у програміста тепер дві проблеми. Ця стара жарт, як не можна краще відображає регулярні вирази. Невміле використання операторів в ньому, може істотно уповільнити ваш скрипт. rhino true штуки з Rhino будуть визначені. Детальніше safe true sloppy true використовувати 'Use strict'; відключати цю опцію не слід. Код стає значно зрозуміліше з нею stupid true sub true undef true if variables and functions need not be declared before used. more about undef unparam true дозволити які не використовуються параметри в методах і функціях. Дуже корисна опція якщо у вас багато універсальних багатоцільових функцій. Або в обробниках, коли точно не знаєш, які параметри тобі знадобляться в майбутньому. vars true дозволити використання декількох var в одній області видимості Детальніше white true Дуже цікава опція. По-перше вона забороняє використання табів і дозволяє тільки прогалини. Але відключати її не рекомендую, тому що вона знаходить все зайві прогалини і відступи, там де вони не потрібні. Код стає дуже акуратним. Я таки перейшов на прогалини місце табів. widget true Детальніше windows true Всякі глобальні штуки будуть зумовлені Детальніше

Розповісти друзям

Новости