<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های sajjadmrx</title>
        <link>https://virgool.io/feed/@sajjadmrx</link>
        <description>سعی میکنم چیزای که بلدم رو به اشتراک بذارم.</description>
        <language>fa</language>
        <pubDate>2026-06-16 06:04:39</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/227162/avatar/HvatU6.jpg?height=120&amp;width=120</url>
            <title>sajjadmrx</title>
            <link>https://virgool.io/@sajjadmrx</link>
        </image>

                    <item>
                <title>چجوری تایپ فایل هارو بین بک اند و فرانت به اشتراک بزاریم؟</title>
                <link>https://virgool.io/@sajjadmrx/neox-cli-vgugyf5q9gnv</link>
                <description>اشتراک گذاری فایل ها 😵‍💫 مشکل چیه؟یکی از مشکلاتی که ما باهاش سرکار داریم، داپلیکت شدن تایپ فایل ها بین فرانت و بک اند هست.به عنوان مثال بک اند یه تایپ یا اینترفیس واسه ریسپانس در نظر میگیره، حالا ما باید به صورت دستی اون فایل تایپ رو تو فرانت کپی کنیم و خوب اینجوری یکم اذیت کننده هست مخصوصا وقتی تغییرات داریم. یا وقتی که پروژهای میکروسرویس داریم نیازه بعضی از فایل هارو بین سرویس ها شیر کنیم! به عنوان مثال proto فایل ها رو.🤔 راحل چیه؟؟استفاده از ابزار تحت فرمان ( cli ) به اسم neox-clineox چیست؟یک ابزار متن باز ( open source ) هست، که با استفاده از گیت میتونه به ما کمک کنه که فایل هارو بین سرویس هامون به اشتراک بزاریم.🧩 آموزش نصبپکیج منیجر npmهمینطور که قبلا بهش اشاره کردیم neox-cli یک ابزار تحت فرمان هست که با node.js نوشته شده. و به صورت یک لایبری در npm برای استفاده عموم منتشر شدهنصب این ابزار مثل تمامی لایبری ها هست و ما میتونیم به دو صورت این ابزار رو نصب کنیم:1. به صورت گلوبال ( پیشنهادی جهت استفاده در تمامی زبـان ها ).npm install neox-cli -g2. فقط در یک پروژه جاوااسکریپتی ( قابل استفاده از npm ).npm install neox-cli🎯 نحوه استفادهgithub or gitlabسعی میکنم در این بخش به صورت خیلی ساده و مرحلی نحوه استفاده از neox-cli رو شرح بدم.1. ساخت یه ریپوزیتوری ( repository ) در گیت هاب یا گیت لب.ساخت ریپوزیتوری در گیت هاخب همینطور که در تصویر بالا میبیند ما یک ریپوزیتوری خصوصی ( private ) ساختیم و اسم اونو crosstypes گذاشتیم.هدف ما اشتراک گذاری تایپ فایل ها بین تیم بک اند و تیم فرانت هست، اما ما میتونیم این کارو هم برای میکروسرویس هامون هم انجام بدیم2. اضافه کردن فایل به ریپوزیتوریuser interfaceخب ما میخوایم این interface رو به اشتراک بذاریم.این فایل رو به crosstype اضافه میکنیم و اونو در ریپوزیتوری ( repository ) push میکنیم.3. اضافه کردن neox به پروژه/هامونinitialize neoxخب در قدم اول باید neox رو initialize کنیماینکارو با دستور زیر انجام میدیم.neox initاین دستور واسه ما یک فایل به اسم neoX.config.json ایجاد میکنه.neoX.config.json exampleفیلدهای این فایل شامل: repo: لینک ریپوزیتوری که میخواهید از اون استفاده کنید، ما در بالا یک ریپوزیتوری به نام crosstype ایجاد کردیم.outDir: اسم فولدری که میخواهید محتوای ریپوزیتوری در اونجا گذاشته بشه.isSubmodule: مشخص کنید که میخواهید این زیرمجموعه باشه یا خیر. همچنین با فعال کردن این گزینه فولدر .git از outdir حذف نمیشه و به شما امکان استفاده از دستور &#x60;neox check&#x60; رو میده.exclude: فایل های که میخواهید حذف بشن رو مشخص کنید.در نهایت فایل ما این شد:neoX.config.json example 4. استفاده از neoxneox pullما میتونیم لیستی از ریپوها داشته باشیم، پس اینجا ( تصویر بالا ) باید مشخص کنیم که کدوم ریپو مدنظرمونه یا اینکه گزینه all رو بزنیم.neox pullمن گزینه .shared-types رو انتخاب کردم، و در نهایت محتوای ریپوزیتوری در فولدر .shared-types قرار داده شد.neox pull نتیجه به این صورت ما میتونیم از neox استفاده کنیم، من در این نمونه از پروژه typescript استفاده کردماما شما میتونید تو هر پروژهی با هر زبانی استفاده کنید ( با نصب به صورت گلوبال )سعی کردم به صورت خلاصه این ابزار رو بهتون معرفی کنم، اما این ابزار امکانات جالبه دیگه ای هم داره که ازتون دعوت میکنم به گیت هابش برید و دایکومنتش رو ببیینید: گیت هاب: https://github.com/EternalC0der/neoX-clinpm:https://www.npmjs.com/package/neox-cliپایان. ( تکمیل میشه )</description>
                <category>sajjadmrx</category>
                <author>sajjadmrx</author>
                <pubDate>Fri, 15 Mar 2024 21:17:17 +0330</pubDate>
            </item>
                    <item>
                <title>چیست Bun؟</title>
                <link>https://virgool.io/@sajjadmrx/%DA%86%DB%8C%D8%B3%D8%AA-bun-dkt3r1iyqevv</link>
                <description>bun.sh bannerخب بلاخره ورژن 1 Bun منتشر شد!تو این پست میخام خیلی خلاصه و خودمونی Bun رو معرفی کنمچیه Bun ؟یک runtime جدید واسه جاوااسکریپت مثل  node.js اما خیلی سریع تر و بهتر !برخلاف Node.js و سایر runtime ها که با موتور V8 گوگل ساخته شدن، Bun با استفاده از موتور WebKit اپل ساخته می‌شود. WebKit موتوری است که Safari را نیرو می دهد و هر روز میلیاردها دستگاه از اون استفاده می کنند. این سریع، کارآمد است و برای چندین دهه آزمایش شده است.?️ نگران پروژه های قبلی نباشیدیک Bun جایگزین واسه Node.js هست. و این یعنی شما میتونید پروژه های که با Node.js توسعه دادیدرو  با Bun اجرا کنید! Full-stack applications built with Next.js, Remix, Nuxt, Astro, SvelteKit, Nest, SolidStart, and Vite work in Bun. ? خداحافظ npm,pnpm,yarnو خوب اگه به هردلیلی نمیخاید Bun رو به عنوان runtime استفاده کنید، بهتون پیشنهاد میکنم از پکیج منیجرش برای پروژه های Node.js اتون استفاده کنید!تعجب کردید!؟ حتما واستون سوال شده که Bun مگه runtime نیست؟+ خب باید بگم درکنار runtime بودنش یک پکیج منیجر هم هست!تایپ اسکریپتبه صورت پیشفرض Bun از تایپ اسکریپت پشتیبانی میکنه! و این یعنی میتونید فایل های تایپ اسکریپت رو بدون نیاز به وابستگی اجرا کنید!  ?دوران استفاده از nodemon تمام شد!دیگه نیازی به نصب nodemon واسه ریلود کردن خودکار در حالت توسعه نیست!Bun خودش بدون نیاز به وابستگی این کارو واستون انجام میده.کافیه با دستور زیر پروژه تون رو اجرا کنید:$bun --hot server.tsHot Reloadو در اخر ازتون میخام بلاگ اصلی(منبع) رو بخونیدچون من اینجا خیلی خلاصه معرفی کردم.منبع:https://bun.sh/blog/bun-v1.0</description>
                <category>sajjadmrx</category>
                <author>sajjadmrx</author>
                <pubDate>Fri, 08 Sep 2023 23:34:15 +0330</pubDate>
            </item>
                    <item>
                <title>روتینگ تمیز تر  express در تایپ اسکریپت!</title>
                <link>https://virgool.io/@sajjadmrx/%D8%B1%D9%88%D8%AA%DB%8C%D9%86%DA%AF-%D8%AA%D9%85%DB%8C%D8%B2-%D8%AA%D8%B1-express-%D8%AF%D8%B1-%D8%AA%D8%A7%DB%8C%D9%BE-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-tyifutuztiqw</link>
                <description>خب. این اولین نوشته منه و امیدوارم که خوشتون بیاد :)میخام تو اولین پست ام یه پکیج رو معرفی کنم و البته خودم نوشتمش.داشتم در مورد دکوریتورها میخوندم و تمرین میکردم که یهو همچین ایده‎‌ی به ذهنم خورد.خب پیچیدگی روتینگ در express بر هیچکس پوشیده نیست!. اما میتونیم با دکوریتورها یه کار خفن و تمیز بکنیم.چرا از NestJs استفاده نکنیم؟نست فوق العادس! اما گاهی اوقات ما میخوایم خارج از ساختار نست یا انقد پروژه بزرگ نیست که خودمون رو درگیر با NestJs بکنیم. پروژه رو پیش ببریمنصب و کانفیگ پکیج(لایبری)خب مثل همه پکیج ها ما باید پکیج رو با دستور زیر نصب کنیم: npm install easy-express-routerبعد باید قابلیت استفاده از دکوریتور ها و متادیتا رو در فایل کانفیگ typescript فعال کنیم. با اضافه کردن اینا:{
&amp;quotexperimentalDecorators&amp;quot: true,
&amp;quotemitDecoratorMetadata&amp;quot: true,
}نصب و کانفیگ تموم شد. و ما میتونیم از پکیج استفاده کنیم ( همانطور که در بالا گفتم فقط در تایپ اسکریپت میشه استفاده کرد )نحوه استفاده از پکیجبه عنوان مثال من یه todo app خیلی ساده دارم که دو فایل اصلی تایپ اسکریپت داره  یکی server.ts همانجور که از اسمش معلوم هست فایل اصلی ماست. و  todos.controller.ts فایلی هست که ما استفاده از دکوریتورها و پکیج easy-express-router  اندپوینت های todo رو مینویسیم:ساختاره پروژهخب اولین کاری که میکنیم میاییم و اولین کنترلرمون (todos.controller.ts) رو به این صورت مینویسیم:در دکوریتور Controller ما پرفیکس رو ست کردیم تا روی همه اندپوینت هامون در کلاس ست(اعمال) بشه.و در کلاس واسه هر متدی یه دکوریتور تعریف کردیم و هروقت این اندپوینت ها بهشون ریکوئست زده بشه متدها کال میشنو در مرحله بعد ما باید کنترلرمون رو به easyRouter اضافه کنیم( ارایه هست ) و اونارو به express  معرفی کنیم:فایل  server.tsدر EasyRouter.setController  ما لیستی از کنترلرهامون رو میتونیم به ایزی روتر اضافه کنیم و EasyRouter.initController اونارو به express به عبارتی معرفی کنیم با استفاده از app.useبه همین سادگی و تمیزی ! :)نحوه استفاده از میدلورهاما دو روش داریم واسه استفاده از میدلورها:میدلور رو واسه همه اندپوینت های یک کلاس ست کنیم  فقط واسه یک اندپوینتدر مرحله اول ما میخایم میدلور auth مون رو واسه همه اندپوینت ها استفاده کنیم:ما میتونیم لیستی از میدلورها داشته باشید و همانطور که مشخصه اولیت بر اساس جایگاه میدلور در ارایه هستش.و حالا میخایم یه میدلور برای چک کردن رول کاربر واسه اندپوینت / POST داشته باشیم :خب اینجور ریکوئستی که واسه اندپوینت / POST میاد  به این صورت پردازش میشه:POST domin.com/todosمیدلور auth پردازش میشهمیدلور checkRole پردازش میشهمتد create کال میشه. و در صورتی که چیزی رو return کنه به صورت خودکار به کلاینت ریسپانس داده میشه ( یا مستقیم میتونید با استفاده از متدهای res استفاده کنید )گیت هاب:https://github.com/sajjadmrx/easy-express-routerپکیج منیجر npm:https://www.npmjs.com/package/easy-express-routerخوش حال میشم به توسعه این پکیج کمک کنید ??</description>
                <category>sajjadmrx</category>
                <author>sajjadmrx</author>
                <pubDate>Sun, 23 Oct 2022 17:15:44 +0330</pubDate>
            </item>
            </channel>
</rss>