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

OSCHINA-MIRROR/ASCIPHX-ThinkTs

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-zh_CN.md 7.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 02:57 ea5236c

ThinkTs

  • Поддержка TypeORM, лучшего TypeScript ORM фреймворка, для лёгкого написания логики слоя DAO.
  • Позволяет использовать статические типы, вывод типов и обеспечивает поддержку для разработки и обслуживания бэкенда.
  • Модульная разработка делает приложение более легко поддающимся разделению на слои и предоставляет удобные механизмы управления модулями.
  • Минимальное написание кода AOP (аспектно-ориентированное программирование), ориентированного на аспекты, но при этом легко реализующего функции журнала, перехватчика и фильтра.
  • Быстрое, быстрое и мощное построение систем MVC, API, WebSocket и микросервисов.
  • Конфигурация важнее кодирования, автоматическое выполнение операций добавления, удаления, изменения и разбиения на страницы, что упрощает создание системы разрешений.
  • Классы сервисов могут реализовывать интерфейсы, что позволяет быстро находить каждый метод и легко поддерживать сложный и обширный код сервиса.
  • Уровень поля RBAC (контроль доступа на основе ролей) в сочетании с подключаемыми промежуточными программами-декораторами предоставляет бесконечные возможности для сборки функций.
  • Поддерживает serverless, после внедрения маршрутизатора в метод контроллера можно легко преобразовать веб-страницу в бэкенд или записать в файл.
  • Можно использовать различные базы данных, поддерживаемые TypeORM, в настоящее время предоставляются MySQL и PostgreSQL.
  • Добавлен демонстрационный пример использования socketIo, размещённый в каталоге example (по умолчанию версия для администратора, требуется Redis).
  • Возможность использовать метод переопределения, чтобы не беспокоиться о дублировании маршрутов.
  • Основан на магических функциях ES6 Generator, а также на полной асинхронности, что повышает эффективность и стабильность.
  • Генерация файлов маршрутизации до /routes, что избавляет фронтенд от необходимости вручную писать маршруты axios, обеспечивая реальное использование.

ThinkTs дискуссионная зона ThinkTs вдохновлён реализацией ThinkPHP+Nestjs+FastAPI и предназначен для удовлетворения потребностей менеджеров проектов. Его цель — достигать небольших целей (проектов) каждый день.

Бенчмарки Использование ThinkTs позволяет сделать ваш контроллер похожим на:

@Class(["add","del","fix","info","page"])//or @Class("/admin",……)or @Class("admin",……)
class Admin extends Controller{
  @Inject(Admin$) readonly a_:Admin$
  @Inject(User$) readonly u_:User$

  @Middle(W.Log,W.V_B("account|1#3~10","pwd#6~23|1"))
  @app.post("register")
  add(@B b,@R r:Response) {
    r.status=202;//设置状态码
    return this.u_.register(b.account,b.pwd)
  }
}

Вот как можно отобразить шаблон EJS:

class View{
  @Get() @Get("index.html")
  index(ctx:Context){
    html(ctx,{test:"test",author:"asciphx"}).next().value
  }
  @Get("login.html")
  login(ctx:Context){
    html(ctx,{test:"test",author:"Login"}).next().value
  }
}

Ваш сервис может выглядеть так:

export default class User$ extends $ implements F{
  constructor(
    private u=Inject(User),private r=Inject(Role)
  ) {
    super({
      leftJoin:{e:"u.roles",a:'role'},
      addSelect:['role.id','role.name'],
      where: query => new Brackets(qb => {
        if (query.account) qb.where('account like :v', { v: `%${query.account}%` })
        if (query.id) qb.andWhere('u.id >:i', { i: query.id })
      }),
      orderBy: { "u.id": "desc" }
    },"u")
  }
}

Интерфейс может быть таким:

export default interface UserFace{
  /** register one*/register(entity)
  /** login one*/login(entity)
  /** search all*/all()
}

Entity может быть написан в стиле TypeORM:

Cache используется следующим образом: Cache

Особенности

  • Классные декораторы по умолчанию равны "/"+имя класса сущности, но их также можно настроить.
  • Автоматическое сканирование каталога сущностей и загрузка в кэш, что эквивалентно контейнеру, который предотвращает многократную инициализацию сущностей.
  • Автоматическое сканирование каталога контроллеров и настройка маршрутов.
  • Автоматическая генерация конфигурационных файлов маршрутов для удобства просмотра в каталоге routes, которые также можно удалить или изменить printRoute на false в app/config.ts для отключения.
  • Скорость, близкая к Nest.js и Fastify, и удобство сопровождения, сравнимое с Java SpringBoot.
  • Если не используется TypeORM, можно использовать Sequelize и переписать классы сущностей.
  • Теперь добавлены базовые контроллеры, уровни сервисов и контроллеры-декораторы, которые автоматически выполняют операции добавления, удаления, изменения и разбивки на страницы.
  • Добавление параметров-декораторов делает процесс более удобным и не влияет на скорость выполнения.
  • Декораторы можно размещать горизонтально и складывать, причём порядок выполнения — справа налево.
  • Магические функции генератора ES6 в сочетании с полным асинхронным программированием Node обеспечивают значительное повышение скорости.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/ASCIPHX-ThinkTs.git
git@api.gitlife.ru:oschina-mirror/ASCIPHX-ThinkTs.git
oschina-mirror
ASCIPHX-ThinkTs
ASCIPHX-ThinkTs
master