MEAN stack در اپلیکیشن های تحت وب جاوا اسکریپت چیست؟
چهارشنبه 27 فروردین 1399MEAN stack یک معماری بسیار جذاب در جاوا اسکریپت است که کاربردهای زیادی دارد، ما در این مطلب کمی بیشتر درباره MEAN stack صحبت خواهیم کرد.
MEAN stack در اپلیکیشن های جاوا اسکریپت توسط MongoDB، Express، انگولار، Node.js فراهم می شود و کارکردهای زیادی را در اختیار شما قرار می دهد. ما در این مطلب قصد داریم کمی بیشتر درباره MEAN stack در پروژه های جاوا اسکریپت صحبت کنیم.
تعریف MEAN stack در پروژه های تحت وب
MEAN stack در واقع یک پشته نرم افزاری است( در واقع مجموعه ای از لایه های تکنولوژی می باشد که باعث ساخت اپلیکیشن های مدرن می شود) که به صورت کامل در جاوا اسکریپت نوشته شده است. MEAN stack در واقع نشان دهنده ورود جاوا اسکریپت به عنوان یک زبان برنامه نویسی فول استک می باشد که شما با استفاده از آن می توانید تمامی موارد از فرانت اند گرفته تا بک اند را در اپلیکیشن خود اجرا کنید در واقع هر یک از مقدمات در MEAN نشان دهنده یک کامپوننت در استک می باشد:
MongoDB: یک سرور دیتابیس که با استفاده از جیسون می توانید در آن کوئری بزنید که در واقع داده ساختارهای شما را با فرمت جیسون ذخیره می کند.
Express: یک فریم ورک سمت سرور جاوا اسکریپت است.
Angular: یک فریم ورک سمت کلاینت جاوا اسکریپت است.
Node.js: یک ران تایم جاوا اسکریپت می باشد.
بخش مهم MEAN stack
بخش مهمی از MEAN stack ناشی از سازگاری آن می باشد که این سازگاری از این حقیقت می آید که جاوا اسکریپت سازنده آن می باشد. زندگی برای توسعه دهندگان راحت تر شده است چرا که هر کامپوننتی از اپلیکیشن شما( از اشیائی که در دیتابیس شما وجود دارد گرفته تا کدهای سمت کلاینت) به یک زبان برنامه نویسی نوشته می شوند
این سازگاری در واقع نقطه تقابلی با درهم ریختگی LAMP است که یکی از قدیمی ترین ابزارهای توسعه دهندگان وب بوده است. LAMP نیز در واقع مانند MEAN stack یک قاعده نام گذاری برای کامپوننت هایی که در اپلیکیشن های تحت وب استفاده می شوند است( که این قاعده شامل سرور لینوکس، سرور Apache HTTP، دیتابیس MySQL و همچنین کدهای پی اچ پی، پرل و یا پایتون می باشد. هر بخشی از استک با بخش های دیگر آن در ارتباط می باشد.
چند نکته مهم درباره LAMP stack و MEAN stack
توجه داشته باشید که نمی توان گفت LAMP stack دارای رتبه پایینی می باشد چرا که امروزه به صورت گسترده ای مورد استفاده قرار می گیرد و هر عنصری که در استک قرار دارد در جامعه توسعه دهندگان فعال هنوز هم مزایای بسیار زیادی دارد. با این وجود سازگاری مفهومی که MEAN stack دارد می تواند مزایای زیادی برای شما داشته باشد. اگر شما از زبان مشابهی استفاده می کنید و تمام بخش های مفهومی اپلیکیشن خود در سطح مختلف استک را به یک زبان بنویسید این موضوع می تواند برای توسعه دهنده ارشد بسیار مفید باشد چرا که می تواند کل استک را به صورت یکباره بررسی کند.
ویژگی های MEAN stack در واقع از 4 عنصر اصلی تشکیل می شوند( دیتابیس، فرانت اند، بک اند و موتور اجرا). توجه داشته باشید که این موضوع به آن معنا نیست که MEAN stack تنها از این عناصر تشکیل شده است اما با این حال می توان گفت آنها اجزای اصلی هستند.
آشنایی با دیتابیس MongoDB( بخش اول)
مانند سایر سیستم های پایگاه داده NoSQL این پایگاه داده نیز از شمای سطح پایین برای طراحی استفاده می کند. داده های شما به فرمت جیسون در این دیتابیس ذخیره و بازیابی می شوند که این به آن معنا است که شما می توانید از فیلدهای تو در تو برای این کار استفاده کنید. این انعطاف پذیری این دیتابیس برای اپلیکیشن هایی که باید به صورت سریع توسعه داده شوند بسیار مناسب باشد چرا که شما می توانید خیلی سریع نیازمندی های خود را تغییر دهید.
در زمان استفاده کردن از MongoDB باید برای استفاده کردن از بعضی موارد احتیاط کنید. برای مثال MongoDB به ناامن بودن به صورت پیش فرض شهرت دارد. اگر قصد دارید که آن را در یک محیط توسعه دهندگی مستقر کنید شما باید مراحلی را بگذرانید تا آن را امن کنید. این موضوع برای توسعه دهندگانی که از پایگاه داده های رابطه ای استفاده می کنند ممکن است کمی سخت باشد چرا که باید زمان زیادی بگذارند تا متوجه شوند که این پایگاه داده به چه صورت کار می کند. نکته دیگر این است که امروزه وب سایت های زیادی هستند که به آموزش این پایگاه داده پرداخته اند که می توانید از آنها در این زمینه کمک بگیرید.
آشنایی با دیتابیس MongoDB( بخش دوم)
مانند بسیاری از پایگاه داده های دیگر شما برای برقراری ارتباط با این دیتابیس نیازمند یک میان افزار هستید تا بتوانید میان کدهای جاوا اسکریپت و پایگاه داده MongoDB ارتباط برقرار کنید. یک گزینه بسیار رایج که برای MEAN stack استفاده می شود Mongoose می باشد. Mongoose نه تنها برقراری ارتباط را برای شما فراهم می کند بلکه شما می توانید از آن برای مدل کردن اشیا، اعتبارسنجی در سمت اپلکیشن و بسیاری از توابع دیگر استفاده کنید که ابداعات جدیدی را برای پروژه خود ایجاد کنید.
آشنایی با Express.js در MEAN stack
یکی دیگر از عناصری که در MEAN stack کاربرد بسیار زیادی دارد Express.js می باشد. امروزه این فریم ورک یکی از پر کاربردترین فریم ورک ها برای اپلیکیشن های تحت وب در Node.js به شمار می آید. این فریم ورک در واقع مجموعه ای کوچک از ویژگی های اساسی را برای شما فراهم می کند( که در واقع یک وب سرور قابل برنامه نویسی و با ویژگی های اساسی است) ولی با این حال شما می توانید آن را در بسیاری از افزونه ها گسترش دهید. این طراحی ساده باعث شده است که این فریم ورک بسیار سبک باشد و عملکرد بهتری را نیز داشته باشد.
توجه داشته باشید که هیچ قانونی نمی گوید که شما مجبور هستید برای دسترسی مستقیم به کاربران در MEAN stack از Express استفاده کنید اگرچه این روش امروزه رایج ترین روش برای این کار به شمار می آید. یک معماری جایگزین این است که یک وب سرور دیگر را مستقر کنید که از جمله این وب سرورها می توان به Nginx و یا Apache اشاره کرد که به رقابت با Express پرداخته اند. این کار به شما اجازه می دهد که از توابعی همچون load balancing برای بارگذاری یک منبع جدا استفاده کنید.
از آن جایی که Express بسیار کم حجم است مفاهیم زیادی ندارد که به آن متصل باشند. مقالات آموزشی که در سایت Expressjs.com وجود دارند یک نگاه کلی از این فریم ورک را در اختیار شما قرار می دهند تا بتوانید با مفاهیم پایه ای آن بیشتر آشنا شوید.
نکاتی درباره فریم ورک انگولار
فریم ورک انگولار که به صورت رسمی تر AngularJS نامیده می شود برای ساخت بخش فرانت اند در اپلیکیشن هایی که از MEAN stack استفاده می کنند استفاده می شود. این فریم ورک در واقع از جاوا اسکریپت مرورگر استفاده می کند تا اطلاعاتی که از سمت سرور دریافت می شود را با قالب های HTML به کاربر نمایش دهد و به همین علت است که بیشتر عملیات رندر کردن صفحات وب سایت ها می تواند به صورت آفلاین در سمت کلاینت انجام شود. بسیاری از اپلیکیشن های تک صفحه ای تحت وب از فریم ورک انگولار برای ساخت فرانت اند استفاده کرده اند.
یک نکته بسیار مهم درباره این فریم ورک این است که توسعه دهندگان از انگولار استفاده می کنند که با استفاده از تایپ اسکریپت که یک زبان برنامه نویسی شبیه به جاوا اسکریپت است ساخته شده است استفاده می کنند تا کدهای جاوا اسکریپت را کامپایل کنند. برای بسیاری از افراد این موضوع ممکن است نقض قوانین مربوط به MEAN stack به نظر برسد( توجه داشته باشید که در این قانون باید از جاوا اسکریپت در تمامی موارد استفاده شود). با این وجود تایپ اسکریپت شباهت بسیار زیادی به زبان برنامه نویسی جاوا اسکریپت دارد و به همین دلیل انتقال بین این دو زبان برنامه نویسی به اندازه سایر زبان های برنامه نویسی مشکل ساز نخواهد بود.
فریم ورک Node.js در MEAN stack( بخش اول)
در نهایت به سختی این فریم ورک ساخته شد. این فریم ورک یکی از بهترین فریم ورک های جاوا اسکریپت است که برای کدهای سمت سرور اپلیکیشن هایی که با استفاده از MEAN stack ساخته شده اند استفاده می شود. این فریم ورک براساس موتور جاوا اسکریپت V8 گوگل ساخته شده است که دقیقا همان موتور جاوا اسکریپت است که بر روی مرورگر وب کروم کار می کند. این NODE.js یک فریم ورک کراس پلتفرم است که می تواند هم در سمت کلاینت و هم در سمت سرور اجرا شود و دارای ویژگی های خاصی است که استفاده از آنها مزیت های زیادی را برای عملکرد برنامه های شما نسبت به وب سرورهای قدیمی دارد.
فریم ورک Node.js در MEAN stack( بخش دوم)
این فریم ورک رویکرد متفاوتی را برای ارائه درخواست های وب نسبت به سایر وب سرورهای قدیمی در پیش گرفته است. در رویکردهای سنتی سرور اقدام به ساخت یک thread جدید برای اجرای درخواست ها می کرد و یا این که یک پردازش جدید را برای مدیریت درخواست ایجاد می کرد. ساخت thread ها روشی بسیار بهینه و کارآمد بود اما هر دو این روش ها هزینه های خاص خود را دارا بودند. تعداد زیاد thread ها می تواند بارگذاری سیستم شما را به میزان زیادی سنگین کند و باعث شود که فشار زیادی وارد سیستم شما شود.
Node.js بسیار کارآمدتر و بهینه تر عمل می کند. در واقع این فریم ورک بر روی یک thread در حلقه رویدادهای ثبت شده اجرا می شود که دارای سیستم خود برای مدیریت کانکشن ها است که هر کانکشن جدید باعث می شود تا یک callback جدید جاوا اسکریپت فراخوانی شود. تابع callback می تواند درخواست ها را مدیریت کند که این کار از طریق فراخوانی های non-blocking I/O انجام می شود و در صورت نیاز می تواند thread های جدیدی را برای اجرای عملکردهای بلاک شده و یا CPU-intensive ایجاد کند.
فریم ورک Node.js در MEAN stack( بخش سوم)
Node.js نیازمند مموری کمتری برای مدیریت تعداد زیادی از کانکشن ها است که این موضوع نسبت به بسیاری از معماری های دیگر که از thread ها استفاده می کنند به صرفه تر می باشد( از جمله این معماری ها می توان به مواردی همچون Apache HTTP Server، ASP.NET، Ruby و Rails و سرورهای اپلیکیشن های جاوا اشاره کرد). به همین علت است که این فریم ورک تبدیل به یک انتخاب بسیار محبوب برای ساخت وب سرورها، REST API ها و اپلیکیشن های real-time مانند اپلیکیشن های چت و بازی ها شده است. در واقع اگر بخواهیم یک کامپوننت اصلی را برای تعریف MEAN stack معرفی کنیم قطعا این کامپوننت فریم ورک Node.js می باشد.
امروزه مقالات آموزشی بسیار زیادی وجود دارد که شما می توانید از آنها برای یادگیری این فریم ورک استفاده کنید.
آشنایی با مزایای پشته MEAN
این چهار کامپوننت که در واقع MEAN stack را می سازند در کنار یکدیگر کار می کنند که البته قطعا برای حل هر مشکلی نمی توانند راه حل مناسب باشند اما قطعا در طول سال های اخیر پیشرفت بسیار زیادی کرده اند. IBM به خوبی مناطقی که توسط MEAN stack پوشش داده نمی شود را پوشش میدهد چرا که می تواند تعداد بسیار زیادی از کاربران را به صورت همزمان مدیریت کند. نکته دیگر این است که MEAN stack یک گزینه مناسب برای اپلیکیشن های cloud-native به شمار می آید. فریم ورک فرانت اند انگولار نیز یک گزینه بسیار مناسب برای اپلیکیشن های تک صفحه ای به شمار می آید. از جمله مثال های این فریم ورک می توان به موارد زیر اشاره کرد:
- اپلیکیشن های مدیریت هزینه
- سایت های جمع آوری خبر
- اپلیکیشن های نقشه و لوکیشن
عکس 11
مقایسه بین MEAN و MERN( بخش اول)
کلمه مخفف acronym برای معمولا برای نشان دادن MEAN stack هایی که از React.js به جای انگولار استفاده می کنند استفاده می شود. ری اکت فریم ورکی است که شباهت زیادی به انگولار دارد و موارد مثبت بسیار زیادی که دارا می باشد باعث شده است تا گاهی اوقات آن را در MEAN stack قرار دهیم. به صورت خلاصه یادگیری ری اکت بسیار ساده است و بسیاری از توسعه دهندگان می توانند کدهایی که با استفاده از ری اکت می نویسند را بسیار سریع تر از کدهایی که با انگولار می نویسند نوشته و تست کنند. علاوه بر این ری اکت یک فرانت اند بهتر و کارآمدتر را برای گوشی های موبایل فراهم می کند. از طرف دیگر کدهایی که با استفاده از انگولار نوشته می شوند بسیار پایدار، تمیزتر و با عملکرد بهتر می باشند. به صورت کلی فریم ورک انگولار بیشتر برای توسعه اپلیکیشن های شرکتی کاربرد دارد.
مقایسه بین MEAN و MERN( بخش دوم)
نکته ای که در این جا باید به آن دقت داشته باشید این است که MEAN stack تنها به عنوان یک انتخاب در اختیار شما قرار دارد و وجود MERN نشان می دهد که MENA stack تنها گزینه برای شما نیست. در واقع نه تنها شما می توانید در میان این کامپوننت ها جا به جا شوید بلکه می توانید به راحتی اجزای مکمل را نیز به آن اضافه کنید. به عنوان مثال سیستم های ذخیره سازی مانند Redis یا Memcached می توانند درون Express استفاده شوند تا سرعت پاسخگویی به درخواست ها را به میزان زیادی افزایش دهند.
توسعه دهندگان MEAN
یک نکته بسیار مهم درباره توسعه دهندگان MEAN stack این است که داشتن مهارت های کافی برای تبدیل شدن به یک توسعه دهنده MEAN stack در واقع شما را تبدیل به یک توسعه دهنده فول استک می کند که این کار از طریق تمرکز کردن بر روی ابزارهای زبان برنامه نویسی جاوا اسکریپت که در این مطلب درباره آنها بحث کردیم صورت می گیرد. با این حال محبوبیت MEAN stack باعث شده است که امروزه فرصت های شغلی بسیار زیادی برای توسعه دهندگان MEAN stack وجود داشته باشد. وب سایت Guru99 تمامی پیش نیازهای مورد نیاز برای تبدیل شدن به توسعه دهنده MEAN stack را برای شما فراهم کرده است. شما برای داشتن یک شغل مناسب باید فراتر از آشنایی با کامپوننت های MEAN stack بروید. در واقع یک توسعه دهنده خوب باید درک خوبی از مواردی که در بخش بعدی اشاره می کنیم داشته باشد.
مواردی که یک توسعه دهنده MEAN stack باید با آن آشنایی داشته باشد
- پردازش های مربوط به فرانت اند و بک اند
- HTML و CSS
- قالب های برنامه نویسی طراحی معماری های مختلف
- توسعه وب، ادغام سازی همزمان و تکنولوژی های وابسته به کلود
- معماری های دیتابیس
- چرخه حیات توسعه نرم افزار و آشنایی با محیط های توسعه مختلف
توسعه دهنده MEAN stack شغلی بسیار مناسب خواهد داشت و این کار می تواند سود زیادی را برای شما به همراه داشته باشد. از دسامبر سال 2019 میلادی این شغل یکی از پردرآمدترین شغل های حوزه برنامه نویسی محسوب می شود و این توسعه دهندگان دستمزد بسیار بالایی را دریافت می کنند.
مقالات آموزشی
امروزه مقالات آموزشی بسیار زیادی در این زمینه وجود دارد که شما می توانید با مطالعه آنها اطلاعات زیادی را درباره MEAN stack بدست بیاورید و با کامپوننت های آن بیشتر آشنا شوید.
- برنامه نویسان
- 2k بازدید
- 0 تشکر