برنامه نویسی

معرفی Nestia – DEV Community

Summarize this content to 400 words in Persian Lang

مقدمه

Nestia یک تولیدکننده SDK و اعتبارسنجی زمان اجرا تایپ اسکریپت انقلابی برای برنامه های NestJS است که برای حذف تعاریف اضافی طرحواره و افزایش کارایی توسعه طراحی شده است. بر خلاف رویکردهای سنتی که به چند اعلان طرحواره نیاز دارند، نستیا از انواع TypeScript خالص برای ارائه اعتبار سنجی جامع و مستندات API استفاده می کند.

مشکل نستیا حل می شود

توسعه سنتی NestJS با چندین چالش مواجه است:

نیاز به تعریف طرحواره سه گانه (نوع تایپ اسکریپت، اعتبار سنجی کلاس، @nestjs/swagger)
خطاهای اعتبارسنجی فقط در زمان اجرا که از کامپایل TypeScript فرار می کنند
سربار عملکرد از کلاس اعتبار سنجی و کلاس ترانسفورماتور
تعاریف پیچیده قوانین اعتبارسنجی

ویژگی ها و مزایای کلیدی

رویکرد تایپ اسکریپت خالص

// Traditional NestJS approach with class-validator
export class ArticleDto {
@IsString()
@IsUUID()
@ApiProperty({ format: “uuid” })
id!: string;

@IsOptional()
@IsString()
@MinLength(5)
@MaxLength(100)
@ApiProperty({ nullable: true })
title?: string;
}

