URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 109722
[ Назад ]

Исходное сообщение
"Выход фреймворка для построения пользовательских интерфейсов..."

Отправлено opennews , 23-Ноя-16 17:44 
Вышла (https://gist.github.com/yyx990803/faebe22e8763f5b17572b35ed9...) новая версия Vue.js (https://vuejs.org/), JavaScript-фреймворка для построения пользовательских интерфейсов. Vue.js использует декларативное описание интерфейса и MVC-подобный паттерн, аналогично фреймворкам React и Angular. Фреймворк примечателен  низким порогом вхождения (достаточно знать HTML, CSS и JavaScript), компактным ядром (17 Кб+Runtime), расширяемостью для проектов любого масштаба, обеспечением высокой производительности без необходимости внесения в приложения дополнительных оптимизаций, гибкой системой применения эффектов. Код проекта распространяется (https://github.com/vuejs/vue) под лицензией MIT.

Основные  новшества (https://gist.github.com/yyx990803/faebe22e8763f5b17572b35ed9...):


-   Scoped Slots: До версии 2.1 родительский шаблон мог внедрять свой HTML-контент во встраиваемый компонент (посредством тега "slot"
в шаблоне встраиваемого компонента), но при этом у родителя не было доступа к текущим данным встраиваемого компонента для непосредственной подстановки их во внедряемый контент. Таким образом, внедряемый контент мог динамически отрисовываться, опираясь лишь на данные родителя. Теперь же дочерний/встраиваемый компонент может напрямую передавать свои данные/состояние родителю при внедрении контента последним, чтобы родитель мог их декларативно подставить во внедряемый им динамический шаблон;

-   Добавлена директива v-else-if (в дополнение к имеющимся v-if и v-else);
-   Фильтры теперь могут использоваться также и внутри выражений в директиве v-bind (помимо использования их при стандартной подстановке текста в шаблон). Например, ‹img v-bind:src="imgSrc | formatURL">

URL: https://gist.github.com/yyx990803/faebe22e8763f5b17572b35ed9...
Новость: http://www.opennet.me/opennews/art.shtml?num=45546


Содержание

Сообщения в этом обсуждении
"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Жека Мутный , 23-Ноя-16 17:44 
За Vue будущее. Скриньте.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено th3m3 , 23-Ноя-16 19:27 
Почему? Чем он лучше react?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 19:39 
> Почему? Чем он лучше react?

Будущее в JavaScript не за тем, что лучше, а за тем, что новее. Вспомним jQuery, ExtJS, Angular, потом ваш React, теперь вот Vue. Через год ещё что-нибудь появится, что отправит Vue в историю.


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено абвгдейка , 23-Ноя-16 19:48 
будущее в перемешке верстки и логики? Очередной г-нолисипед. Скринь :)

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 14:52 
А в HTML по другому вообще особо не получается. Как в этом крапе сделать реюзабельный "виджет"? Чтобы и логика и верстка и все вместе - реюзабельный компонент, который подключить вот тут, а вон там - три инстанса с разными параметрами?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено абвгдейка , 24-Ноя-16 22:52 
всё получается, просто поработать надо. Зато потом поддерживается на раз-два. А с этим мусором потом трястись, как с девушкой:)

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Очередной аноним , 24-Ноя-16 10:33 
> Фреймворк примечателен низким порогом вхождения

Это из-за этого? В смысле, Вы только его и осилили или что все-все-все подрастающие веб-девелоперы обязательно начнут с него и потом не слезут?


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 14:53 
> Это из-за этого? В смысле, Вы только его и осилили или что
> все-все-все подрастающие веб-девелоперы обязательно начнут с него и потом не слезут?

Можно было просто написать: "специально для вебмакак".



"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 17:47 
>Фреймворк примечателен низким порогом вхождения (достаточно знать HTML, CSS и JavaScript)
>достаточно знать HTML, CSS и JavaScript

