JSHint должен предоставлять экспериментальную / нестабильную функциональность через конфигурацию, которая делает этот статус очевидным для потребителей. Вот что я предлагаю:
.jshintrc
файлы:
{
"experimental": {
"expnt": true,
"async": true
}
}
Встроенные директивы:
// jshint.experimental expnt: true
/* jshint.experimental async: true */
Хотя в примерах я использую существующие предложения этапа 2, я хотел бы реализовать механизм конфигурации до появления какой-либо конкретной опции.
Я выбрал ключевое слово «экспериментальный», но мне также нравится «нестабильный», поскольку оно более четко передает ожидаемые критические изменения между основными выпусками. @ jshint / core есть мысли по этому поводу?
experimental: true
и experimental: false
? (Чтобы включить / отключить каждую экспериментальную функцию) (я против experimental: true
потому что это будет иметь ту же проблему, что и enforceall
)Под experimental
подразумевается esversion: 6
?
Если да, означает ли esversion: 5
experimental: false
?
Есть ли в этом прогресс?
Пока нет. Пожалуйста, дайте нам знать, если хотите помочь!
@jugglinmike Я был бы рад помочь. Я еще не касался jshint, за исключением того, что использую его в своих проектах, так что это может занять у меня некоторое время, но я начну копаться в этом на следующей неделе. Было бы лучше всего сделать это как один PR для добавления experimental: []
и экспериментальной функции, которая может этим воспользоваться?
@tschuy Отлично! Я надеялся реализовать логику анализа конфигурации отдельно от какой-либо конкретной функции. Это будет довольно минимально, и вы сможете протестировать параметр, как указано в файле RC (в основном, просто "experimental": {}
не должно вызывать ошибок - нет эквивалента для "пустого" встроенного директива).
Я вижу, что в своем комментарии вы использовали квадратные скобки. Не уверен, что это была просто опечатка с вашей стороны, но решение, которое я описал, указывает это как значение объекта.
Я пока отменяю назначение - похоже, я был слишком оптимистичен, когда создавал эту проблему.
Как вы думаете, чтобы разрешить experimental.option
?
например
// jshint option: true, experimental.option: true
что короче чем
// jshint option: true
// jshint.experimental option: true
Всем привет,
Могу я спросить - есть ли прогресс по этому вопросу?
Большое спасибо.
любые новости?
мы хотим начать использовать ES7!
@phra, с какой функцией ES7 вы испытываете проблемы при использовании JSHint?
я только что попробовал на официальном сайте -> http://jshint.com/
попробуйте написать асинхронную функцию ES7: она принимает ключевое слово async в качестве переменной и выдает ошибку.
В ES7 / ES2016 такой функции нет. Вот хороший пост в блоге, в котором перечислены все функции ES7 / ES2016: http://www.2ality.com/2016/01/ecmascript-2016.html
http://kangax.github.io/compat-table/esnext/
async находятся на этапе 3 стандартизации ES2017, их еще нет на этапе stage4, но babel их поддерживает, и они ОЧЕНЬ крутые и экономят время.
вы планируете реализовать для них поддержку?
JSCS поддерживает их -> http://jscs.info/rule/disallowSpacesInFunctionExpression
Я использую jshint и jscs для контроля качества, и jshint не позволяет мне добавлять в мой проект поддержку функций babel с асинхронным режимом.
асинхронные функции находятся на этапе 3 стандартизации ES2017
Функция пропустила крайний срок ES2017. JSHint стремится поддерживать этап 2 или выше, но для его реализации требуются человеческие ресурсы и время.
async
и await
теперь завершены и находятся в последнем проекте спецификации ES2017.
Они также теперь поставляются в Chrome и Firefox. Можем ли мы переоценить этот вопрос?
[обновить] предложение завершено, поэтому оно должно появиться в последнем проекте ES2017, но это не так. Не уверен, что это значит.
[update2] ага! просто слили со спецификацией: https://github.com/tc39/ecma262/pull/692
async
и await
теперь доступны в Node 7.6. Есть новости по этому поводу?
Эта проблема является окончательным местом для отслеживания запроса функции, поэтому, если
была какая-то новая информация, вы могли ожидать найти ее здесь. Не могли бы вы
хотите помочь?
По-прежнему нет поддержки await / async? Грустный...
@xduseko , JSHint - это программное обеспечение с открытым исходным кодом, поддерживаемое группой добровольцев.
Любой может выполнить форк репо, реализовать async / await и отправить запрос на перенос с тестами. Или любой может подождать, пока основная команда не найдет достаточно свободного времени для его реализации.
Что вы надеялись получить от своего комментария?
@xduseko Да, я согласен, это немного грустно, но в конечном итоге это будет - я уверен. :скрещенные пальцы:
Если это приносит облегчение; прямо сейчас у JSLint его тоже нет.
Из-за отсутствия async / await я попытался перейти на ESLint, но это было большой проблемой. В конце концов я снова переключился на JSHint. Любой линтер - я думаю, что JSHint по-прежнему лучший - представляет огромную ценность при написании JavaScript.
Чтобы жить дальше, я просто тренирую свой глаз, чтобы игнорировать выделенные операторы async / await в моей среде IDE. 🙈
В отличие от @semmel, я не могу
Есть ли способ заставить JSHint игнорировать async / await сейчас?
Поддерживая это.
ЭТО. ЯВЛЯЕТСЯ. УДИВИТЕЛЬНЫЙ.
expnt
показатель степени ? Если да, то можно ли это назвать exponent
? Acrns dnt hlp unstdng.
Показатель экспоненты? Если да, то можно ли это назвать экспонентой? Acrns dnt hlp unstdng.
@jugglinmike ^^
@mikemaccana Это было задумано, да. Время для «нестабильной» поддержки оператора возведения в степень уже прошло (оно будет доступно через esversion: 7
в следующем второстепенном выпуске), поэтому мы никогда не увидим реализации этой конкретной опции. Однако ваш совет хорошо слышат, так что спасибо!
На данный момент наиболее элегантным решением является поиск и замена async
на /* async */
и наоборот, если вы выполняете проверку через веб-сайт JSHint.
@patrickdark Это частичный обходной путь для gh-2604, но, к сожалению, он не учитывает AwaitExpressions.
Самый полезный комментарий
async
иawait
теперь доступны в Node 7.6. Есть новости по этому поводу?