MVVM (Model-View-ViewModel) — это классическая модель разделения пользовательского интерфейса и бизнес-логики.
Преимущества разделения пользовательского интерфейса и бизнес-логики:
Преимущества MVVM по сравнению с MVP и MVC:
Основные идеи MVVM:
AWTK-MVVM — это набор MVVM-фреймворков, написанных на C и поддерживающих различные языки сценариев, разработанный для AWTK. Он реализует базовые функции, такие как связывание данных, связывание команд и навигацию по окнам. При использовании AWTK-MVVM для разработки приложений нет необходимости изучать API AWTK — достаточно изучить правила связывания и способы реализации Model. В отличие от других MVVM-фреймворков, AWTK-MVVM имеет следующие особенности:* Меньший объем кода.
В этом документе используется Linux/MacOS в качестве примера. Для Windows могут быть небольшие различия, поэтому используйте его с осторожностью.
git clone https://github.com/zlgopen/awtk.git
cd awtk
scons
awtk и awtk-mvvm должны находиться в одной директории.
git clone https://github.com/zlgopen/awtk-mvvm.git
cd awtk-mvvm
git clone https://github.com/jerryscript-project/jerryscript.git 3rd/jerryscript/jerryscript
cd 3rd/jerryscript/jerryscript
git reset --hard 3737a28eafd580a2bee2794e4f5edd0c0471a0c6
Текущая версия jerryscript, совместимая с awtk-mvvm, имеет SHA-1 3737a28eafd580a2bee2794e4f5edd0c0471a0c6. Если обновить jerryscript до последней версии, могут возникнуть проблемы совместимости.
python ./scripts/update_res.py all
scons
Полный список параметров командной строки можно получить с помощью следующей команды:
scons help
scons LINUX_FB=true
./bin/demo1
```* Важные замечания## Четвертая глава. Документация
* [Введение](docs/8.intro.md)
* [Метод реализации Model](docs/9.model.md)
* [Привязка данных](docs/10.data_binding.md)
* [Привязка команд](docs/11.command_binding.md)
* [Навигатор окон](docs/12.navigate.md)
* [Реализация Model на JS](docs/13.js_model.md)
* [Продвинутые методы использования](docs/14.advance_usages.md)
* [MVVM для системной конфигурации (без необходимости писать код)](docs/15.app_conf.md)
* [Отключение JavaScript](docs/how_to_disable_js.md)
* [Перенос MVVM на STM32](https://github.com/zlgopen/awtk-stm32h743iitx-mvvm/blob/master/docs/stm32h743iitx_port.md)## Пятая глава. Примеры* Основной пример | C DEMO | JS DEMO | CPP DEMO | Описание |
| ------ | -------- | --------- | -------------------------------------------------------------- |
| demo1 | jsdemo1 | cppdemo1 | Основы связывания данных |
| demo2 | jsdemo2 | cppdemo2 | Использование параметра trigger |
| demo3 | jsdemo3 | cppdemo3 | Использование параметра converter |
| demo4 | jsdemo4 | cppdemo4 | Использование явного обновления (Trigger=Explicit) |
| demo5 | jsdemo5 | cppdemo5 | Использование параметра validator |
| demo6 | jsdemo6 | cppdemo6 | Основы связывания команд |
| demo7 | jsdemo7 | cppdemo7 | Комбинированный пример использования с использованием калькулятора |
| demo8 | jsdemo8 | cppdemo8 | Комбинированный пример использования с использованием редактирования формы |
| demo9 | jsdemo9 | cppdemo9 | Основы использования нескольких окон |
| demo10 | jsdemo10 | cppdemo10 | Основы использования таймера |
| demo11 | jsdemo11 | cppdemo11 | Использование одного представления для нескольких объектов ViewModel |
| demo12 | jsdemo12 | cppdemo12 | Передача параметров между несколькими окнами |
| demo13 | jsdemo13 | cppdemo13 | Основы рендеринга списка (v-for) |
| demo14 | jsdemo14 | (no) | Основы использования горячих клавиш |
| demo15 | jsdemo15 | (no) | Связывание данных ComboBox |
| demo16 | jsdemo16 | (no) | Динамическое изменение интерфейса | | demo17 | jsdemo17 | (no) | Управление видимостью элементов управления |
| demo18 | jsdemo18 | (no) | Методы представления сложных значений атрибутов |
| demo19 | jsdemo19 | (no) | Управление запуском и остановкой анимации |
| demo20 | (no) | (no) | Чтение данных через последовательный порт |
| demo21 | (no) | (no) | Основы использования настроек операционной системы (без необходимости писать код) |
| demo22 | (no) | (no) | Основы использования настроек операционной системы через под-модель (без необходимости писать код) |
| demo23 | (no) | (no) | Динамическое системное настроить (без необходимости писать код) |
| demo24 | (no) | (no) | Сложные системные настройки (без необходимости писать код) |
| demo25 | (no) | (no) | Системные настройки CRUD (без необходимости писать код) |
| demo26 | (no) | (no) | Применение конфигурации |
| demo27 | (no) | (no) | Комбинированный view model |
| demo28 | (no) | (no) | Комбинированные выражения |
| demo29 | (no) | (no) | Команды для расширения app_conf |
| demo30 | (no) | (no) | Отправка событий нажатия клавиш и установка свойств |
| demo31 | (no) | (no) | Вложенный view model |
| demo32 | (no) | (no) | Использование одного view model с несколькими моделями | | demo33 | (no) | (no) | Демонстрация использования команды navigate и базового использования аргументов |
| demo34 | (no) | (no) | Демонстрация обновления интерфейса при активации модели. |
| demo35 | jsdemo35 | (no) | Базовое использование условного рендера. |
| demo36 | (no) | (no) | Создание пользовательского навигатора для обработки плагинов, а также взаимодействие окон MVVM и не MVVM окон |
| demo37 | (no) | (no) | Интеграция с внешними периферийными устройствами |
| demo38 | (no) | (no) | Интеграция с внешними периферийными устройствами без графического интерфейса |
| demo39 | (no) | cppdemo39 | Устаревшее использование рендера списка (v-for-item) |
| demo40 | jsdemo40 | (no) | Переключение между несколькими языками и темами |
| demo41 | jsdemo41 | (no) | Использование режима экран-сейвера |
| demo_count_down | (no) | (no) | Использование таймера для управления временем |
| demo_file | (no) | (no) | Чтение и запись файлов. |
| demo_conf | (no) | (no) | Чтение и запись конфигураций. |* [Полный пример и проект-шаблон](https://github.com/zlgopen/awtk-mvvm-c-hello)* [awtk-mvvm-c-examples](https://github.com/zlgopen/awtk-mvvm-c-examples)
* [Необходимость писать код для выполнения операций CRUD с sqlite3](https://github.com/zlgopen/awtk-database-repository)
* [JS расширенные функции](docs/js_ext_api.md)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )