LINUX.ORG.RU

Qt Quick, QML, JavaScript — вопросы новичка

 , , ,


1

3

Привет.

Сейчас я пишу приложения на NW.JS, но меня многое не устраивает: прожорливость, тормознутость, отсутствие UI-компонентов (все приходится верстать, прикручивать, стилизовать), ненативный вид. Да и вообще в целом веб-приложения работают не так как настольные, что не очень хорошо.

Решил попробовать что-нибудь более вменяемое и на JS. QML и Qt пока больше всего подходит, но появляются вопросы. Помогите на них ответить.

Кто-нибудь вообще пишет на Qt Quck? На гитхабе очень мало чего находится по запросу QML. Очень мало библиотек, JS-библиотеки (CommonJS) не подключить. Хотя например туторов очень много и даже относительно старых.

Подкиньте каких-нибудь библиотек для CRUD приложения через REST API. Неужели надо все писать руками? Хочу работать с REST моделями, создавать объекты, сохранять и чтобы все прозрачно взимодействовало с REST сервером. Хочу фильтрацию данных (прозрачное преобразование формата дат, например), связи между моделями. То ли я не то ищу, то ли это все надо самому писать?

Я бы использовал JS библиотеки (которых очень много на любой вкус), но к QML очень сложно их подключать — JS код должен быть написан особым образом и CommonJS либы не подключаются. Про qml-commonjs знаю — не собирается.

На первый взгляд QML выглядит вкусно, но начинаешь копать глубже и понимаешь что пользоваться этим нереально. Или я что-то делаю не так? Может есть другие вменяемые варианты? Другой язык?

★★★★

Последнее исправление: Black_Roland (всего исправлений: 2)

NW.JS ... прожорливость, тормознутость

Ты про node-webkit? Я когда то писал на нем небольшую программулину — поиск по телефонной базе предприятия, тормоза там точно такие же как в хроме, не больше и не меньше.

javaQest
()
Ответ на: комментарий от javaQest

Ты про node-webkit?

Да, они переименовались.

Я когда то писал на нем небольшую программулину — поиск по телефонной базе предприятия, тормоза там точно такие же как в хроме, не больше и не меньше.

Работает то и правда быстро, но стартует очень долго, в памяти и на диске очень много места занимает. Причем за год размер бинаря в 2 раза увеличился. Qt Quick тоже не маленький, но гораздо меньше. Ну и UI компоненты есть и дизайнер (хотя дизайнер так себе), и выглядит нативно.

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 1)

Хочу работать с REST моделями, создавать объекты, сохранять и чтобы все прозрачно взимодействовало с REST сервером.

Прозрачно это new XMLHttpRequest(). Если хочешь магию то гугли c++ rest client library и заворачивай в компонент. Ну или может кто-то уже это сделал.

Хочу фильтрацию данных

Что это?

связи между моделями

Что это?

То ли я не то ищу, то ли это все надо самому писать?

Видимо да. Я не профи в QML, вторую неделю по вечерам клепаю себе приложенице для телефона. Ты видимо хочешь «писать всё на жаваскрипте», ну многое можно сделать если постараться, но я бы не закладывался на то, что можно будет сделать что-то сильно крупное.

ya-betmen ★★★★★
()

Подкиньте каких-нибудь библиотек для CRUD приложения через REST API.

это делается в 40-70 строк на XHR/JSON.*
чтобы преобразовывать данные надо знать их схему. опять-таки пишется не сложно. Разбавить QuickPromise по вкусу (работает, но капитально портит бэктрейсы, чем выбешивает)
вывод - лучше написать самому. я уже писал, но до публикации там еще далековато (планируется вывалить под MIT)
также удручает необходимость дополнительных описаний для двухстороннего биндинга.

Я бы использовал JS библиотеки

sad but true - JS в Qt как инструмент, но не основа, библиотек особо не притянешь.
не забываем, что на iOS JS интерпретируется, поэтому тяжелое лучше в С++

На первый взгляд QML выглядит вкусно, но начинаешь копать глубже и понимаешь что пользоваться этим нереально

ххх, Как сделать кнопку опций наверху?
QML далек от серебряной пули, надо располагать временем и терпением.
Как награда - win, winrt, linux, bsd, macos, ios, android, blackberry + пара маргинальщины достигается при помощи небольшого напильника.

