Pull to refresh

Comments 33

Первая же ссылка, сразу в глаза бросается Joy of Mutability. Какая радость, возвращаться обратно от хорошего кода к плохому.

А чем плоха мутабельность?

иммутабельность идет на пару с чистым кодом. Чистый код, т.е. чистые функции, определяются отсутствием сайд-эффектов(в т.ч. мутаций) и отсутствием состояния, т.е. результат функция зависит толко от входных параметров. Если это же перефразировать, то чистые функции не зависят от другого кода и сами не влияют на другой код. Отсюда свойство — чистая функция не может сломаться от изменения в другом коде и другой код не может сломаться при изменении чистой функции. Устойчивость кода к внесению изменений это такой показатель его «хорошести».

Вот только при написании UI требуется зачастую прямо обратное.

Все это прекрасно в теории, но почти не подтверждается практикой. Даже тот самый React, который якобы «рендер функция от состояния», ни разу не чистый.
Это всё, конечно, хорошо для разработчиков. А что насчёт пользователей? Вся это иммутабельность — ширма, чтобы отложить рельную неизбежную мутабельность и чем дольше мы несём чистое состояние — тем сильнее всё это тормозит. Современный веб тому пример.
Как предлагаете удалять важную информацию из памяти если у вас immutable переменные и объекты? Никак.

а обычно как это делают? в C++ понятно, можно в строку залезть и символы затереть, а в JS как? Строки ж иммутабельные. Как и в C# и наверное еще много в каких языках.
Никто на JS и не пишет то, что нельзя показывать в памяти дольше чем это нужно. C# есть StringBuilder, он mutable.
Это что за ссылка такая? Svelte как бы заставляет вас писать иммутабильно.
Вы видимо не внимательно смотрели видео. Несмотря на название, Илья там больше рассказывает про минусы других фреймворков нежели Svelte
Ок, поработаю «Рабиновичем», перескажу. Про Svetle он сказал, что там нет готовых компонентов и нет предпосылок для написания таких реюзабельных компонентов. Поэтому сложные веб-приложения стоит начинать если производительность для вас во главе угла, например планируется активная эксплутация на дешёвых мобильных устройствах. Ещё он похвалил там рендеринг на стороне сервера и отметил весьма пологую кривую обучения. Поругал за переосмысление JS, которое не только делает невозможным использование TypeScript, но сводит с ума любые анализаторы JS, начиная от jslint и до его любимого Flow.

В паре прошлогодних докладов точно, а кажется и в этом, хотя мимоходом, он кстати весьма себе похвалил Angular, который начиная с 8-й версии (по его словам) по степени «магии исчезновения» может уже вполне поспорить со Svetle и поощряет хорошую арзитектуру и создание реюзабельных веб-компонентов. Ну и да, в любом случае производительней React и Vue, поскольку работает с невиртуальным DOM.

В общем, несморя на жуткую кривую обучения и не особо любимый им TS, рекомендовал переходящим во фронтенд разработчикам именно его (послушаю умного человека).

А Svetle. ну мне кажется вот в этой свежей статье недаром предлагается переход на Svetle именно с JQuery. Правда в отличии от JQuery Svetle, судя по описанию, сложно с чем то иным совместить. Или нет?
Про Svetle он сказал, что там нет готовых компонентов и нет предпосылок для написания таких реюзабельных компонентов.

Ну комон, это не проблема Svelte, а проблема любого молодого фреймворка. Рассуждаете как Jquery/AngularJS разработчик в 2013 году по поводу React. Или как React разработчик в 2015 года по поводу Vue. По правде, наоборот предпосылок писать реюзабильные компоненты на Svelte даже больше, потому что они ванильные, а значит потом их можно юзать в любом проекте совместно с любым другим фреймворком. Знаю что многие крупняки даже задумываются писать UI киты именно на Svelte, чтобы не приходилось под каждый фреймворк поддерживать свой набор одних и тех же компонентов.

Ну и конечно, не нужно слепо верить всему и тиражировать слухи и сплетни: github.com/ryanatkn/awesome-svelte-resources

