زبان برنامه نويسي جاوا اسکريپت يکي از بهترين زبان هاي برنامه نويسي براي وب است، در اين مطلب نکاتي مهم درباره جاوا اسکريپت را به شما توضيح مي دهيم.
در دنياي برنامه نويسي به زبان جاوا اسکريپت پيدا کردن زيبايي در عين سادگي به آن معناست که ما مي خواهيم از يک ابزار در هر جايي که ممکن باشد استفاده کنيم و به اين ترتيب از يادگيري ابزار و زبان هاي برنامه نويسي مختلف راحت شويم. اگر شما يک توسعه دهنده وب هستيد احتمالا از اين واقعيت آگاه هستيد که جاوا اسکريپت مي تواند هم به عنوان يک زبان برنامه نويسي فرانت اند مورد استفاده قرار گيرد و هم به عنوان يک زبان برنامه نويسي بک اند. ممکن است شما يک برنامه نويس فول استک در جاوا اسکريپت باشيد و يا چيزهاي بسيار زيادي درباره آن بدانيد، بدون در نظر گرفتن اينکه شما در چه مرحله اي از يادگيري زبان برنامه نويسي جاوا اسکريپت هستيد در اينجا ليستي از ?? نکته که براي تبديل شدن به يک توسعه دهنده حرفه اي جاوا اسکريپت بايد بدانيد را آوردهايم.
توجه داشته باشيد که تبديل شدن به يک توسعه دهنده فول استک به اين معناست که شما قادر باشيد که کدهاي سمت سرور يا همان back-end که توسط سيستم عامل و پايگاه داده اجرا مي شود را بنويسيد و همچنين بتوانيد برنامه نويس خوبي در زمينه فرانت اند نيز باشيد.
مورد اول: درک اساسي از جاوا اسکريپت داشته باشيد
شما نمي توانيد بدون اينکه دانش کلي درباره زبان برنامه نويسي جاوا اسکريپت داشته باشيد تبديل به يک برنامه نويس فول استک جاوا اسکريپت و توسعه دهنده وب شويد. براي شروع اين کار لزومي ندارد که به يک استاد و معلم بزرگ مراجعه کنيد بلکه شما تنها بايد يک درک اوليه از دستورات کنترلي و ساير مفاهيم اوليه جاوا اسکريپت داشته باشيد. برخلاف چيزي که بسياري از افراد مي گويند جاوا اسکريپت يک زبان سخت نيست و شما به راحتي مي توانيد آن را ياد بگيريد، شايد در ابتداي کار فکر کنيد که يادگيري اين زبان برنامه نويسي سخت باشد اما با پيشروي متوجه خواهيد شد که يادگيري آن واقعاً سرگرم کننده است. بسياري از کدها و مثال هايي که استفاده مي کنيد ممکن است به صورت اشتباه استفاده شوند اما وقتي که به درستي از آنها استفاده کنيد متوجه مي شويد که واقعا ساده و کاملا کاربردي هستند.
زبان برنامه نويسي جاوا اسکريپت
واقعيت اين است که زبان برنامه نويسي جاوا اسکريپت زباني است که هم به صورت دايناميک و هم به صورت prototype قابل استفاده مي باشد، يادگيري اين زبان ممکن است براي افرادي که در زمينه شي گرايي تجربه هايي دارند کمي سخت باشد اما با کمي پيش رفتن به راحتي مفاهيم ها را متوجه مي شوند. به صورت کلي جاوا اسکريپت داراي دو نوع داده مي باشد: اشيا و متغيرهاي اوليه. ? نوع از متغيرهاي اوليه بولين ها، number، استرينگ ها، null و undefined مي باشند، تمامي متغيرهاي ديگري که در جاوا اسکريپت وجود دارند جز اشيا به شمار مي آيند، کلاس ها، توابع و آرايه ها نيز جزء اشيا به شمار مي آيند. در جاوا اسکريپت اشيا را در سطوح اوليه مي توان به عنوان مجموعه اي از کليد واژه ها در نظر گرفت که در آن کليد ها همواره يک استرينگ و مقادير هر چيزي از جمله يک متغير اوليه، يک شي، يک تابع، آرايه و ... مي توانند باشند.
برنامه نويسي ناهمگام و ناهمزمان در جاوا اسکريپت
يکي ديگر از جنبه هاي بسيار مهم زبان برنامه نويسي جاوا اسکريپت تاکيد آن بر برنامه نويسي ناهمگام و ناهمزمان است، اين کار به ترد اصلي برنامه شما اجازه مي دهد که زماني که منتظر به اتمام رسيدن برخي از متدها و توابع است خود نيز اجرا شود. دو راه اصلي براي انجام اين کار استفاده از کال بک ها و يا promises مي باشد.
مورد دوم: فريم ورک هاي فرانت اند
اپليکيشن هايي که به صورت تک صفحه اي طراحي مي شوند به دليل مزيت ها و کاربردهاي زيادي که دارند بسيار مورد توجه برنامه نويسان جاوا اسکريپت قرار مي گيرند. يادگيري يک فريم ورک فرانت اند بهترين روش براي ساختن چنين صفحه هايي است. سه مورد از بهترين فريم ورک هايي که براي فرانت اند مورد استفاده قرار مي گيرند عبارتند از Angular، React و Vue، البته توجه داشته باشيد که اين ها تنها گزينه هاي شما براي طراحي صفحه هاي اپليکيشن نيستند و گزينه هاي ديگري نيز وجود دارند. در دنياي برنامه نويسي جاوا اسکريپت کشمکش هاي بسيار زيادي بر سر اين موضوع به وجود آمده است کدام يک از اين فريم ورک ها بهترين هستند؟ اگر شما عبارت Angular vs React را در گوگل جستجو کنيد مقاله هاي بسيار زيادي را مشاهده مي کنيد که به بررسي مزايا و معايب اين دو فريم ورک پرداخته اند. من به دلايلي فريم ورک انگولار را در اين موضوع بهتر ديدم هرچند که بخش هايي وجود دارند که ممکن است در آنها React يا Vue بهتر باشند. من به شما توصيه مي کنم که حتما چند مورد از اين مقالات و مطالب را مطالعه کنيد تا درک کافي از تفاوت هاي اين فريم ورک ها به دست بياوريد.
مورد سوم: BootStrap 4 در جاوا اسکريپت
امروزه برنامه ها و اپليکيشن هاي تحت وب نياز دارند که هنگامي که در دسکتاپ و يا در گوشي هاي هوشمند باز مي شوند به صورت يکسان و زيبايي ديده شوند، شما نمي توانيد براي اين کار زمان زيادي صرف کنيد تا با استفاده از Css کدهايي بنويسيد که چنين کاربردي را براي شما داشته باشند. علاوه بر اين مورد ويژگي هاي بسيار زيادي در برنامه نويسي front-end با استفاده از جاوا اسکريپت وجود دارد که تجربه کاربري و رابط کاربري شما را بسيار زيباتر مي کند از جمله اين موارد مي توان به popovers، popups، navigation bars، alerts و ... اشاره کرد. اگر سعي کنيد تمامي اين موارد را خودتان به وجود بياوريد خيلي سريع متوجه مي شويد که کدهاي بيهوده و بسيار زيادي را نوشته ايد که فقط زمان زيادي از شما گرفته اند، بوت استرپ يک کتابخانه فرانت اند است که توسط توييتر ساخته شده است و براي شما خدمات بسيار زيادي را فراهم کرده است. اين کتابخانه که در جاوا اسکريپت کاربرد دارد شامل تعداد بسيار زيادي از استايل ها مي باشد شما مي توانيد به راحتي از آنها استفاده کنيد و ديگر نيازي نيست خودتان آنها را طراحي کنيد.
نکاتي درباره بوت استرپ
توجه داشته باشيد که لزومي ندارد که شما همه ويژگي هاي بوت استرپ را بدانيد، اما به شما توصيه ميکنم که قبل از شروع به برنامه نويسي وب با جاوا اسکريپت حتما مطالبي درباره طرح بندي صفحه در بوت استرپ را مطالعه کنيد. بوت استرپ داراي کاربردهاي بسيار متنوعي در برنامه نويسي وب مي باشد و بي شک هر کسي براي ساخت صفحات وب به آن نياز دارد. نکته بسيار مهم درباره اين کتابخانه اين است که به راحتي با فريم ورک هاي angular و React سازگار مي شود و نيازي نيست که درباره اين موضوع نگراني داشته باشيد.
مورد چهارم: کار با html و css
با اينکه بوت استرپ قادر است که به ميزان بسيار زيادي کارهاي css را انجام دهد اما شما هنوز هم اگر بخواهيد يک صفحه سفارشي شده را طراحي کنيد نياز داريد که تغييرات جزئي در کتابخانه استفاده شده در آن ايجاد کنيد اين تغييرات بايد توسط css انجام شوند. اگر قصد يادگيري css را داريد مي توانيد خيلي سريع با کمي جستجو در گوگل تمامي مواردي که براي طراحي صفحات سايت نياز داريد را ياد بگيريد، براي اينکه بتوانيد برنامه نويس خوبي در زمينه جاوا اسکريپت شويد حتما بايد css و html را ياد بگيريد و در واقع مي توان اين دو را پايه زبان برنامه نويسي جاوا اسکريپت دانست. از جمله مواردي که در css بايد ياد بگيريد مي توان به ساخت فونت هاي سفارشي، تنظيم ويژگي ها بر اساس عرض صفحه که بوت استرپ قادر به تنظيم آن نمي باشد و همينطور استفاده از nth-child اشاره کرد. توجه داشته باشيد که نکات زيادي در اين زمينه وجود ندارد و شما قبل از ساخت اولين قالب وب سايت خود مي توانيد خيلي سريع اين موضوع را ياد بگيريد. آشنايي با برخي از موارد همچون تفاوت بين عناصر درون خطي مانند <span> ميتواند تا حدود زيادي از دردسرهاي شما براي طراحي صفحات وب بکاهد.
نکاتي درباره اچ تي ام ال
اگر شما هم مانند من فکر کنيد ممکن است اچ تي ام ال را با تگ هاي باز و بسته و css را با سلکتور هاي آن بشناسيد. نکته بسيار مهمي که در اين ابزارها وجود دارد اين است که اين ابزارها پردازنده هاي بسيار متنوعي دارند که کار با اين ابزارها را بسيار سرگرم کننده مي کنند. به عنوان مثال براي استفاده از html ابزارهايي مانند Pug و HAMAL وجود دارند و براي css نيز ابزارهايي همچون SASS، LESS، Style و postCSS وجود دارند. شما همچنين مي توانيد در خط فرمان فريمورک انگولار پلاگين هايي را مورد استفاده قرار دهيد تا از اين ابزارها به خوبي استفاده کنيد.
مورد پنجم: NodeJs و فريم ورک بک اند
NodeJS محيطي براي اجراي کدهاي جاوا اسکريپت در بک اند مانند تمامي زبان هاي برنامه نويسي مي باشد، کدهاي جاوا اسکريپت که در دسکتاپ اجرا مي شوند کمي با کدهاي جاوا اسکريپت که در مرورگر اجرا مي شوند تفاوت دارند، اما هر دو اين ها از موتور v8 براي اجراي کدهاي جاوا اسکريپت استفاده مي کنند. شايد بتوان اصلي ترين تفاوت اين دو مورد را در آن دانست که مرورگر از يک API اضافي براي دسترسي به DOM استفاده مي کند. اگر مي خواهيد در برنامه نويسي به زبان جاوا اسکريپت حرفه اي شويد حتما بايد کار با Node JS را بلد باشيد.
گزينه هاي مختلف براي بک اند
درست همانند برنامه نويسي فرانت اند در جاوا اسکريپت در بک اند نيز شما گزينه هاي مختلفي را براي استفاده پيش روي خود داريد، ExpressJS يک فريم ورک استاندارد است که به شما اين امکان را مي دهد که با استفاده از يک سرور تمامي برنامه نويسي هاي مربوط به بک اند در جاوا اسکريپت را مديريت کنيد و شروع به نوشتن يک API جديد کنيد. اگر قصد داريد که فريم ورک هاي مختلفي را در ابتداي کار با بک اند در جاوا اسکريپت مورد آزمايش قرار دهيد توصيه مي کنم که اين کار را با فريم ورک Express در جاوا اسکريپت شروع کنيد تا تجربه مناسبي را در اين زمينه به دست بياوريد.
مورد ششم: يادگيري TypeScript
زبان برنامه نويسي جاوا اسکريپت داراي مسائل و مشکلات بي شماري مي باشد، از جمله اين مسائل مي توان به مواردي همچون سازگاري مرورگر با کامپيوتر هاي مختلف، نسخه هاي مختلفي از NodeJS، نبود ايمني مناسبي که پيچيدگي کمتري براي استفاده داشته باشد و ... اشاره کرد. استفاده از TypeScript به شما کمک مي کند که در ES5 کدهاي تميزتري را بنويسيد و اين کار از طريق حذف برخي از مشکلاتي که با يکديگر سازگار هستند صورت مي گيرد. اين ابزار همچنين به شما کمک مي کند تا کدهاي شي گرايي جاوا اسکريپت را به روش سنتي و مشابه زبان هاي برنامه نويسي جاوا و سي شارپ بنويسيد.
برنامه نويسي بهتر با TypeScript
برنامه نويسي با استفاده از TypeScript به من کمک کرده است که تبديل به يک برنامه نويسي بهتر و حرفه اي تر شوم و همچنين کمک کرده است که مفاهيمي مانند اينترفيس ها، وراثت، سطح دسترسي ها ( public، private و ...) و abstraction را بهتر درک کنم. استفاده از TypeScript نسبت به جاوا اسکريپت بيشتر حس واقعي بودن را به شما القا مي کند، يکي ديگر از مهمترين مزاياي استفاده از اين ابزار اين است که مي توان آن را با استفاده از يک فايل lint که استانداردهاي کدگذاري خاصي را دارا مي باشد اجرا کرد.
مورد هفتم: آشنايي با ابزار API calling
يکي از بزرگترين اشتباهاتي که معمولاً توسعه دهندگان جاوا اسکريپت که به تازگي وارد دنياي حرفه اي شده اند انجام مي دهند که خود من هم شامل آنها هستم اين است که زماني که در حال برنامه نويسي در قسمت بک اند در جاوا اسکريپت هستند از API هاي فرانت اند استفاده مي کنند، اين کار باعث ميشود که زمان اجراي کد هاي شما در سرور به ميزان بسيار زيادي افزايش پيدا کند. در اين شرايط شما بايد هر بار که صفحه وب سايت خود را رفرش مي شود اطلاعات را از سرور گرفته و آن را به نمايش بگذاريد. يکي از مهم ترين اقداماتي که مي توانيد براي افزايش سرعت وب سايت خود انجام دهيد اين است که قسمت فرانت اند و بک اند برنامه خود را به صورت جداگانه برنامه نويسي کنيد. آشنايي با ابزارهاي API Calling مانند ابزار Postman يا SoapUI باعث مي شود که شما بتوانيد API هاي خود را بدون اينکه در قسمت فرانت اند کاري انجام دهيد فراخواني کنيد.
مورد هشتم: آشنايي با SQL
با وجود همه نفرتي که در اطراف NoSQL Database وجود دارد و همه محبوبيتي که mongoDB در ميان برنامه نويسان جاوا اسکريپت که از NodeJS استفاده مي کنند دارد، هنوز هم در بسياري از برنامه ها و اپليکيشن هاي کاربردي اين ديتابيس است که مورد استفاده قرار مي گيرد. صرف نظر از اين موضوع که شما در برنامه نويسي با زبان برنامه نويسي جاوا اسکريپت براي قسمت بک اند برنامه نويسي مي کنيد يا خير شما بايد اطلاعات کافي درباره SQL داشته باشيد چرا که SQL پيش شرط لازم براي هر کسي است که مي خواهد در برنامه نويسي تحت وب با استفاده از زبان برنامه نويسي جاوا اسکريپت حرفه اي شود. لزومي ندارد که شما در اين موضوع تبديل به يک متخصص شويد بلکه تنها بايد با مواردي همچون پياده سازي پايه ديتابيس، ايجاد و به روزرساني جدول ها و همچنين وارد کردن داده ها آشنا شويد.
نکاتي درباره SQL
بسياري از ديتابيس هاي مهم ارتباطي به ويژه MySQL و PostgreSQL به خوبي با NodeJs ادغام مي شوند. شما به راحتي مي توانيد با استفاده از اين ابزار با MongoDB يا هر پايگاه داده NodeJS ارتباط برقرار کنيد. من تحقيقات بسيار زيادي در اين زمينه انجام دادم متوجه شدم که استفاده از SQL استاندارد کمي کمتر از ساير انواع پايگاه هاي داده اي هستند که از Json ها( اشيا در جاوا اسکريپت) استفاده مي کنند. اگر مي خواهيد اطلاعات خود را تحت عنوان Json ذخيره کنيد حدس ميزنم که ابزارهاي PostgreSQL و MySQL هنوز هم ميتوانند اين کار را براي شما انجام دهند.
استفاده از يونيت تست و end-to-end تست
به هيچ وجه، تکرار مي کنم به هيچ وجه اهميت تست را در برنامه نويسي به زبان جاوا اسکريپت را دست کم نگيريد. من در دنياي واقعي متوجه شده ام که استفاده از يونيت تست به خصوص در برنامه نويسي به زبان جاوا اسکريپت در قسمت فرانت اند اهميت بسيار بالايي دارد. تست ها نه تنها از اشکالات کاربران جلوگيري مي کنند بلکه باعث مي شوند که کد شما بسيار قوي تر شده و شما مجبور شويد که کد خود را بررسي کنيد و آن را بهبود ببخشيد. برخي از فريم ورک ها مانند انگولار داراي ابزارهايي براي تست هستند تا شما ديگر لازم نباشيد خودتان تنظيمات مربوط به تست را انجام دهيد، به وسيله اين ابزارها شما به راحتي مي توانيد شروع به تست کردن برنامه خود کنيد.
نحوه استفاده از تست ها در برنامه نويسي به زبان جاوا اسکريپت
هر عنصري که در يک صفحه وب وجود دارد بر اساس کاري که کاربر با آن انجام مي دهد رفتار متغيري را دارد که هر يک از اين رفتارها بايد توسط يونيت تست، تست شوند. در بک اند تمامي روت ها و متدهاي عمومي که توسط کاربر مورد استفاده قرار گرفته اند بايد توسط يونيت تست مورد تست قرار گيرند. End-to-End test ( براي تست کردن يکپارچگي برنامه استفاده قرار مي گيرد) بايد براي هر کاري که کاربر انجام مي دهد يکبار اجرا شود که اين اجرا شامل چندين صفحه وب مي باشد و معمولاً در بک اند اجرا مي شود. به عنوان مثال براي ورود به سيستم حتماً بايد از end-to-end test استفاده شود، اگر کاربر بعد از ورود به حساب کاربري خود يک صفحه جديد را باز کند بايد يک end2end تست نيز براي آن صورت گيرد.
مفاهيم تعيين هويت کاربر
راه هاي بسيار زياد و متنوعي وجود دارد که بتوانيد با استفاده از آنها وب سايت خود را تبديل به يک وب سايت امن کنيد. استفاده از توکن هاي سمت کاربر، session storage و تعيين هويت کاربران با استفاده از ابزارهايي همچون MS Active Directory. لزومي ندارد که شما همه اين روش ها را بلد باشيد اما شما بايد يک ايده داشته باشيد که چه چيزهايي را براي امن کردن وب سايت خود در اختيار داريد. زماني که شما اين کار را انجام دهيد مي توانيد در مواقع لزوم بهترين گزينه و راحت ترين ها را بر اساس ميزان دانش خود انتخاب کنيد و مورد استفاده قرار دهيد. همچنين داشتن يک ايده کلي از اصلي ترين روش هاي حمله هکرها به وب سايت ها مي تواند کمک بسيار زيادي به شما کند. لزومي ندارد که شما تبديل به يک متخصص امنيت شبکه شويد اما شما بايد مهم ترين اين روش ها را بدانيد تا از سايت خود مراقبت کنيد، از جمله اين روش ها ميتوان به مواردي همچون درخواست اسکريپت cross-site و حملات SQL injection اشاره کرد.
امن کردن API ها در قسمت بک اند جاوا
براي اين که API هاي خود را در قسمت بک اند جاوا اسکريپت امن کنيد به شما توصيه مي کنم که از توکن هاي وب JSON استفاده کنيد. NodeJS کتابخانه هاي بسيار کاربردي دارد که مي توانيد از آنها به همراه ابزار Express براي اين کار استفاده کنيد. توکن هاي وب جيسون نوعي از تعيين هويت هاي سمت کاربر مي باشند که با استفاده از آنها شما ميتوانيد تنها به کاربران مورد تاييد خود اجازه دسترسي بدهيد که اين کاربران بتوانند از قسمت بک اند برنامه شما استفاده کنند. توکن هاي وب جيسون همچنين ميتوانند اشياء جيسون رمزنگاري شده را در خود ذخيره کنند بنابراين شما ميتوانيد از اين ويژگي براي امن کردن درخواست هاي خود استفاده کنيد. اگر شما قصد داريد که اطلاعات دائمي براي کاربران خود ايجاد کنيد( به عنوان مثال ذخيره سازي اطلاعات کارت خريد براي يک يوزر در هنگام ترک کردن سايت) شما بايد اطلاعاتي درباره Session ها به دست بياوريد.