در شروع مسیر یادگیری جاوا اسکریپت ، دانستن مسیر گام به گام رسیدن به مقصد کار را سادهتر میکند. این کار باعث میشود تخمین درستتری از زمانی که برای آموزش جاوا اسکریپت نیاز دارید بزنید. همچنین از سردرگمی و هدر رفتن زمانتان برای تحقیق در این مورد کم میکند. در این مطلب قصد داریم مسیر پر پیچ و خم شروع یادگیری جاوا اسکریپت و حرفه ای شدن در آن را به طور کامل برای شما توضیح دهیم.
قبل یادگیری برنامه نویسی جاوااسکریپت شما نیاز دارید که با مفاهیم ابتدایی و الفبای برنامه نویسی آشنا شوید. ما در مجموعه آموزشی سون لرن دوره ای تحت عنوان الفبای برنامه نویسی تهیه کردیم که مناسب افرادی است که تمایل دارند وارد دنیای شیرین برنامه نویسی شوند.
ممکن است در ابتدا ساده به نظر برسد! زبان برنامه نویسی ساده ای که به صفحات HTML متصل میشود و معجزه میآفریند. اما پس از شروع یادگیری جاوا اسکریپت رفته رفته به این نتیجه میرسید که مفاهیم بسیاری برای یاد گرفتن وجود دارد. ممکن است کمی گیج شوید. اسامی زیادی به گوشتان میخورد: انواع تکنولوژیهای جاوا اسکریپت که کاربرد یا معنی آنها را نمیفهمید. نگران نباشید! هر چه نیاز دارید اینجاست:
چگونه جاوا اسکریپت یاد بگیریم
در ابتدای مسیر نیاز است که شما مفاهیم زبان برنامه نویسی جاوا اسکریپت مانند تعریف متغیر ها، توابع و... را فرا بگیرید. این مرحله مثل خط شروع شما است. میتوانید برای شروع یادگیری جاوا اسکریپت از کتاب ها، دوره آموزش جاوا اسکریپت، مقالات و... استفاده کنید. به هر حال احتمالا به زودی در این مرحله آماده میشوید. خواندن و دنبال کردن مقالات راهنمای جامع جاوا اسکریپت برای شروع این کار، پیشنهاد ماست!
یادگیری ES6
ECMAScript یا به اختصار ES یک استاندارد برای زبانهای برنامه نویسی است. جاوا اسکریپت مهمترین پیاده کننده این استاندارد است. ES6 در واقع آخرین نسخه منتشر شده از اکما اسکریپت است. اگر در مورد ES6 اطلاعات کافی ندارید میتوانید به بخش تاریخچه جاوا اسکریپت در نوشته جاوا اسکریپت چیست مراجعه کنید.
ES6 امکانات جدیدی را به جاوا اسکریپت اضافه میکند. اما همه مرورگرها از آن پشتیبانی نمیکنند. برای حل این مشکل میتوانیم از ابزار هایی استفاده کنیم که کد ES6 را به جاوا اسکریپتی که توسط همه مرورگرها قابل اجرا باشد ترجمه میکند. یکی از این ابزارها کتابخانه Babel است. با استفاده از Babel به راحتی میتوانید کدهای ES6 خود را برای اجرا روی مرورگر به جاوا اسکریپت خام تبدیل کنید.
یادگیری یک Task Runner
قبلا اجرای کارهای مختلفی مانند کم حجم کردن فایلهای جاوا اسکریپت و سی اس اس (minify کردن)، چسباندن فایلهای جاوا اسکریپت به هم (concatenate کردن) و... بر عهده خودمان بود. بعد از هر بار ایجاد تغییر در فایلها مجبور بودیم، تمام عملیات بالا و دسته ای از عملیات دیگر را دوباره و دوباره تکرار کنیم. این کار وقت گیر، پر هزینه و البته ملال آور بود. تا اینکه Task Runnerها به میدان آمدند.
Task Runner همان کاری را انجام میدهد که از اسم آن مشخص است. وظیفه Task Runner انجام دادن وظایف است. مثلا Task Runner میتواند با دریافت یک دستور watch با هر بار ایجاد تغییر در فایلها پروژه را دوباره اجرا کند. تعداد زیادی Task Runner وجود دارد که یادگیری کار با آنها هم راحت است مانند Gulp.js، Grunt.js، npmscript و... به طور کلی بیشتر Task Runnerها میتوانند این کارها را انجام دهند:
چک کردن فایلهای جاوا اسکریپت برای یافتن خطا
الحاق یا Concatenate کردن فایلهای مختلف جاوا اسکریپت
کم حجم کردن یا Minify کردن فایلهای جاوا اسکریپت
بهینه سازی حجم تصاویر
بارگزاری مجدد برنامه پس از تغییر در فایلها یا Watch کردن
و ....
یادگیری یک Package Manager
قدم بعدی در شروع یادگیری جاوا اسکریپت ، آموزش یک یا چند Package Manager است. پکیجها در واقع قطعاتی از کد هستند که قابلیت استفاده مجدد را دارند. این پکیجها میتوانند از یک نرم افزار Package Manager یا مدیریت پکیج دانلود شده و در سیستم توسعه برنامه نویس ذخیره شوند. پکیجهای مختلف ممکن است به یکدیگر وابسته باشند. Package Manager نرم افزاری است که به شما کمک میکند که پکیجهای مختلفی که خودتان نوشته اید و یا دیگران آماده کرده اند مدیریت کنید تا پروژه تان به درستی کار کند. اگر به دنبال یادگیری یک Package Manager هستید پیشنهاد ما به شما npm است. البته پکیج منجرهای دیگری مانند bower، yarn و... نیز وجود دارند.
یادگیری یک Bundler
در قدم بعدی باید با Bundlerها آشنا شوید. اگر آشنایی مقدماتی با جاوا اسکریپت پیدا کرده باشید احتمالا میدانید که برای اضافه کردن فایلهای جاوا اسکریپت به یک صفحه باید از کد زیر در HTML استفاده کنید:
در مثال بالا اگر در فایل app.js یک متغیر سراسری (متغیری که از تمام نقاط به آن دسترسی دارید) تعریف شده باشد؛ شما به راحتی میتوانید در داخل تگ 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 در نهایت برای اجرا به کد جاوا اسکریپت ترجمه میشود. منظور از بسته تکمیلی این است که شما حتی میتوانید کد جاوا اسکریپت خام را در Typescript استفاده کنید.
نتیجه گیری
ممکن است در ابتدای کار، شروع مسیر یادگیری جاوا اسکریپت ساده به نظر برسد. ممکن است تصور کنید با یک زبان برنامه نویسی ساده بدون حتی قابلیت تعریف نوع متغیرها سر و کار دارید. اما یادگیری این زبان برنامه نویسی و متعلقات آن قرار نیست یک هفته ای ممکن شود! اما ما در این مطلب تلاش کردیم این مسیر طولانی را برای شما قدم به قدم شرح دهیم. روشن بودن مسیر یادگیری جاوا اسکریپت یا Roadmap آن به شما کمک میکند با زاویه دید بازتر و روشنتری به تخمین زمان یادگیری بپردازید. علاوه بر آن دانستن قدم بعدی به شما آرامش خاطر بیشتری میدهد. به نظر شما چه چیزهای دیگری باید در این مسیر گنجانده شود؟
اگر میخواهید بیشتر درباره برنامه نویسی جاوا اسکریپت مطالعه کنید مقالات زیر را دنبال کنید
سلام وخسته نباشید مچکر از مقاله خوبتون خانم فرحمند من با توجه به رشتم به مشاورتون نیاز دارم ممنونم
حمیدرضا اکبرنژاد۰۴ مرداد ۱۳۹۸، ۱۸:۳۷
سلام. خیلی ممنون از مقاله ساده و در عین حال جامعتون. عالیه. همیشه قرار نیست یه مقاله با کلمات قلمبه سلمبه تو چشم مخاطب بلد بشه! سادگی، بهترین زیباییه. و این که اگه میشه یه کم عملی به بحث جاوااسکریپت بپردازین. این که چه سایتها و اپلیکیشن هایی با جاوااسکریپت نوشته شدن(بک اند و فرانت اند) مزایای این سایتا و اپلیکیشنا چیه و این که آینده این زبان برنامه نویسی و فریم ورک هاش تو ایران به چه شکله؟ محبوبیت کدوم فریم ورک جاوااسکریپت به لحاظ کاری داخل ایران بیشتره؟ بازم ممنون بابت مقالتون و سون لرن
مهدی علامه۰۵ مرداد ۱۳۹۸، ۰۶:۲۷
سلام حمید عزیز
خواهش میکنم
برای خواندن این موضوعات میتونی به لینکهای زیر سر بزنی
<a href="https://7learn.com/blog/javascript-frameworks"><strong>فریمورکهای جاوا اسکریپت : بهترین فریم ورکهای JavaScript</strong></a>
<strong><a href="https://7learn.com/blog/what-is-javascript">جاوا اسکریپت چیست؟</a></strong>
علی قادری۰۴ خرداد ۱۳۹۸، ۱۴:۱۹
سلام ممنون از مطلبتون
جاوااسکریپت برای بک اند چطوره ؟
ایا از php بهتره؟
برای بک اند وردپرس و لاراول رو یادبگیریم بهتره یا جاوااسکریپت؟
زهرا فرحمند۰۵ خرداد ۱۳۹۸، ۰۶:۰۲
سلام آقای قادری عزیز. راستش زبان بهتر و بدتر برای شما وجود نداره. هرکدوم از این زبانها و فریمورکها در جایگاه خودشون بهترین هستند. به زودی پادکستی با موضوع انتخاب بین وردپرس و لاراول خواهیم داشت. :)
banihashem3۰۹ اردیبهشت ۱۳۹۸، ۱۰:۴۴
با تشکر از شما بابت مطلب خوبتون
آتنا۰۸ اردیبهشت ۱۳۹۸، ۱۸:۰۴
راهنمای جامع و کاربردی بود. ممنون از شما و تیم خوبتون
hamid golipoor۰۲ اردیبهشت ۱۳۹۸، ۰۴:۳۷
با سلام و احترام خدمت مدیریت سایت جناب آوند
با کمال تشکر از سایت و مرجع آموزشی که کمک شایانی به رشد علمی دانشجویان داشته، لطف بفرمایید امکان دریافت PDF برای مقاله هایی که توی سایت گذاشته میشه رو قرار بدهید.
با تشکر و سپاس فراوان
لقمان آوند۰۲ اردیبهشت ۱۳۹۸، ۰۵:۱۰
سلام اقا حمید
ممنون از شما
سون لرن جدید رو تا 1 ماه دیگه میبینید سعی میکنیم تو ورژن جدید بزاریم
مجتبی شهریور۰۱ اردیبهشت ۱۳۹۸، ۱۸:۳۶
سلام
وقت بخیر عالی بود در صورت امکان دریافت مقالات به صورت پی دی اف فراهم بفرمایید
زهرا فرحمند۰۲ اردیبهشت ۱۳۹۸، ۰۵:۱۵
سلام جناب شهریور عزیز. به زودی قالب جدید با امکانات جدید بالا خواهد اومد. ممنون از اینکه توی این راه همراه ما هستید :)
احسان۰۱ اردیبهشت ۱۳۹۸، ۰۷:۵۹
سلام
خیلی ممنون، این مقاله تاثیر زیادی داره برای مطالعه و بهتر یادگیری زبان JavaScript
زهرا فرحمند۰۲ اردیبهشت ۱۳۹۸، ۰۵:۱۶
سلام. خوشحالم که استفاده کردید احسان عزیز :)
ایمان شیخ ممو۲۱ فروردین ۱۳۹۸، ۱۷:۰۹
عرض ادب و احترام
اینقدر وضح و شفاف توی این مقاله توضیحات مربوطه داده شده که یک فردی که اطلاعات مبتدیانه ای هم داشته باشه کاملا آگاهی پیدا میکنه ..
بسیار سپاسگزارم ازتون
زهرا فرحمند۲۵ فروردین ۱۳۹۸، ۰۵:۱۱
سلام. خوشحالم که استفاده کردید آقای شیخ مموی عزیز. موفق باشید :)
نازمحمد گری۲۱ فروردین ۱۳۹۸، ۰۴:۱۴
سلام / مقاله مفیدی بود / با تشکر
زهرا فرحمند۲۵ فروردین ۱۳۹۸، ۰۵:۱۲
سلام ممنونم از همراهیتون :)
احسان لطفی۱۹ فروردین ۱۳۹۸، ۱۰:۵۷
سلام و وقت به خیر
مقاله بسیار مفید و کارآمد است. سپاسگزارم
زهرا فرحمند۲۵ فروردین ۱۳۹۸، ۰۵:۱۴
سلام آقای لطفی عزیز خوشحالم که استفاده کردید :)
1۱۶ فروردین ۱۳۹۸، ۱۱:۵۸
1[codeBox]94102[/codeBox]
مجتبی شهریور۱۴ فروردین ۱۳۹۸، ۱۶:۲۷
سلام
ضمن تشکر از مطالب مفید شما
بنده تخصص نصبی در زمینه شبکه و مدیریت ای تی دارم (مدیر ای تی سازمان دولتی) تصمیم دارم در زمینه ی وب فعالیتم را شروع کنم خواهشمند هستم راهنمایی بفرمایید که از php شروع کنم یا جاوا اسکریپت و فریم ورکهای خاص ان؟؟
دانیال محمد رضایی۱۴ فروردین ۱۳۹۸، ۱۵:۴۴
https://talakar.com/1-gold.html
مجید زادگی۱۱ فروردین ۱۳۹۸، ۱۸:۱۸
سلام
مطالب بسیار فوق العاده بود.
متشکرم
hamid ashrafi۱۱ فروردین ۱۳۹۸، ۱۲:۲۲
عالی بود.ممنون از مطالب مفید سایتتون
بابک خادمی۱۰ فروردین ۱۳۹۸، ۰۷:۱۱
عالی بود مرسی :)
زهرا فرحمند۲۵ فروردین ۱۳۹۸، ۰۵:۱۷
ممنونم از توجهتون آقای خادمی عزیز موفق باشید :)
Agahi90.iR۰۳ فروردین ۱۳۹۸، ۰۹:۴۶
سپاسگزار از این مقاله خوبتون
موفق باشید
زهرا فرحمند۲۵ فروردین ۱۳۹۸، ۰۵:۱۵
ممنونم دوست عزیز ممنون از توجهتون
صابر صداقت۲۹ اسفند ۱۳۹۷، ۲۰:۲۳
معزرت لیسانس
صابر صداقت۲۹ اسفند ۱۳۹۷، ۲۰:۲۲
بنده فوق ایشان کامپیوتر
سجاد۲۷ اسفند ۱۳۹۷، ۱۲:۴۴
ممنون واقعا عالی بود
زهرا فرحمند۱۷ فروردین ۱۳۹۸، ۰۵:۰۶
خوشحالم که لذت بردید :)
Mehregan۲۷ اسفند ۱۳۹۷، ۰۷:۱۷
ممنون خیلی عالی بود
زهرا فرحمند۲۷ اسفند ۱۳۹۷، ۰۷:۱۸
سلام ممنون از شما بخاطر توجهتون :)
سید مجتبی حسینی۲۶ اسفند ۱۳۹۷، ۱۱:۱۴
سلام
مقالتون عالی بود
زهرا فرحمند۲۶ اسفند ۱۳۹۷، ۱۳:۴۴
سلام. ممنونم از توجهتون :)
حسن محمدی۲۵ اسفند ۱۳۹۷، ۱۹:۱۷
سلام و خسته نباشید
مطلب فوق العاده و مفیدی بود تشکر