dib2 ★★★★★
()

Главная фишка QML — интеграция с Qt/C++, ИМХО. Так что обычно используют не библиотеки js, а библиотеки c++.

fluorite ★★★★★
()
Ответ на: комментарий от ya-betmen

Прозрачно это new XMLHttpRequest()

Очень много писать.

Если хочешь магию то гугли c++ rest client library и заворачивай в компонент

Хочу, но гуглить не умею :(

Что это?

Например: https://github.com/platanus/angular-restmod#relations https://github.com/platanus/angular-restmod#serialization-masking-and-default...

Ты видимо хочешь «писать всё на жаваскрипте», ну многое можно сделать если постараться, но я бы не закладывался на то, что можно будет сделать что-то сильно крупное.

Свой код на JS хочу писать. Либы все равно на чем.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от dib2

это делается в 40-70 строк на XHR/JSON.*

Выше я уже приводил пример библиотеки для Angular. Нужный мне функционал занимает 4000 строк. Самому мне лень столько писать.

sad but true - JS в Qt как инструмент, но не основа, библиотек особо не притянешь.
не забываем, что на iOS JS интерпретируется, поэтому тяжелое лучше в С++

Вот это грустно. С плюсами не хотелось бы возиться. Видимо Qt мне не очень подходит.

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от fluorite

Главная фишка QML — интеграция с Qt/C++, ИМХО. Так что обычно используют не библиотеки js, а библиотеки c++.

Да, похоже Qt тогда не мое. На новом для меня языке (C++) я буду писать медленно и говнокод. И статическая типизация не мне не нравится.

А что на счет прикручивания других языков? Ruby?

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от Black_Roland

Очень много писать.

Если для тебя пол сотни строк это много то я хз как тебе быть.

Например

Кошмар, мрак, какой-то inline-orm-over-rest + преобразование дат в каком-то потустороннем месте. Но я понял что ты делаешь не так. Думаю тебе стоит немного научиться программировать. Начать с чего нибудь попроще Qt, хотя бы с того же жаваскрипта.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Думаю тебе стоит немного научиться программировать

То есть для тебя умение программировать это изобретать велосипеды и писать и поддерживать кучу кода?

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от Black_Roland

То есть для тебя умение программировать это изобретать велосипеды и писать и поддерживать кучу кода?

И каким чудесным образом из моих слов можно было сделать такой вывод?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

И каким чудесным образом из моих слов можно было сделать такой вывод?

Тут я скорее всего с предыдущим оратором спутал, простите.

Встречный вопрос:

Думаю тебе стоит немного научиться программировать

И с чего был сделан вывод что я не умею программировать? Особенно интересно как это связано с angular-restmod.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от dib2

Ну ладно, может и не 4000, тем более там много комментариев. Но я ленивый, и получается что Qt Quick для меня ничем не проще NW.JS — экономлю время в одном месте (UI компоненты), но зато трачу его в другом (написание сервисных штук).

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

экономлю время в одном месте (UI компоненты)

это кстати тоже под вопросом.
но зато их производительность можно довести но native-уровня.

dib2 ★★★★★
()

тормознутость

Речь явно о старте, ибо в nw.js v8. Пробовал electron или brackets-shell?

отсутствие UI-компонентов (все приходится верстать, прикручивать, стилизовать)

Так дофига же библиотек. Надо ныть из-за избытка, ибо сложно выбрать.

ненативный вид

Тоже есть библиотеки, гугли лучше.

loyd
()
Ответ на: комментарий от loyd

Речь явно о старте, ибо в nw.js v8

Да, именно.

Пробовал electron или brackets-shell?

С Qt походу не срослось, буду на Electron переходить. Хотя те же яйца.

Так дофига же библиотек. Надо ныть из-за избытка, ибо сложно выбрать.

Библиотек действительно дофига. Но нет дизайнера, нужно верстать самому, стили править. Я конечно это все умею, но это чертовски неудобно.

Тоже есть библиотеки, гугли лучше.

А что гуглить? О_о Какой-то CSS-фреймворк в стиле GNOME ил Windows?

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

Немного неточно сформулировал, грубовато вышло. Не обижайся, имел в виду опыта поднабраться.

Просто то чего тебе не хватает это костыли для обхода проблем как веб технологий в целом так и ангуляра в частности. Напрашивается мысль, что твой опыт касается не разработки софта а использования нескольких специализированных библиотек и теперь ты хочешь притащить их туда где и без них всё замечательно.

Т.е. программа для тебя это не некий абстрактный отвязаный от ситаксиса алгоритм а вполне конкретный набор вызовов известных тебе библиотек. Соответственно ты не гуглишь способ как решают такие задачи другие, тебе нужны привычные библиотеки и объекты с привычным набором методов. Обычно это связано с недостатком опыта.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 2)
Ответ на: комментарий от Black_Roland

