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

OSCHINA-MIRROR/HGJing-express-annotate-js

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

Express Annotate JS gitee.png github.png

Express Annotate JS — это набор инструментов для быстрого создания приложений на NodeJS, основанный на предложении аннотаций в JavaScript (proposal-decorators) и фреймворке Express. Основной модуль аннотаций реализован с использованием Annotate JS.

Условия использования и среда выполнения

  • Зависимости
    • "@palerock/annotate-js": "^1.2.26"
    • "express": "^4.17.1"
  • Предварительные условия
    • Знание синтаксиса ES6 и выше
    • Опыт работы с серверными приложениями на NodeJS
    • Опыт работы с фреймворком Express
    • Знание предложения аннотаций proposal-decorators и способов его применения через Babel
    • Знание базовых методов аннотации в рамках Annotate JS

Быстрый старт

Установка

# Установка зависимостей
npm install express@4.17.1
npm install @palerock/annotate-js
# Установка Express Annotate JS
npm install @palerock/express-annotate-js

а также простой пример конфигурации для использования предложений аннотаций.

Установите зависимости для Babel (для использования синтаксиса аннотаций, этот шаг может быть выполнен различными способами):

npm install -D @babel/cli
npm install -D @babel/core
npm install -D @babel/plugin-proposal-class-properties
npm install -D @babel/plugin-proposal-decorators
npm install -D @babel/preset-env
npm install -D @babel/register
```Затем создайте файл конфигурации Babel `.babelrc` в корневой директории следующего содержания:

```json
{
  "presets": [
    [
      "@babel/preset-env"
    ]
  ],
  "plugins": [
    [
      "@babel/plugin-proposal-decorators",
      {
        "legacy": true
      }
    ],
    [
      "@babel/plugin-proposal-class-properties",
      {
        "loose": true
      }
    ]
  ]
}

Пример использования

Создайте файл index.js в папке src, содержащий следующий код:

import { launcher, GetMapping, Register } from "@palerock/express-annotate-js";
import { Boot, Autowired, Bean } from "@palerock/annotate-js";

@register // Регистрирует этот класс как веб-сервис
class DemoController {

    @autowired
    demoService; // Автоматически внедряет сервис

    @getmapping({ url: '/' })
    getContent({ content }) {
        // Получает запросные параметры через аргументы
        return `Привет, Express Annotate JS, ${this.demoService.parseContent(content)}`;
    }

}

@Bean
class DemoService {
    parseContent(content) {
        return `Обработанный контент: ${content}`;
    }
}

@boot
class Application {

    port = 3034;

    main() {
        // Запускает сервис
        launcher.start(this.port);
    }

}

Создайте запускательный файл launcher.js в корневой директории следующего содержания:

require("@babel/register"); // Использует Babel для компиляции
require("./src/index"); // Запускает сервис

Запустите сервис с помощью командной строки npx node launcher.js.

После запуска введите следующий URL в браузере http://localhost:3034/?content=Enjoy%20it:
Вы увидите вывод: "Привет, Express Annotate JS, Обработанный контент: Enjoy it".

Использование асинхронных методов

Express Annotate JS также поддерживает асинхронные методы, пример ниже:```javascript import {launcher, GetMapping, Register} from "@palerock/express-annotate-js"; import {Boot, Autowired, Bean, EnergyWire} from "@palerock/annotate-js";

@Register class AsyncController {

@Autowired // Injects APIService
APIService;

@GetMapping({url: '/project/:id'}) // Uses :id to display the ID from the URL as parameters
async getProject({id}) {
    return this.APIService.getProjectCache(id);
}

}

@Bean class APIService {

// Injects the wait method from Utils
@EnergyWire('Utils')
wait;

// Cache for storing data
projectCacheMap = {
    '1': {
        name: 'Проект 01'
    },
    '2': {
        name: 'Проект 02'
    }
};

async getProjectCache(id) {
    await this.wait(2000); // Waits for 2 seconds
    if (id in this.projectCacheMap) {
        return this.projectCacheMap[id];
    }
    return null;
}

}

@Bean class Utils { async wait(ms) { return new Promise(resolve => { setTimeout(() => resolve(), ms); }); } }

@Boot class Application {

port = 3034;

main() {
    launcher.start(this.port);
}

}


After starting the service, enter `http://localhost:3034/project/1` into your browser. You will receive a response after waiting for 2 seconds.```json
{"name": "Проект 01"}

As shown in the above example, it is sufficient to add the keywords async/await to the required method to support asynchronous methods. At the same time, since Express is used, the format of writing URLs matches the format in Express, where /project/:id represents a rule for retrieving resources via the GET method according to REST norms.

Documentation is still being written; for more detailed information, refer to the source code or leave your comments.

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

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

Введение

Express Annotate JS — это набор инструментов для быстрой разработки на Node.JS, основанный на предложении по декораторам proposal-decorators и Express. Ядро модуля с аннотациями в нём основано на Annotate JS. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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