1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk-mvvm

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

awtk-mvvm

1. MVVM

MVVM (Model-View-ViewModel) — это классическая модель разделения пользовательского интерфейса и бизнес-логики.

Преимущества разделения пользовательского интерфейса и бизнес-логики:

  • Позволяет пользовательскому интерфейсу изменяться независимо.
  • Упрощает написание юнит-тестов для бизнес-логики.
  • Упрощает разделение труда и сотрудничество между дизайнерами UI и программистами.

Преимущества MVVM по сравнению с MVP и MVC:

  • Проще в использовании.
  • Более полное разделение.
  • Декларативное программирование легче поддерживать.

Основные идеи MVVM:

  • Использование данных для обмена данными между View и Model.
  • Использование команд для связи событий View с действиями Model.

2. AWTK-MVVM

AWTK-MVVM — это набор MVVM-фреймворков, написанных на C и поддерживающих различные языки сценариев, разработанный для AWTK. Он реализует базовые функции, такие как связывание данных, связывание команд и навигацию по окнам. При использовании AWTK-MVVM для разработки приложений нет необходимости изучать API AWTK — достаточно изучить правила связывания и способы реализации Model. В отличие от других MVVM-фреймворков, AWTK-MVVM имеет следующие особенности:* Меньший объем кода.

  • Высокая производительность.
  • Меньший расход памяти.
  • Более полное разделение.
  • Возможность переноса на другие GUI.
  • Поддержка нескольких языков программирования (в настоящее время поддерживаются C и JavaScript).## 3. Способ использования

В этом документе используется Linux/MacOS в качестве примера. Для Windows могут быть небольшие различия, поэтому используйте его с осторожностью.

3.1 Получение awtk и компиляция

git clone https://github.com/zlgopen/awtk.git
cd awtk
scons

3.2 Получение awtk-mvvm и компиляция

awtk и awtk-mvvm должны находиться в одной директории.

  • Получение 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
  • Компиляция версии для LINUX FB (сначала скомпилируйте awtk-linux-fb)
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 )

Вы можете оставить комментарий после Вход в систему

Введение

AWTK-MVVM — это MVVM-фреймворк, разработанный на языке C для AWTK и поддерживающий различные скриптовые языки. Он реализует базовые функции, такие как привязка данных, привязка команд и навигация по окнам. Развернуть Свернуть
C и 6 других языков
LGPL-2.1
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk-mvvm.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk-mvvm.git
oschina-mirror
zlgopen-awtk-mvvm
zlgopen-awtk-mvvm
master