Поругал за переосмысление JS, которое не только делает невозможным использование TypeScript, но сводит с ума любые анализаторы JS, начиная от jslint и до его любимого Flow.

Таким образом можно поругать Angular за ставку на TS для тех, кому нравится CoffeScript и что? Да, Svelte это преимущественно про ES, а не TS, хотя и существуют прероцессоры частично решающие это. На самом деле, пресловутый SvelteScript, о котором так любит упоминать Илья, отличается от JS лишь симантически (не синтаксически) и только в 3-х пунктах:
  • Экспорты из .svelte-файлов являются пропсами компонентов, описываемых в этих файлах
  • Присвоения к переменным могут запускать автоматически обновления DOM или связанных состояний, но только в если это необходимо.
  • Специальной меткой ($:) можно отметить выражения автоматически вычисляемые на основе других состояний.


Опять же все это работает только внутри `.svelte` файлов, которые по-сути и не являются JS файлами, а представляют собой реализацию концепции Single-file component, поэтому вполне могут играть по своим правилам и это очевидно.

Angular, который начиная с 8-й версии (по его словам) по степени «магии исчезновения» может уже вполне поспорить со Svetle

Тут Илья не прав. Angular все равно имеет довольно увесистый Angular Core от которого зависят все компоненты. Svelte позволяет компилировать компоненты как полностью stand-alone.

В общем, несморя на жуткую кривую обучения и не особо любимый им TS, рекомендовал переходящим во фронтенд разработчикам именно его (послушаю умного человека).

Честно говоря глупо вообще сравнивать Angular со Svelte или даже React. Это фреймворки из вообще разных категорий. Angular, Ember и тп — это Application фреймворки, а React, Svelte и Vue — это UI фреймворки.

Нельзя сказать что правильнее юзать app-фреймворки или нет, но когда на проект нужен только UI слой, то angular с его зарегулированностью тут не подойдет.

А Svetle. ну мне кажется вот в этой свежей статье недаром предлагается переход на Svetle именно с JQuery. Правда в отличии от JQuery Svetle, судя по описанию, сложно с чем то иным совместить. Или нет?


Гыг, если уж кого и сравнивать с Jquery, так это React с его компонентами (считай плагинами) на все случае жизни и почти монополией на современном фронтенде.

Как я писал выше и даже давал ссылку, Svelte не просто проще совместить с чем-то, он практически создан для этого. Первый мой проект на Svelte был встраиваемый виджет для сайтов в котором он показать свое умение «совмещаться» в полной мере.
Рассуждаете

Я? Я просто рересказал выступление, рассуждает Илья Климов. Со ссылками на свой удачный опыт (разработка для Юнеско) и чужой неудачный. Я кстати на фоне недавней статьи про «пишем свои комаоненты для Svetle» не понял, почему де Svetle якобы не поощряет их написание.

На самом деле, пресловутый SvelteScript, о котором так любит упоминать Илья, отличается от JS лишь симантически (не синтаксически) и только в 3-х пунктах

Я вообще-то больше плюсовик, сюда поинтересоваться фронтендом зашёл. Так Qt добавляет в C++ столько же, если не меньше. Однако шаблон Qt-шного компонента уже не напишеь (зато видел во времена Qt3 как коллега писал генератор похожих компонентов на Perl). В общем верю, что это не самая большая проблема, но кто-то столкнуться может. И наверное если человек начал со «SvetleScript», то потом для него, возможно, «сюрприз будет». А может и нет.

Гыг, если уж кого и сравнивать с Jquery, так это React с его компонентами

Мой небогатый и древний опыт во фронтенде был как почти без плагинов jquery и даже jqueryUI. Исспользовал эту библиотеку Чисто чтобы дёрнуть DOM-элемент по CSS-селектору (а вообще, я ещё немного помню такназываемый Dynamic HTML с его весьма зачаточным DOMом, времён четвёртого IE и четвёртого же Netscape. И какой «чудесный» фреймворк под IE3-4, NN3-4 спользовал когда-то, вот правда названия уже не скажу).

Как я писал выше и даже давал ссылку, Svelte не просто проще совместить с чем-то, он практически создан для этого.

