بسی رنج بردم در این سال سی، ازین شاخه به اون شاخه پریدم بسی! بهله! حدود یه سال پیش (اواخر مرداد ۹۵) نوشتهای تو وبلاگم منتشر کردم به اسم “خداحافظ PHP؟“. تو اون نوشته ازین نوشتم که چرا دارم از جهان php مهاجرت میکنم! اما حالا دوباره دارم برمیگردم سمت لاراول! چرا؟ چون واقعا Node.js به سرعت تغییر و پیشرفت میکنه! هر روز مفاهیم جدیدی بهش اضافه میشه. اصحاب کهف ۳۰۰ سال خوابیدن و بعد از بیدار شدنشون php اینقدر تغییر نکرده بود که Node.js تو یه سال اخیر تغییر کرده! البته این تغییرات و به روزرسانیها میتونه مزیت باشه، اما باعث میشه همیشه پشت Node.js سرش بدوی تا بهش برسی، که باز هم نمیشه بهش رسید! در کل به قول شاعر بس بگردید و بگردد روزگار، دل به Node.js درنبندد هوشیار! در هر صورت تصمیم گرفتم کارهای سادهم رو همچنان بر پایه Node.js طراحی کنم، اما برای کارهای متوسط به بالا، مثل قدیما برگردمم سراغ لاراول عزیر و خوشگل! حالا اینکه php به این بیریختی چطور دختری به زیبارویی لاراول داره؟!؟ الله اعلم!
JavaScript
زبان برنامه نویسی جاوااسکریپت
کدوم فریمورک برای React.js
اول، چرا فریمورک؟
ناگفته پیداست که من از اهالیِ قبیلهی بیفریمورکهرگز هستم. القصه لقمان را پرسیدند چه کسی از فریمورک استفاده نکرد؟ بگفتا آنکه چرخ را دوباره اختراع کرد.
الغرض من برای سمت کاربر فعلا از ReactJS استفاده میکنم، دلایلش رو هم قبلا تو وبلاگم نوشتم. ولی دست و دلم نمیره که همهی کامپوننتها رو از صفر خودم طراحی کنم، برای همین دنبال فریمورکهایی گشتم که بر پایهی ReactJS بنا شده باشن و چندتا شون که به نظرم بهتر بودن رو مدتی تست کردم. باری تو این نوشته میخوام دربارهی این فریمورکها براتون بنویسم. البته اگه واقعا بشه به همشون گفت فریمورک. در هر صورت من سخت نمیگیرم و بهشون میگم فریمورک، شما هم سخت نگیرین! 😉
چرا AdonisJS رو برای پروژهم انتخاب کردم؟
به قولی بس بگردید و بگردد روزگار، دل به هیچی در نبندد هوشیار! (حالا با اندکی تلخیص).
من یه پروژهی نه چندان کوچولو برای خودم تعریف کردم و امیدوارم بتونم از پسش بربیام. مطمئنا اگه بتونم وقت مناسبی روی این پروژهم بذارم، میتونم از آب و گل درش بیارم. حالا موضوع چیه؟ موضوع اینه که میخوام یه نرمافزار برای مدیریت کارها و مستنداتم بنویسم. فعلا برای این کار از Google Keep استفاده میکنم. وجدانا هم خوب، ساده و کار راه اندازه. به خصوص که متنها و تصاویری که توش ذخیره میکنم به صورت آفلاین هم در دسترسم هستن و این وقتی تو سالن تولید هستم و اکثر اوقات دسترسی به اینترنت ندارم خیلی به کارم میاد. در هر صورت، من چندتا امکان اضافی نیاز دارم که متاسفانه Google Keep هنوز اونها رو نداره. پس میخوام دست به کار بشم و اپلیکیشن خودم رو بنویسم.
چرا RethinkDB رو بیشتر از هر پایگاه دادهای دوست دارم؟
بیشتر افرادی که میرن سراغ Node.js برای پایگاه داده یهراست میرن سراغ MongoDB. ولی پیشنهاد من برای جاوااسکریپتبازها یه چیز باحالتره: RethinkDB
تو این نوشته میخوام دلایل اینکه چرا RethinkDB رو دوست دارم و اون رو قطعا به MongoDB ترجیح میدم براتون بگم.
خداحافظ PHP؟
چند وقتیه که کلا سمت php نرفتم و کارهام رو با جاوااسکریپت و node.js سر و سامون دادم. گرچه این چند وقت پروژهی خاصی رو هم در حال اجرا نداشتم و کارهایی که انجام دادم چیزهای کوچیک و دم دستیای بودن برای تسهیل امور روزانهی خودم. با اینحال، همین کارهای کوچیک رو هم با جاوااسکریپت انجام دادم. برای پروژههایی که این روزا تو ذهنم پرورش میدم تا در آینده روشون کار کنم هم به جاوااسکریپت فکر میکنم.
خوب سوال پیش میاد: آیا php برای من تموم شده؟ من که این همه وقت صرف یاد گرفتن php و لاراول و امثالهم کردم، چرا باید ولشون کنم؟ تو ادامهی این نوشته میخوام به دنبال جواب این سوالها بگردم.
چطور تو React.js شاخ بشیم و شاخِ Flux رو بشکنیم؟
قبلا درمورد اینکه چرا React.js رو انتخاب کردم، توضیح دادم، تو این نوشته نمیخوام از مزایای React بگم، میخوام بگم که چطور میتونیم رفیق گرمابه و گلستان React بشیم.
قطعا منابع زیادی تو اینترنت برای یادگیری React.js وجود داره، از مقاله و کتاب گرفته تا فیلم و کلیپِ آموزشی. من مدتی میشه که هی میگردم منابع مختلف رو پیدا میکنم تا ببینم کدوم بیشتر به کارم میاد. چندتا فیلم آموزشی از PluralSight و Tutsplus پیدا کردم، تماشاشون کردم، ولی کفاف کار من رو نمیدادن! این فیلمها خیلی ساده فقط به مقدمات React پرداخته بودن و با دیدنشون کار عملی خاصی تو دنیای واقعی نمیشد انجام داد! بعد از کلی گشت و گذار و دانلود فیلمهای آموزشی مختلف. چندتا منبع خوب، ساده و کاربردی برای یادگیری React از مبتدی تا یخورده حرفهایتر پیدا کردم، گفتم لینک این منابع رو در اختیار شما هم قرار بدم تا اگه صلاح دونستید ازشون استفاده کنید.
ذخیره کردن دادهها تو localStorage با store.js ساده و دوستداشتنی!
وقتی داریم یه سایت یا یه اپلیکیشن تحت وب طراحی میکنیم، خیلی اوقات پیش میاد که نیاز داریم یه سری داده رو سمت کاربر ذخیره کنیم. به طور معمول کوکیها رو برای انجام این کار مدنظر قرار میدیم و دادههامون رو میچپونیم تو اونها. ولی دیگه دوره زمونه تغییر کرده، شاید بهتر باشه که ما هم یخورده تغییر کنیم. با توجه به توسعه روزافزون اپلیکیشنهای تحت وب، بالطبع استفاده از روشهای ذخیره کردن داده سمت کاربر هم هر روز داره مرسوم و مرسومتر میشه، گرچه این روشها از قدیم در دسترس بودن (البته نه خیلی قدیم)، ولی چندان مورد اقبال نبودن. البته امروز دیگه قضیه فرق داره!
جاوااسکریپت به روایت آمیرزا: فاجعهی اعداد بزرگ!
هشدار: رویت هلالِ روی ماهِ اعدادِ بزرگ در جاوااسکریپت با چشم غیرمسلح امکانپذیر نمیباشد!!
اگه شما یه دانشجوی رشتهی فنی مهندسی مثل برق یا مکانیک باشید، حتما یکی از دغدغههاتون انجام محاسبات فنی یا به قول فرنگیها Technical Computation هست. از طرفی اگه شما علاوه بر یه مهندس برق یا مکانیک، یه گیکِ علاقهمند به برنامهنویسی هم باشید، ممکنه دوست داشته باشید به جای کار با Matlab سنتشکنی کنید و با یه چیز شادتری پروژههاتون رو انجام بدید. مثل چی؟ مثل جاوااسکریپت!
جاوااسکریپت به روایت آمیرزا: همه تنبلا! (یا به قول فرنگیها Lazy ways)
تو جاوااسکریپت یه سری راه ساده و سرراست برای تبدیل کردن یک متغیر از یک نوع به نوع دیگه هست که فرنگیها بهش میگن lazy ways و درصورت نیاز میتونیم ازشون برای تبدیل یک متغیر از یک نوع داده به یک نوع داده دیگه استفاده کنیم. مثلا وقتی یک عدد که در قالب رشته (string) هست ضربدر یک عدد دیگه کنیم، نتیجه از نوع عدد میشه. این حالت برای عملگر منها یا همون تفریق هم حاکمه!
ES2015 یا ES6 چیه؟
ES2015 مخفف ECMAScript2015 هست، که همون ES6 هست، یا به عبارت دیگه ECMAScript6. اگه اهل برنامهنویسی و طراحی وب باشید حتما میدونید که ECMAScript همون جاوااسکریپت خودمونه! یا بهتر بگیم: جاوااسکریپت همون ECMAScript هست! این زبون جاوااسکریپت که اینقدر محبوبالقلوب شده، در واقع اسم اصلیش ECMAScript بوده و هست، حالا اینکه چرا بهش میگن جاوااسکریپت خودش داستانیه! تو طول تاریخ این ECMAScript به اسمهای مختلفی ظهور کرده، از جمله Mocha، LiveScript و در نهایت JavaScript، که البته همین جاوااسکریپت یه نسخهی مایکروسافتی هم داشت که بهش میگفتن JScript.
از قدیم گفتن بازگشت همه به سوی اوست یا به قولی هر کسی کو دور ماند از اصل خویش، باز جوید روزگار وصل خویش! القصه همه اون زبونها شدن همون جاوااسکریپت و تحت یه استاندارد جمع و جور شدن که همون ECMA هست. درواقع این جاوااسکریپتی که این روزا داره جولان میده، همون ES5 هست، یا بهتر میگم ES5.1.
الغرض، این زبون نازنین تو سال ۲۰۱۵ دستخوش تغییراتی اساسی شد، تغییراتی که میتونه دانشی که از جاوااسکریپت دارید رو تا حدودی به چالش بکشه! این تغییرات تحت نسخه ES6 ارائه شدند که چون تو سال ۲۰۱۵ انجام شد، معروف شده به ES2015.
اگه خوشحالتون میکنه باید بگم تو نسخهی جدید جاوااسکریپت حمایت از Unicode هم بیشتر شده و حتی امکان Unicode Regex هم فراهم شده. البته تغییرات ES2015 خیلی خیلی بیشتر از این حرفاست. برای دیدن لیست ویژگیهای جدید ES2015 بهتون توصیه میکنم تا صفحات زیر رو چک کنید:
ECMAScript 6 — New Features: Overview & Comparison
Overview of ECMAScript 6 features
اگه از دوستداران جاوااسکریپت هستید، بهتون توصیه میکنم شروع کنید به آپدیت کردن خودتون و با زیر و زِبَر ES2015 آشنا بشید، گرچه هنوز همه چی روی شاخ ES5 میچرخه، اما طوفان تغییرات تو راهه، و به قولی دیر و زود داره ولی سوخت و سوز نداره.
یه فیلم خوب برای یادگیری ES2015 تو سایت دانلودها هست، میتونید دانلودش کنید و ببینیدش:
دانلود فیلم آموزش ضروریات JavaScript ES6
سایت Babel هم محل خوبیه هم برای یادگیری ES2015 و هم برای آشنا شدن با روشهایی که همین الان هم بتونید از این زبون مدرن تو کاراتون استفاده کنید. این سایت راهنماییتون میکنه تا از همین الان بتونید هم سمت سرور و هم سمت کاربر از ES2015 استفاده کنید. برای سمت کاربر فعلا میتونید با پیوست کردن یه فایل جاوااسکریپت به کدهاتون امکان حمایت از ES2015 رو فراهم کنید. ولی سمت سرور یخورده دنگ و فنگش بیشتره. در هر صورت سایت Babel بهتون کمک میکنه تا این امکان رو فراهم کنید.
درضمن، موقع نوشتن این مطلب متوجه شدم که حمید فرجی تو بابون یه مطلب خوب درمورد ES6 نوشته، بهتون توصیه میکنم که این نوشته رو هم مطالعه کنید.
جاوا اسکریپت نسخه جدید ES6 – نصب و راه اندازی Babel JS (حمید فرجی)
شاد باشید و بهروز تا همیشه جوون بمونید!
قربان شما،
آمیرزا