Перейти к основному содержимому

App

Для создания приложения в Alosaur необходимо воспользоваться конструктором класса App.

// HomeArea
// Create alosaur applicationconst app = new App({  areas: [HomeArea],});
// Listen :8000 port by defaultapp.listen();

Приложение может быть затипизировано с помощью TState, TState нужен для типизации состояния контекста запроса.

// App<TState> // example uses in Controller action
@Get()getBody(@Context() context: HttpContext<TState>): TState {  return context.state;}
important

Подробнее про Context вы можете прочитать в разделе - Context, Request, Response

AppSettings#

Конструктор App принимает интерфейс AppSettings

areas

Области контроллеров, подробнее в разделе - ссылка

middlewares

Middleware которые регистрируются во всем приложении , подробнее в разделе - ссылка

staticConfig

Конфиг для того чтобы выдавать по определенному маршруту статические файлы из определенного каталога

{  root: `${Deno.cwd()}/examples/static/www`,  index: "index.html",  baseRoute: "/www/", // or undefined for default route /} 
// or use methodconst app = new App();
app.useStatic({...})

viewRenderConfig

Конфигурация для использования дефолтного рендера в выводах метода, через функцию например return View('index')

// Create Handlebars configconst handle = new Handlebars({  baseDir: viewPath,  extname: ".hbs",  layoutsDir: "layouts/",  partialsDir: "partials/",  defaultLayout: "main",  helpers: undefined,  compilerOptions: undefined,});
app.useViewRender({  type: "handlebars",  basePath: `${Deno.cwd()}/examples/handlebars/views`,  getBody: async (path: string, model: any, config: ViewRenderConfig) =>    await handle.renderView(path, model),});
important

Подробнее про выводы методов контроллера в разделе: Controllers

logging

Вывод в консоль служебной информации по регистрации контроллеров и маршрутов к ним

container

Обеспечивает внедрение дефолтного базового контейнера в DI

providers

Провайдеры задекларированные на корневом уровне

important

Подробнее про providers в разделе: Dependency injection

App.listen()#

C этой функцией вы запускаете сервер на прослушивание http запросов. По умолчанию сервер запускается на :8000 порту.

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

app.listen("http://localhost:8080") 
// or app.listen(":8080")
// or with custom listener
app.listen(null, Deno.listen({ port: 8080 }))

Global error handler#

Errors that haven't been caught elsewhere get in here

const app = new App(  // app settings);
// added global error handlerapp.error((context: Context<any>, error: Error) => {  context.response.result = Content(    "This page unprocessed error",    (error as HttpError).httpCode || 500,  );  context.response.setImmediately();});