А что ты так беспокоишься о старте? Современный пользователь привык к медленным стартам, это никого обламывать особо не должно. Сейчас мало что из софта быстро стартует, время такое.

javaQest
()
Ответ на: комментарий от javaQest

А что ты так беспокоишься о старте? Современный пользователь привык к медленным стартам, это никого обламывать особо не должно. Сейчас мало что из софта быстро стартует, время такое.

Меня волнует :) А пользователям и бизнесу и правда все равно.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Т.е. программа для тебя это не некий абстрактный отвязаный от ситаксиса алгоритм а вполне конкретный набор вызовов известных тебе библиотек. Соответственно ты не гуглишь способ как решают такие задачи другие, тебе нужны привычные библиотеки и объекты с привычным набором методов. Обычно это связано с недостатком опыта.

Мне нужно быстро писать код. У меня обычное СRUD приложение с привязкой к REST API. Нет тут никаких алгоритмов, это элементарщина.

Как это решают другие я гуглил: XMLHttpRequest. Придется брать напильник, чтобы этим было удобно пользоваться. Но зачем велосипедить? Работа с REST не такая уж редкая задача, вполне логично что я хочу найти что-то уже готовое для облегчения страданий при работе с REST.

У меня достаточно опыта, чтобы не тратить время зря и пользоваться готовыми наработками.

UPD. Ну и от QML я ожидал возможности писать код на JS, не касаясь плюсов. К сожалению это нереально.

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

что-то уже готовое для облегчения страданий при работе с REST.

Может просто выкинуть рест?

Ну и от QML я ожидал возможности писать код на JS, не касаясь плюсов. К сожалению это нереально.

Зависит от того какой код.

ya-betmen ★★★★★
()
Ответ на: комментарий от Black_Roland

А что гуглить? О_о Какой-то CSS-фреймворк в стиле GNOME ил Windows?

Используй просто material для bootstrap. Не нативно, но везде одинаково и симпатичной.

holuiitipun
()
Ответ на: комментарий от Black_Roland

Но нет дизайнера, нужно верстать самому, стили править

А ты — программист мышкой?

О_о Какой-то CSS-фреймворк в стиле GNOME ил Windows?

Ну есть и с закосами, тот же metroui, но точно были и подстраивающиеся. Но, имхо, сила css именно в оригинальном оформлении, если нужен натив и классически дизайн, то ты смотришь не туда.

loyd
()
Ответ на: комментарий от Black_Roland

А что, прикрутить к qt v8 очень сложно? И запустить под v8 какой-нибудь dojo/jquery... Есть, вроде, и другие js движки. Можно прикрутить руби или питон, пару вечеров посидеть, пописать код на питоне + врапер на c++.

menangen ★★★★★
()
Ответ на: комментарий от loyd

А ты — программист мышкой?

Неа. Дизайнер для накидывания компонентов, а не для программирония. Удобно же, особенно когда есть готовые компоненты.

Black_Roland ★★★★
() автор топика
Ответ на: комментарий от menangen

А что, прикрутить к qt v8 очень сложно?

Есть какие-то непопулярные, недописанные, неподдерживаемые, неудобные нерабочие, биндинги. Так что сложно.

Можно прикрутить руби или питон, пару вечеров посидеть, пописать код на питоне + врапер на c++.

С рубями тоже как-то все не очень хорошо.

А питона не знаю совсем, надо учиться. Правда я и руби не знаю, но там как-то все просто.

Black_Roland ★★★★
() автор топика
Последнее исправление: Black_Roland (всего исправлений: 2)
Ответ на: комментарий от menangen

Да язык с руби побратим, только синтаксически проще.

Ни хрена подобного. В руби Ъ-ООП, пистон отсосет. Он ближе к жабе чем к руби.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.