در شروع مسیر یادگیری جاوا اسکریپت ، دانستن مسیر گام به گام رسیدن به مقصد کار را سادهتر میکند. این کار باعث میشود تخمین درستتری از زمانی که برای آموزش جاوا اسکریپت نیاز دارید بزنید. همچنین از سردرگمی و هدر رفتن زمانتان برای تحقیق در این مورد کم میکند. در این مطلب قصد داریم مسیر پر پیچ و خم شروع یادگیری جاوا اسکریپت و حرفه ای شدن در آن را به طور کامل برای شما توضیح دهیم.
قبل یادگیری برنامه نویسی جاوااسکریپت شما نیاز دارید که با مفاهیم ابتدایی و الفبای برنامه نویسی آشنا شوید. ما در مجموعه آموزشی سون لرن دوره ای تحت عنوان الفبای برنامه نویسی تهیه کردیم که مناسب افرادی است که تمایل دارند وارد دنیای شیرین برنامه نویسی شوند.
ممکن است در ابتدا ساده به نظر برسد! زبان برنامه نویسی ساده ای که به صفحات HTML متصل میشود و معجزه میآفریند. اما پس از شروع یادگیری جاوا اسکریپت رفته رفته به این نتیجه میرسید که مفاهیم بسیاری برای یاد گرفتن وجود دارد. ممکن است کمی گیج شوید. اسامی زیادی به گوشتان میخورد: انواع تکنولوژیهای جاوا اسکریپت که کاربرد یا معنی آنها را نمیفهمید. نگران نباشید! هر چه نیاز دارید اینجاست:
در ابتدای مسیر نیاز است که شما مفاهیم زبان برنامه نویسی جاوا اسکریپت مانند تعریف متغیر ها، توابع و… را فرا بگیرید. این مرحله مثل خط شروع شما است. میتوانید برای شروع یادگیری جاوا اسکریپت از کتاب ها، دوره آموزش جاوا اسکریپت، مقالات و… استفاده کنید. به هر حال احتمالا به زودی در این مرحله آماده میشوید. خواندن و دنبال کردن مقالات راهنمای جامع جاوا اسکریپت برای شروع این کار، پیشنهاد ماست!
ECMAScript یا به اختصار ES یک استاندارد برای زبانهای برنامه نویسی است. جاوا اسکریپت مهمترین پیاده کننده این استاندارد است. ES6 در واقع آخرین نسخه منتشر شده از اکما اسکریپت است. اگر در مورد ES6 اطلاعات کافی ندارید میتوانید به بخش تاریخچه جاوا اسکریپت در نوشته جاوا اسکریپت چیست مراجعه کنید.
ES6 امکانات جدیدی را به جاوا اسکریپت اضافه میکند. اما همه مرورگرها از آن پشتیبانی نمیکنند. برای حل این مشکل میتوانیم از ابزار هایی استفاده کنیم که کد ES6 را به جاوا اسکریپتی که توسط همه مرورگرها قابل اجرا باشد ترجمه میکند. یکی از این ابزارها کتابخانه Babel است. با استفاده از Babel به راحتی میتوانید کدهای ES6 خود را برای اجرا روی مرورگر به جاوا اسکریپت خام تبدیل کنید.
قبلا اجرای کارهای مختلفی مانند کم حجم کردن فایلهای جاوا اسکریپت و سی اس اس (minify کردن)، چسباندن فایلهای جاوا اسکریپت به هم (concatenate کردن) و… بر عهده خودمان بود. بعد از هر بار ایجاد تغییر در فایلها مجبور بودیم، تمام عملیات بالا و دسته ای از عملیات دیگر را دوباره و دوباره تکرار کنیم. این کار وقت گیر، پر هزینه و البته ملال آور بود. تا اینکه Task Runnerها به میدان آمدند.
Task Runner همان کاری را انجام میدهد که از اسم آن مشخص است. وظیفه Task Runner انجام دادن وظایف است. مثلا Task Runner میتواند با دریافت یک دستور watch با هر بار ایجاد تغییر در فایلها پروژه را دوباره اجرا کند. تعداد زیادی Task Runner وجود دارد که یادگیری کار با آنها هم راحت است مانند Gulp.js، Grunt.js، npmscript و… به طور کلی بیشتر Task Runnerها میتوانند این کارها را انجام دهند:
قدم بعدی در شروع یادگیری جاوا اسکریپت ، آموزش یک یا چند Package Manager است. پکیجها در واقع قطعاتی از کد هستند که قابلیت استفاده مجدد را دارند. این پکیجها میتوانند از یک نرم افزار Package Manager یا مدیریت پکیج دانلود شده و در سیستم توسعه برنامه نویس ذخیره شوند. پکیجهای مختلف ممکن است به یکدیگر وابسته باشند. Package Manager نرم افزاری است که به شما کمک میکند که پکیجهای مختلفی که خودتان نوشته اید و یا دیگران آماده کرده اند مدیریت کنید تا پروژه تان به درستی کار کند. اگر به دنبال یادگیری یک Package Manager هستید پیشنهاد ما به شما npm است. البته پکیج منجرهای دیگری مانند bower، yarn و… نیز وجود دارند.
در قدم بعدی باید با Bundlerها آشنا شوید. اگر آشنایی مقدماتی با جاوا اسکریپت پیدا کرده باشید احتمالا میدانید که برای اضافه کردن فایلهای جاوا اسکریپت به یک صفحه باید از کد زیر در HTML استفاده کنید:
<script src=’app.js’ rel=’text/javascript’></src> <script> … </script>
در مثال بالا اگر در فایل app.js یک متغیر سراسری (متغیری که از تمام نقاط به آن دسترسی دارید) تعریف شده باشد؛ شما به راحتی میتوانید در داخل تگ script دوم به آن دسترسی داشته باشید (در جاوا اسکریپت به متغیر هایی که در خطوط بعدی تعریف شده اند دسترسی ندارید). حالا فرض کنید که تعداد فایلهای جاوا اسکریپت زیاد باشد. برای مثال، نمونه زیر را در نظر بگیرید:
<script src=’app.js’ rel=’text/javascript’></script> <script src=’main.js’ rel=’text/javascript’></script> <script src=’script.js’ rel=’text/javascript’></script>
در این حالت کنترل ترتیب متغیرها در فایلها کمی سخت میشود. ممکن است در فایل main.js به متغیری احتیاج داشته باشید که در فایل script.js تعریف شده است. در این حالت راه حل، جابه جا کردن ترتیب معرفی فایلها است. اما این عمل با زیادتر شدن تعداد فایلها پیچیدهتر میشود. در اینجا Bundlerها یا Module Loaderها برای الحاق خودکار فایلها به کمک شما میآیند!
Bundler ابزاری است که تمام تکه کدهای جاوا اسکریپت و فایلهای وابسته آنها را به صورت یک بسته در یک فایل جمع آوری میکند. این کار علاوه بر رفع دردسری که بالا توضیح داده شد، باعث میشود تعداد Requestها در زمان بارگزاری صفحه کاهش پیدا کند و سرعت بارگزاری صفحه بهبود پیدا کند.
از محبوبترین Bundlerها میتوان به Webpack، Browserify، Rollup اشاره کرد. البته باید بگوییم که ابزارهای جامعی مثل Webpack ضمن اینکه کتابخانه Babel را برای ترجمه کد ES6 در خود دارند، بخشی از وظایف Task Runnerها را هم انجام میدهند!
بعد از مقداری کدنویسی با جاوا اسکریپت متوجه میشوید که کدهای زیادی در حال تکرار شدن هستند. ایجاد تغییر در کدها با زیاد شدن خطوط کد مشکلتر و مشکلتر میشود. این روش کدزنی مسلما استاندارد نیست. اما ابزار هایی وجود دارند که در واقع کدهایی از پیش نوشته شده و استاندارد هستند. فریورکها چهارچوب هایی هستند که شما تحت آنها به کدزنی میپردازید و با این روش، نه تنها سرعت توسعه برنامه افزایش پیدا میکند بلکه نگهداری و بهینه سازی کدها بسیار آسان میشود. به عنوان مثال Angular.js، React و Vue.js تعدادی از این فریمورکهای محبوب جاوا اسکریپت هستند. اگر دوست دارید بیشتر با این فریمورکها آشنا شوید، ما مقاله ای در مورد معرفی محبوبترین فریمورکهای جاوا اسکریپت برای شما آماده کرده ایم.
در کار برنامه نویسی زمان هایی پیش میآید که برنامه به مشتری تحویل داده میشود اما مشتری ادعا میکند که برنامه به درستی کار نمیکند. در موقعیتهای مختلفی برنامههای ما به درستی عمل نمیکنند و به اصطلاح باگ دارند. بنابراین برنامه باید بارها و بارها ایرادگیری شود. این عمل، عمل وقت گیر و هزینه بری است. در واقع یک کابوس به تمام معنا!
راهکار این است که برنامههای ما بر اساس تست یا Test Driven نوشته شوند. یعنی برای تک تک عملکردهای برنامه ابتدا کدی برای تست آن نوشته شود. پس از اتمام کار تست نویسی شروع به نوشتن کدهایی میکنیم تا در نهایت در آن تستها با موفقیت اجرا شوند. با این کار اگرچه فرآیند کدنویسی را طولانیتر کرده ایم، اما در نهایت فرآیند دیباگ و اشکال گیری نرم افزار بسیار راحت میشود.
در جاوا اسکریپت هم ابزارهای تست نویسی مختلفی وجود دارند. به عنوان مثال میتوان به Jest از شرکت فیسبوک و Mocha اشاره کرد.
یکی از کاربردهای بسیار زیاد جاوا اسکریپت استفاده از آن در بک اند برنامه هاست. به این صورت که با استفاده از موتور V8 جاوا اسکریپت را روی کامپیوتر سرور اجرا کنیم. اگر قصد دارید یک برنامه نویس فول استک جاوا اسکریپت شوید بنابراین برنامه نویسی بک اند با جاوا اسکریپت گزینه ای است که باید حتما یاد بگیرید. برای برنامه نویسی جاوا اسکریپت در سمت سرور از فریمورک Node.js استفاده میکنیم. در مطلبی که در مورد محبوبترین فریمورکهای جاوا اسکریپت نوشته ایم به معرفی این فریمورک پرداخته ایم.
متاسفانه زبان برنامه نویسی جاوا اسکریپت زبانی است که از نظر تعریف نوع متغیرها فقیر است. این به آن معنی است که شما نمیتوانید در جاوا اسکریپت انواع متغیرها را تعیین کنید. مشکل این فقدان در این است که دیباگ کدها در زمان اجرا را به شدت مشکل و در نهایت جاوا اسکریپت خام را در سمت سرور، برای اپلیکیشنهای بزرگ نامناسب میکند.
زبان Typescript که در واقع یک بسته تکمیلی برای زبان برنامه نویسی جاوا اسکریپت است این مشکل را حل میکند. Typescript امکانات زیادی را به جاوا اسکریپت اضافه میکند. زبان Typescript در نهایت برای اجرا به کد جاوا اسکریپت ترجمه میشود. منظور از بسته تکمیلی این است که شما حتی میتوانید کد جاوا اسکریپت خام را در Typescript استفاده کنید.
ممکن است در ابتدای کار، شروع مسیر یادگیری جاوا اسکریپت ساده به نظر برسد. ممکن است تصور کنید با یک زبان برنامه نویسی ساده بدون حتی قابلیت تعریف نوع متغیرها سر و کار دارید. اما یادگیری این زبان برنامه نویسی و متعلقات آن قرار نیست یک هفته ای ممکن شود! اما ما در این مطلب تلاش کردیم این مسیر طولانی را برای شما قدم به قدم شرح دهیم. روشن بودن مسیر یادگیری جاوا اسکریپت یا Roadmap آن به شما کمک میکند با زاویه دید بازتر و روشنتری به تخمین زمان یادگیری بپردازید. علاوه بر آن دانستن قدم بعدی به شما آرامش خاطر بیشتری میدهد. به نظر شما چه چیزهای دیگری باید در این مسیر گنجانده شود؟