Deep dive in the new ECMAScript Decorator, different kinds of decorators, new ones and old ones, and build IoC Container by various ways.
Please install TypeScript >= 5.0.0 to use new decorators.
$ npm i typescript@beta
IoC related samples:
And it would work like this(simplified):
import { createApp } from "create-server";
import { UserController } from "./Controllers/User.controller";
import { PetController } from "./Controllers/Pet.controller";
import { RootController } from "./Controllers/Root.controller";
import { UserService } from "./Services/User.service";
const app = createApp(5999, {
controllers: [UserController, PetController],
services: [UserService],
});
app.then((server) => {
server.on("listening", () => {
const serverBaseUrl = "http://localhost:5999";
console.log(`✨✨✨ Server ready at ${serverBaseUrl} \n`);
});
});
Install these dependencies to use new decorator proposals:
pnpm i @babel/cli @babel/core @babel/node @babel/preset-env @babel/plugin-proposal-decorators --save-dev
Configure your .babelrc
file like below:
{
"presets": ["@babel/preset-env"],
"plugins": [
[
"@babel/plugin-proposal-decorators",
{
// specify version to use latest impl
"version": "2022-03"
}
]
]
}
Then you can use babel-node
to execute javascript file, but nodemon
can bring you better DX.