Спасибо, почитаю.
Я вообще-то больше плюсовик, сюда поинтересоваться фронтендом зашёл.

Понял, я и сам на досуге люблю порассуждать на отвлеченные темы. Впрочем в основном о стоительстве.
UFO just landed and posted this here
UFO just landed and posted this here

Вот только непонятно кому вообще нужна render function сама по себе и почему её отсутствие — это недостаток.

UFO just landed and posted this here

Когда средствами template задача ну совсем вот не решается — я не вижу как поможет render function.


А renderless компоненты в svelte делаются через actions.

UFO just landed and posted this here
Специалисты там действительно хорошие, но у них есть одна особенность — все тащат в свой фреймворк. Именно поэтому в Vue понамешено столько всевозможных подходов. Собственно, рендер-функции пришли туда очевидно из React. Вы наверное хотите спросить, не потому ли что это фреймворк с «китайскими корнями»? Нет не думаю. Хотя…
UFO just landed and posted this here
Это не более чем шутка. Ее часто шутят по поводу любви авторов Vue к заимствованиям и, к счастью, не я ее автор))
UFO just landed and posted this here
Вы это серьезно? Хотите я вас удивлю? Смотрите пример на RactiveJS от автора Svelte (это его предыдущий фреймворк) от 2012 года:

var Profile = Ractive.extend({
  template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
  data: function () {
    return {
      firstName: 'Walter',
      lastName: 'White',
      alias: 'Heisenberg'
    };
  },
  computed: {
    ...
  }
})


А теперь, если вы замените Ractive на Vue и получаем VueJS версии 1 (2014 год).

Или вот еще, копцепция Single File Component и `.vue` файлы, Vue 'этому научился только 2015 году. А если посмотреть сюда, то станет ясно откуда ноги растут.

Мы в свое время с Ractive на Vue пересели только по причине увидительного сходства.

И тут опять нестыковочка. Нету такой особенности. В нем все компактно и лишнего ничего нету.

По вашему 4 совершенно разных способа создать компонент и 3 способа навесить обработчик события — это компактно?

А как же эпопея с Vue 3 и react-style хуками, которые срочно понадобилось внедрить, хотя они ни разу не похожи на весь предыдущий state-management Vue и по-сути разделили сообщество на 2 части?
UFO just landed and posted this here
Где Ractive.js и где Vue.js звезды на GitHub посмотрите.

Есть такая фраза в среде стартапов: «Innovators must die». Собственно автор Ractive и Svelte не очень умеет пиарить свои разработки. Сообщество Ractive в свое время не смогло громко заявить о себе, поэтому развитие застопорилось + во времена повального jquery, идеи Ractive были слишком новаторскими, а бюджетов фейсбука не было. Многие из сообщества в итоге переехали на Svelte и теперь не хотят теперь повторять ошибок.

Вполне.

No comments. Мое мнение — плохо когда есть радикально разные способы сделать одно и тоже.

О срочной надобности он не заявлял.

Впиливать во фреймворк, в котором система управления стейтом итак довольно хороша, совершенно чуждую ему систему, потому что она появилась в другом фреймворке и называется «тащить все подряд». Во Vue 2 были и более кривые вещи, нежели управление состоянием и не было никакой необходимости внедрять хуки.

Ну тоже излишне драматизируете, обычное обсуждение.

А вы, как мне кажется, недостаточно. Лично знаю людей, которые перешли или в процессе перехода на Svelte именно из-за Vue 3 и конфликтов вокруг него.

Они развивают эту фичу ради JSX, а JSX нужен ради возможностей статической типизации (его typescript понимает, в отличии от шаблонов). Других причин переходить с удобных шаблонов на что-то ещё я придумать не могу.


Но сами по себе render functions полезной фичей не являются, это просто отличительная особенность. Вроде того, что в слове "svelte" нет буквы "u".

А вот эта фраза меня так вовсе веселит:


Минус этого подхода — то что отсутствует понятие виртуального дома, и вы не можете спуститься на нижний уровень

Svelte, вообще-то, даёт возможность спуститься ещё ниже...

Sign up to leave a comment.

Articles