// Nestia’s pure TypeScript approach
export interface IArticle {
id: string & tags.Format<“uuid”>;
title?: string & tags.MinLength<5> & tags.MaxLength<100>;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مزایای عملکرد

Nestia بهبود عملکرد قابل توجهی را ارائه می دهد:

اعتبارسنجی: 20000 برابر سریعتر از اعتبارسنجی کلاس
سریال سازی JSON: 200 برابر سریعتر از کلاس ترانسفورماتور
سربار زمان اجرا از طریق کامپایل AOT صفر است
استفاده بهینه از حافظه

نسل SDK

// Automatic type-safe SDK generation
const sdk = createAxiosSDK<typeof MyController>();

// Type-safe API calls
await sdk.articles.store({
title: “Hello World”,
body: “Content”,
files: [] });

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سیستم اعتبار سنجی پیشرفته

اعتبار سنجی مبتنی بر رابط TypeScript خالص
بررسی نوع زمان کامپایل
قوانین اعتبار سنجی در سطح نوع داخلی
تولید خودکار پیام خطا

شروع به کار

نصب و راه اندازی

npm install @nestia/core
npm install -D @nestia/sdk

# Configure tsconfig.json
{
“compilerOptions”: {
“experimentalDecorators”: true,
“emitDecoratorMetadata”: true
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده پایه

import { TypedBody, TypedRoute } from “@nestia/core”;
import { Controller } from “@nestjs/common”;

@Controller(“articles”)
export class ArticlesController {
@TypedRoute.Post()
public async store(
@TypedBody() input: IArticle.ICreate
): Promise<IArticle> {
return {
…input,
id: “uuid-here”,
created_at: new Date().toISOString()
};
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ویژگی های پیشرفته

درخواست های HTTP ایمن تایپ

interface IArticle {
id: string & tags.Format<“uuid”>;
title: string & tags.MinLength<3> & tags.MaxLength<50>;
body: string;
files: IAttachmentFile[];
created_at: string & tags.Format<“date-time”>;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تجزیه و تحلیل عملکرد

نتایج محک

معیارهای عملکرد مقایسه ای:

سرعت اعتبارسنجی

Nestia: 2,000,000 عملیات در ثانیه
class-validator: 100 عملیات در ثانیه
بهبود: 20000 برابر سریعتر

سریال سازی JSON

Nestia: 200000 عملیات در ثانیه
ترانسفورماتور کلاس: 1000 آپس در ثانیه
بهبود: 200 برابر سریعتر

مقدمه

Nestia یک تولیدکننده SDK و اعتبارسنجی زمان اجرا تایپ اسکریپت انقلابی برای برنامه های NestJS است که برای حذف تعاریف اضافی طرحواره و افزایش کارایی توسعه طراحی شده است. بر خلاف رویکردهای سنتی که به چند اعلان طرحواره نیاز دارند، نستیا از انواع TypeScript خالص برای ارائه اعتبار سنجی جامع و مستندات API استفاده می کند.

مشکل نستیا حل می شود

توسعه سنتی NestJS با چندین چالش مواجه است:

  • نیاز به تعریف طرحواره سه گانه (نوع تایپ اسکریپت، اعتبار سنجی کلاس، @nestjs/swagger)
  • خطاهای اعتبارسنجی فقط در زمان اجرا که از کامپایل TypeScript فرار می کنند
  • سربار عملکرد از کلاس اعتبار سنجی و کلاس ترانسفورماتور
  • تعاریف پیچیده قوانین اعتبارسنجی

ویژگی ها و مزایای کلیدی

رویکرد تایپ اسکریپت خالص

// Traditional NestJS approach with class-validator
export class ArticleDto {
  @IsString()
  @IsUUID()
  @ApiProperty({ format: "uuid" })
  id!: string;

  @IsOptional()
  @IsString()
  @MinLength(5)
  @MaxLength(100)
  @ApiProperty({ nullable: true })
  title?: string;
}

// Nestia's pure TypeScript approach
export interface IArticle {
  id: string & tags.Format<"uuid">;
  title?: string & tags.MinLength<5> & tags.MaxLength<100>;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مزایای عملکرد

Nestia بهبود عملکرد قابل توجهی را ارائه می دهد:

  • اعتبارسنجی: 20000 برابر سریعتر از اعتبارسنجی کلاس
  • سریال سازی JSON: 200 برابر سریعتر از کلاس ترانسفورماتور
  • سربار زمان اجرا از طریق کامپایل AOT صفر است
  • استفاده بهینه از حافظه

نسل SDK

// Automatic type-safe SDK generation
const sdk = createAxiosSDK<typeof MyController>();

// Type-safe API calls
await sdk.articles.store({
  title: "Hello World",
  body: "Content",
  files: []
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سیستم اعتبار سنجی پیشرفته

  • اعتبار سنجی مبتنی بر رابط TypeScript خالص
  • بررسی نوع زمان کامپایل
  • قوانین اعتبار سنجی در سطح نوع داخلی
  • تولید خودکار پیام خطا

شروع به کار

نصب و راه اندازی

npm install @nestia/core
npm install -D @nestia/sdk

# Configure tsconfig.json
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده پایه

import { TypedBody, TypedRoute } from "@nestia/core";
import { Controller } from "@nestjs/common";

@Controller("articles")
export class ArticlesController {
  @TypedRoute.Post()
  public async store(
    @TypedBody() input: IArticle.ICreate
  ): Promise<IArticle> {
    return {
      ...input,
      id: "uuid-here",
      created_at: new Date().toISOString()
    };
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ویژگی های پیشرفته

درخواست های HTTP ایمن تایپ

interface IArticle {
  id: string & tags.Format<"uuid">;
  title: string & tags.MinLength<3> & tags.MaxLength<50>;
  body: string;
  files: IAttachmentFile[];
  created_at: string & tags.Format<"date-time">;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تجزیه و تحلیل عملکرد

نتایج محک

معیارهای عملکرد مقایسه ای:

  1. سرعت اعتبارسنجی

    • Nestia: 2,000,000 عملیات در ثانیه
    • class-validator: 100 عملیات در ثانیه
    • بهبود: 20000 برابر سریعتر
  2. سریال سازی JSON

    • Nestia: 200000 عملیات در ثانیه
    • ترانسفورماتور کلاس: 1000 آپس در ثانیه
    • بهبود: 200 برابر سریعتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا