Дайджест материалов сообщества Svelte (16.01 — 01.02)

    Сегодня мы начинаем делиться с вами наиболее заметными материалами сообщества Svelte. Приятного чтения!
    image


    Мнения



    Руководства



    Аудио / видео



    Ещё больше новостей и ежедневных публикаций в нашем Telegram-канале In Svelte We Trust (подпишись, чтобы не пропустить).


    Всегда рады вашим пожеланиям, исправлениям и ссылкам на материалы для следующего дайджеста!

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 33

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

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

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

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

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

                    0
                    а обычно как это делают? в C++ понятно, можно в строку залезть и символы затереть, а в JS как? Строки ж иммутабельные. Как и в C# и наверное еще много в каких языках.
                      0
                      Никто на JS и не пишет то, что нельзя показывать в памяти дольше чем это нужно. C# есть StringBuilder, он mutable.
                –3
                Мда, ясно понятно.
                  0
                  Это что за ссылка такая? Svelte как бы заставляет вас писать иммутабильно.
                –2

                У Ильи есть хороший Обзор почему светлый так себе.
                https://www.youtube.com/watch?v=0cFoEPhv2II
                Илья Климов, Три истории о Svelte

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

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

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

                    А Svetle. ну мне кажется вот в этой свежей статье недаром предлагается переход на Svetle именно с JQuery. Правда в отличии от JQuery Svetle, судя по описанию, сложно с чем то иным совместить. Или нет?
                      0
                      Про 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 был встраиваемый виджет для сайтов в котором он показать свое умение «совмещаться» в полной мере.
                        –1
                        Рассуждаете

                        Я? Я просто рересказал выступление, рассуждает Илья Климов. Со ссылками на свой удачный опыт (разработка для Юнеско) и чужой неудачный. Я кстати на фоне недавней статьи про «пишем свои комаоненты для 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 не просто проще совместить с чем-то, он практически создан для этого.

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

                          Понял, я и сам на досуге люблю порассуждать на отвлеченные темы. Впрочем в основном о стоительстве.
                    +1
                    У Ильи есть хороший Обзор почему светлый так себе.


                    В этом обзоре Илья обещал три примера как не очень удачно переходили на Svelte с Vue, React и Angular. Но не смог. Ушел в общие темы, заболтался и в общем ничего не рассказал.
                    0
                    В интервью на Full Stack Radio выпуск 129: What's Coming in Vue.js 3.0 создатель Vue Evan You говорил про Svelte. Минута 25 и далее.

                    С замечательным интервьюером они обсуждали, что Vue 3 намного быстрее Vue 2 при компиляции темплейтов. Они обсуждали, что Vue 2 был и так самым быстрым, если не считать Svelte.
                    Интервьюер спросил — вы твитили что Vue 3 будет быстрее Svelte, что можете добавить?
                    На что Evan сказал (26.12 минута):
                    Свелт это еще один пример организации темплейтов ради хорошей производительности. Так как Свелт компилирует темплейт в императивные операции, код который вы генерируете можно выразить буквально так: createElements, AppendElements, UpdateElements. Минус этого подхода — то что отсутсвует понятие виртуального дома, и вы не можете спуститься на нижний уровень и использовать render функции.
                    А Vue 3 будет и быстрым, и даст гибкость использования render функций.


                    Т.е. исходя из этого интервью в Svelte нету render function. Я не спец в Свелт, и не пойму правда ли это, но вдруг кому-нибудь эта информация понадобится при принятии решения о переходе.
                      +1

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

                        0
                        Она нужна если средствами template задача не решается, для нестандартных случаев. И еще ее используют для renderless компонентов.
                          +2

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


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

                            0
                            В моей практике разработки нескольких проектов на Vuejs мне всегда хватало стандартного функционала. Про render functions я только читал, но мне не понадобились. А вот разработчики Vuejs уделяют им большое внимание. Специалисты там хорошие, зря бы не стали какую-нибудь фичу развивать.
                              +1
                              Специалисты там действительно хорошие, но у них есть одна особенность — все тащат в свой фреймворк. Именно поэтому в Vue понамешено столько всевозможных подходов. Собственно, рендер-функции пришли туда очевидно из React. Вы наверное хотите спросить, не потому ли что это фреймворк с «китайскими корнями»? Нет не думаю. Хотя…
                                0
                                Ну давайте не будем тут «китайскими корнями» или «русским корнями» оперировать.
                                  0
                                  Это не более чем шутка. Ее часто шутят по поводу любви авторов Vue к заимствованиям и, к счастью, не я ее автор))
                                    0
                                    Да не шутка это, а метод нечестной полемики. Автор Vue заимствовал не больше автора Svelte, или авторов любого другого фреймворка. Вся индустрия заимствует и развивает, то, что было до нее.

                                    Специалисты там действительно хорошие, но у них есть одна особенность — все тащат в свой фреймворк

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

                                    И шутка похожа на сплетню.

                                      +1
                                      Вы это серьезно? Хотите я вас удивлю? Смотрите пример на 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 части?
                                        0
                                        Или вот еще, копцепция Single File Component и `.vue` файлы, Vue 'этому научился только 2015 году. А если посмотреть сюда, то станет ясно откуда ноги растут.

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


                                        Ваши примеры подтверждают, что автор Vue заимствовал, но не доказывает, что авторы других фреймворков не заимствовали. Я полагаю, что и они росли на коде других. Да и к тому же, ведь добавил же создатель Vue своей изюминки в продукт. Где Ractive.js и где Vue.js звезды на GitHub посмотрите.

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

                                        Вполне.

                                        А как же эпопея с Vue 3 и react-style хуками, которые срочно понадобилось внедрить, хотя они ни разу не похожи на весь предыдущий state-management Vue и по-сути разделили сообщество на 2 части?


                                        «Срочно понадобилось» — это эмоционально окрашенное суждение. Человек предложил такую фичу. О срочной надобности он не заявлял.
                                        «по-сути разделили сообщество». Ну тоже излишне драматизируете, обычное обсуждение. И в сообществе Реакта и в сообществе Ангуляра есть предметы споров. И в svelte такое появится, если он вырастет.
                                          0
                                          Где Ractive.js и где Vue.js звезды на GitHub посмотрите.

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

                                          Вполне.

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

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

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

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

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

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


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

                          +1

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


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

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

                        Only users with full accounts can post comments. Log in, please.