Т.е. для React и Angular знания HTML, CSS и JavaScript недостаточны?


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Михаил , 23-Ноя-16 17:54 
Для Angular надо ещё знать технику Dependency Injection

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено KonstantinB , 24-Ноя-16 18:14 
Сложная вещь, да, два года изучать минимум!

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 17:54 
Для Vue достаточно, скажем так, базовых знаний web-стека, а у Ангуляра/Реакта требования покруче будут, например большинство примеров по Реакту используют JS-2015.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено piteri , 23-Ноя-16 20:20 
Да, естественно, для того чтобы писать на ангуляре придется изучить птичий язык ангуляра и научиться угадывать места ошибок по внешним проявлениям, для реакта - хорошо изучить логику его работы чтобы не втыкаться в постоянные тормоза.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Андрей , 23-Ноя-16 18:24 
А есть туториалы, как разрабатывать GUI на подобных js-фреймворках и встраивать их в код на C/C++/Go для привыкших писать на C/GTK, C++/Qt, Go/-?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 19:20 
Есть же QML/Qt-Quick, зачем вам с собой целый браузер встраивать?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Андрей , 23-Ноя-16 19:39 
Браузер встраиваться не будет, а будет коннектиться или с localhost, или удалённо к консольному приложению, которое отдаёт этот html/css/js по HTTP, если я правильно понимаю. Учитывая, что OpenGL в браузере летает, думаю, обычный GUI тоже мог бы не тормозить, если с умом спроектирован. Вот только есть ли такие? (Из коммерческих недавно мне sciter попался на глаза, якобы с умом, но не пробовал.)

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 19:56 
Так тогда это обычное web-приложение будет (SPA - single page application). Не вижу никаких проблем - берете любой знакомый язык (всякие изначально web-ориентированые, типа Go/NodeJS будут предпочтительнее) и фигачите на нём RESTful API через которое будет происходить общение с Javascript web-мордой.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Андрей , 24-Ноя-16 01:11 
Тем, кто занимается web'ом, всё ясно. Вопрос как раз в том, есть ли туториалы про SPA не для новичков в программировании, а для тех, кому привычна не web-разработка. С RESTful API первый же вопрос: пока структуры простые (текст), всё ясно, в JSON замечательно читаются. А как только там появляются указатели, что тогда? А с js web-морда как в отличие от дизайна в Glade или QtDesigner/QtCreator, или создание виджетов вручную: новое окно, новая панель, упаковать панель в окно, новый горизонтальный бокс, упаковать бокс в панель, новый лэйбл, упаковать лэйбл в бокс и т.д., потом колбэки? А как с TreeView? С 1000 записями он даже в Gtk подтормаживает.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 13:04 
В любом случае, обязательно потребуются базовые знания JavaScript/HTML/CSS (без этого, ну никак), а дальше уже JavaScript MVC-фреймворк какой-нибудь(для удобства разработки SPA). Приложение, по сути, будет толстым web-клиентом, т.е. весь код отображения и взаимодействия с пользователем будет на JavaScript/HTML/CSS, а к серверной части будут лишь обращения, навроде: "запиши эту строку в БД", "отыщи значение в БД по такому ключу", "передай мне jpg/pdf/etc файл такой-то". Никаких указателей в JavaScript нет, а если бы и были, то как ссылаться на область памяти на сервере?! Если это что-то на WebGL, то все текстуры нужно будет сперва подгружать в браузер с сервера как внешние ресурсы. Непосредственно видимый интерфейс конструируется на HTML/CSS вручную (WYSIWYG инструментов навроде Glade или QtDesigner/QtCreator по факту нет, если не считать таковыми продукты от Adobe сомнительной полезности). Окошки и виджеты создаём/компонуем или вручную на HTML/CSS или есть куча библиотек и CSS-фреймворков с готовыми виджетами (навроде Bootstrap). Упаковка всего этого добра идет как правило декларативно на HTML. 1000 записей в браузер засунуть можно, но надо ли? Для таких случаев ленивую подгрузку используют, по мере обращения пользователя.
Кроме того на GTK/QT вроде как были проекты по созданию html-backend'ов т.е. обычное приложение, написанное полностью на С++/GTK/QT транслируется специальным бекендом-сервером в веб как просто слоёный набор картинок (некое подобие RDP/VNC протокола, только для браузера) - тогда JavaScript/HTML/CSS вообще знать не обязательно, но по моему все эти проекты так и загнулись.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Андрей , 24-Ноя-16 23:50 
> к серверной части будут лишь обращения, навроде ... Никаких указателей в JavaScript нет, а если бы и были, то как ссылаться на область памяти на сервере?!

Меня интересует hello world на примере простого векторного редактора. Т.е. есть примитивы: точка, линия, прямоугольник, эллипс, кривые Безье. Их рисуешь, группируешь. А вот тут и появляются указатели и вопрос, как принято такое разруливать. По идее через RESTful можно гонять указатели, с которыми в js обращаться как с opaque.

> Окошки и виджеты создаём/компонуем или вручную на HTML/CSS или есть куча библиотек

Так хотелось бы, чтобы виджеты выглядели более менее десктопно. Пока не наткнулся ни на что подобное. Кстати, там в Vue.js есть как раз пример TreeView. М-да... Gtk2 выглядит, как известно просто, но в этом и прелесть. А вот в Vue оно выглядит ну так просто, что совсем неюзабельно. Т.е. нет колонок, нет разных типов виджетов, которые можно туда поместить. И нет контекстного меню, без которого совсем никуда. Интересно, есть ли более реальные примеры TreeView.

