Size: a a a

Elm Lang сообщество разработчиков

2017 September 19

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
Roman Salnikov
Когда у тебя крашится приложение, в котором есть и elm, и js, ты с 99% уверенностью знаешь, что дело не в Elm
если бы динамический вызов  js возвращал Result, можно  было бы проверить и сделать Debug.crash в случае ошибки.
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
а там есть линтинг, go to definition и error highlighting ?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Pawel Filimonenkow
== _насколько возможно_ JS изолирован

проясни пожалуйста что ты понимаешь под изолированностью в данном случае, если сам признал, что вызов js может привести к краху. Что -то вроде мешка с обезьяной с грантами?
если ты аккуратно пишешь программу на JS, то расставляешь try/catch и ловишь ошибки в промисах. на этот случай ты можешь завести хоть один порт, хоть несколько, и сообщать в Elm, что что-то конкретно не срослось. Если ты ошибся в синтаксисе или где-то появилась зарейзилась неперехваченная ошибка, Elm об этом думать не должен.

Вызывая JS-функции в Elm напрямую (ты говоришь, что хочешь конвертации JS-объектов туда и обратно) ты потенциально можешь нарушить flow модели, изменить модель или не перехватить ошибку, инструмент портов вынуждает тебя постоянно об этом помнить — что внешний код это внешний код.
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Pawel Filimonenkow
а там есть линтинг, go to definition и error highlighting ?
в плагинах Идеи и VS Code есть всё перечисленное
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Любой прямой вызов js из эльма автоматически ставит крест на чистоте функций. А это означает усложнение тестирования и тд.
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Roman Salnikov
Любой прямой вызов js из эльма автоматически ставит крест на чистоте функций. А это означает усложнение тестирования и тд.
именно
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Интероп конечно многословный, мягко скажем. Но это плата за гарантии в основном коде приложения.
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
в плагине для vs code нет вообще ничего из перечисленного. В плагине для Идеи нет error highlighting
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
Roman Salnikov
Интероп конечно многословный, мягко скажем. Но это плата за гарантии в основном коде приложения.
не понял здесь. гарантии чего?
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Гарантии отсутствия внезапных сайд-эффектов, например.
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Мы из пустого в порожнее переливаем постоянно. Гарантии понятные и уже не раз обсуждались: корректность программы, явная обработка всех ветвлений, отсутствие мутаций объектов. Что там еще?
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
как же внезапных, если вызов js производится явно? если он может как-то повлиять на работоспособность остальных частей приложения на elm, то какая разница  делает он это при прямом вызове или через порты? или я опять что-то не понял? допустим, для простоты, вызов js изменил текст едитбокса и модель стала неконсистентной. вот в чём разница как этот код будут вызван из elm - я в упор не вижу
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
пиши нативный модуль и вызывай  js напрямую если так хочется
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Pawel Filimonenkow
как же внезапных, если вызов js производится явно? если он может как-то повлиять на работоспособность остальных частей приложения на elm, то какая разница  делает он это при прямом вызове или через порты? или я опять что-то не понял? допустим, для простоты, вызов js изменил текст едитбокса и модель стала неконсистентной. вот в чём разница как этот код будут вызван из elm - я в упор не вижу
Речь про ситуацию, когда ты хочешь получить результат из js, а не мутировать dom с его помощью, например.
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
о, преведкагдила. давно ждал твоего веского мнения. теперь всё стало на вои места и в впоросе поставлена жырная точка.

как я уже говорил, в таких случаях elm я не использую.
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Если одну и ту же dom ноду изменяешь из нескольких мест, ты в любом случае столкнешься с проблемами. Но проблема эта будет уровня "получил не то, что ожидал" и к корректности самой программы не имеет отношения.
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
ты его похоже вообще не используешь, так языком почесать зашёл ) ну ок
источник

RS

Roman Salnikov in Elm Lang сообщество разработчиков
Давайте вы свои личные конфликты будете не здесь решать?
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
Roman Salnikov
Давайте вы свои личные конфликты будете не здесь решать?
да, сорян
чёт забыл уже что с этим чудиком говорить не получается
источник

PF

Pawel Filimonenkow in Elm Lang сообщество разработчиков
Roman Salnikov
Речь про ситуацию, когда ты хочешь получить результат из js, а не мутировать dom с его помощью, например.
мутировать дом - это только один из тысяч вариантов. оправка хттп запроса, что угодно. Просто получить данные от js - это вроде как не побочный эфект даже теоретически.

И в любом случае вызыв js кода, который даже вроде бы ничего не меняет в dom и не шлёт хттп, не факт что не делает что-то ещё. Например, не создат утечки памяти или не затирает какие-то read only куски   в ней.
источник