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

OSCHINA-MIRROR/xiaochengtech-unified-structure

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

Это инструмент, написанный на Go, который используется в процессе разработки для создания унифицированных констант и модельного кода для различных платформ.

Инструмент использует формат Json в качестве универсального формата, а затем преобразует его в файлы для разных языков. После каждого изменения файла Json достаточно просто перегенерировать код, чтобы получить обновлённые версии серверного и клиентского кода.

В настоящее время поддерживаются следующие целевые языки:

  • Go;
  • TypeScript;
  • JavaScript (не напрямую, а через генерацию TypeScript с последующим запуском tsc для преобразования).

Тестовый пример

В каталоге example/origin есть два примера каталогов: constant — каталог с исходными файлами констант, model — каталог с файлами моделей.

После запуска make test в каталоге dist генерируются коды на Go и TypeScript.

Подробности процесса сборки можно найти в файле Makefile.

Использование

Команда установки:

go get -u gitee.com/xiaochengtech/unified-structure

Исполняемый файл находится по адресу $GOPATH/bin/unified-structure, параметры следующие:

Название Обязательный Описание
-src [SRC_DIR] Да Путь к исходным файлам, включая файлы Json и другие типы файлов
-dest [DEST_DIR] Да Целевой путь, где будут созданы соответствующие файлы для целевого языка, а также некоторые поддерживаемые типы файлов, скопированные из исходного пути
-language [LANGUAGE] Да Целевой язык, в настоящее время поддерживается go и ts (TypeScript)

Исходный путь должен содержать файл index.json, который служит для объявления некоторой информации на уровне пакета. Другие файлы Json представляют собой отдельные модули. Если есть файлы, отличные от Json, они выборочно копируются в целевой путь в зависимости от выбранного языка.

Формат index.json

Полный формат:

{
    "mode": "(обязательное) режим каталога, константы (constant) или модели (model)",
    "ext-go": {
        "copy-ext": [],
        "package-name": "имя пакета Go"
    },
    "ext-ts": {
        "copy-ext": []
    }
}

Здесь ext-xxx — это дополнительная конфигурация для разных языков, которую можно заполнить по желанию. copy-ext — список расширений файлов, которые можно скопировать.

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

Обычный формат файла Json

Независимо от того, являются ли данные константами или моделями, формат следующий:

{
    "name": "(обязательно) имя модуля, должно начинаться с заглавной буквы в Go",
    "comment": "(необязательно) комментарий на уровне файла",
    "language": "(обязательно) список поддерживаемых языков экспорта",
    "vartype": "единый тип переменной, IOTA обязателен, остальные необязательны, приоритет ниже, чем у поля type",
    "iota": {
        "enable": "включено ли, по умолчанию false, применяется ко всему iota",
        "offset": "смещение"
    },
    "list": [],
    "ext-go": {
        "gorm-table-name": "название таблицы в режиме GORM базы данных",
        "import-pkgs": "список пакетов импорта, массив строк",
        "enable-set": "функция получения метки label экспортируется"
    },
    "ext-ts": {
        "enable-set": "метка label экспортируется как набор"
    }
}

Здесь объект iota является необязательным и действует только в режиме констант. Он представляет собой специфический режим увеличения чисел IOTA, как описано в синтаксисе Go.

list — это список констант или полей, элементы массива соответствуют формату ниже.

Формат поля

Формат полей для констант или моделей также унифицирован:

{
    "name": "(обязательно) имя переменной",
    "type": "(необязательно) тип переменной",
    "json": "(обязательно) имя поля Json",
    "label": "(необязательно) соответствующее отображаемое содержимое",
    "comment": "(необязательно) комментарий",
    "value": "(режим констант) значение переменной",
    "refer": {
        "name": "имя объекта ссылки",
        "file": "имя файла объекта ссылки"
    },
    "ext-go": {
        "gorm": "свойство GORM"
    },
    "ext-ts": {}
}

refer — информация о поле расширения (extend).

Список поддерживаемых типов полей см. в src/common/vartype.go.

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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