> 1000 записей в браузер засунуть можно, но надо ли? Для таких случаев ленивую подгрузку используют, по мере обращения пользователя.

Так это же не много. Их можно в миг проскроллить. Ленивая загрузка - это тоже вариант. В почтовом клиенте Trojita на Qt так сделана загрузка заголовков email'ов. Пока пользователь их не видит, нечего и времени тратить на их загрузку. Клиент сразу готов к выполнению нужных действий.

> Кроме того на GTK/QT вроде как были проекты по созданию html-backend'ов

Да, сам собирал Qt под Emscripten. В браузере отъедало кучу памяти и было в каком-то мини-оконном режиме. Загнулось, хотя Emscripten, asm.js, web assembly живут и здравствуют. Про другие backend'ы в самом Qt не слышал. А в Gtk3 есть broadway. Классная вещь! Но как вы верно подметили, там быстро гоняются картинки. Создать такой себе Xserver но для браузера не вышло. И развитие, когда я последний раз смотрел, прекратилось. Очень жаль. Надеюсь, хотя бы не выкинут, ведь им реально можно пользоваться!


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Rodegast , 24-Ноя-16 16:44 
Ты уверен что тебе веб-интерфейс нужен? Делай нормальный и не мучайся.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Андрей , 24-Ноя-16 23:53 
Нормальные я делаю. Вот думал, что раз для Go так ничего традиционного и не выходит, то можно было бы попробовать что-то на web. Но только если это не раздутый фреймворк.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Rodegast , 25-Ноя-16 10:55 
Так этому Go без году неделя. Подожди ещё выйдет (если конечно язык стоящий). А без раздутых Js фреймворков на web ничего толкового всё равно не сделать. С фреймворками сделать в принципе можно, но нормальный GUI порвёт эту web-морду как Тузик.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено h31 , 23-Ноя-16 18:25 
Народ, подскажите.
Мне нужно забрать AJAX-ом JSON с нужными данными и запихнуть их в HTML/DOM в указанные места. Никакой обработки, просто взять и подставить по шаблону. Как это проще всего сделать? Желательно без погружения в глубины JavaScript-а и сложных фреймворков для него. В идеале хочется просто указать - брать по такому-то URL, из такого поля и подставить вот сюда.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Илья , 23-Ноя-16 18:37 
jquery

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено h31 , 23-Ноя-16 19:09 
В первую очередь как раз про него вспомнил. Может есть что-нибудь более современное, более декоративное?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Василий Топоров , 23-Ноя-16 20:55 
Вам нужна простенькая обвязка над xmlHttpRequest и нативные методы js для вставки контента в DOM. Тащить для этого Jquery с кучей лишнего не нужно. Если нужно "совеременное и декоративное", то просто пишите в ES-6 стиле (https://learn.javascript.ru/es-modern).

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 15:14 
> Если нужно "совеременное и декоративное", то просто пишите в ES-6
> стиле (https://learn.javascript.ru/es-modern).

А потом зайдите на caniuse.com и узнайте что каждый десятый юзер будет за это грызть мозг.


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 19:11 
Можно и с помощью Vue - там удобство по сравнению с JQuery в том, что HTML-шаблон будет красивый, в простейшем случае: <td> {{my_variable}} </td>

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Мимокрокодил , 23-Ноя-16 20:06 
ванильный js будет в самый раз, библиотеки для этого не нужны

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Антон , 24-Ноя-16 09:12 
простой пример с jQuery без обработки ошибок:

$.getJSON( "http://api.site.com/example.json", function(data) {
  $(".container").text(data.key);         /* <div class="container">Value</data> */
});

---------------
example.json:

{
"key":"Value"
}


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 15:10 
> шаблону. Как это проще всего сделать? Желательно без погружения в глубины
> JavaScript-а и сложных фреймворков для него.

Тогда просто пометить нужные куски HTML-я при помощи id="something" и далее делаешь XMLHttpRequest, парсишь как тебе там надо, получаешь интересовавший кусок чем-то типа document.getElementById("something") и на этом например .innerHTML="что ты там хотел". В элемент с id="label" запишется "что ты там хотел" как содержимое элемента.

Если хочется чтобы симпатично выглядело - глянь на bootstrap. Чтобы самому не бодаться с всяким там выравниванием и адаптивом и прочим изобретением всяких там прогрессбаров и т.п. самому. Этого вообще осваивать не требуется почти. Как написал какой-то китаец, "теперь кто угодно может делать вабстранички".


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 17:26 
riot.js можете ещё глянуть.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено KonstantinB , 24-Ноя-16 18:18 
JSON забрать - ручками на XMLHttpRequest не проблема. Можно взять fetch-полифилл https://github.github.io/fetch/

Засунуть - можно ручками повертеть DOM, можно взять какой-нибудь handlebarsjs в качестве шаблонизатора.


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 18:36 
Советую также посмотреть на mithril.js

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 21:20 
Чего-то не смог найти mithril на https://stats.js.org/, очень странно, вроде проект относительно известный, не верю что он хотя бы в JS-top500 на гитхабе не вхож.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Sunderland93 , 23-Ноя-16 19:14 
Где можно посмотреть примеры?

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 23-Ноя-16 19:23 
Вот здесь примеры простых приложений:
https://vuejs.org/v2/examples/

А здесь туториал:
https://vuejs.org/v2/guide/

На русский вроде тоже активно переводят вторую версию туториала, но перевод, честно говоря, так себе.


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено menangen , 24-Ноя-16 00:16 
Из малоизвезстных, но прикольных проектов есть ещё Cash.js, Riot.js, Zepto.js

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 04:55 
Также можно отметить что Gitlab выбрал Vuejs https://about.gitlab.com/2016/10/20/why-we-chose-vue/

И несколько проектов для построения UI на Vuejs:
— Bootstrap + Vuejs http://yuche.github.io/vue-strap/
— Element http://element.eleme.io/#/en-US
— Weex (от Alibaba) https://alibaba.github.io/weex/


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Ан , 24-Ноя-16 07:31 
Это ни чего не означает. Я вот вижу что Vue.js использует в синтаксисе шаблонов очередной мета-язык, как и в Angular или Ember. А вот React ни чего такого изобретать не стал и пишешь на чистом JS ну с примесью JSX, хотя это только ширма, под ней скрывается тоже чистый JS. И это я считаю преимущество перед ними всеми, не надо учить очередной синтаксис очередного проходного фреймворка.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено KonstantinB , 24-Ноя-16 19:15 
JSX, как будто, не очередной синтаксис.

Если уж быть таким пуристом, то надо писать без JSX, ручками - React.createElement('div', {}, и так далее).

Посмотрю, надолго ли вас хватит :)


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Ан , 25-Ноя-16 07:36 
Ну JSX сродни HTML и особых усилий прилагать в изучении его не надо. А вот синтаксис управляющих инструкций в шаблонах каждого нового фреймворка учить, да нах... это надо. К тому же используя нативный JS можно использоваться различные подходы к написанию кода шаблона, либо в классическом стиле, либо в стиле FP, либо как ещё душе угодно. А в других фреймворках, которые вводят свой определённый синтаксис управляющих инструкций, ты уж извини ты только ограничен фантазией разработчиков фреймворка.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Ан , 25-Ноя-16 07:46 
> Ну JSX сродни HTML и особых усилий прилагать в изучении его не
> надо. А вот синтаксис управляющих инструкций в шаблонах каждого нового фреймворка
> учить, да нах... это надо. К тому же используя нативный JS
> можно использоваться различные подходы к написанию кода шаблона, либо в классическом
> стиле, либо в стиле FP, либо как ещё душе угодно. А
> в других фреймворках, которые вводят свой определённый синтаксис управляющих инструкций,
> ты уж извини ты только ограничен фантазией разработчиков фреймворка.

К тому же щас новая версия движка Virtual DOM создаётся, не имеющая аналогов в других подобных фреймворках. Преимущество в том что ты можешь планировать обновления DOM-а, например чтобы в момент работы анимаций и предстоящего обновления DOM-а, оно не помешало работе анимации и соответственно видимых фризов. Если есть желание можно почитать здесь:
https://github.com/timarney/react-faq#react-fiber


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 15:16 
> Также можно отметить что Gitlab выбрал Vuejs

Не в обиду, но гитлаб всегда отличался юзабилити своего гуя на уровне плинтуса, поэтому считать это рекламой либы - ну не знаю. Скорее антирекламой.


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 25-Ноя-16 03:15 
> гитлаб всегда отличался юзабилити своего гуя на уровне плинтуса

Может сейчас за голову возьмутся? :-)


"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено blackst0ne , 25-Ноя-16 05:55 
Можете привести более конкретные примеры проблем с UX гитлаба?
Сам им пользуюсь. Может быть не обращал внимания на такие проблемы.

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 10:37 
Самая крутая вещь - это famo.us

"Выход фреймворка для построения пользовательских интерфейсов..."
Отправлено Аноним , 24-Ноя-16 15:19 
> Самая крутая вещь - это famo.us

Неведома е...на х...я - это как раз про вот такие сайты. Прямо со стартовой поток маркетингового булшита в три реки.