هر آن چیزی که باید از جاوا اسکریپت بدانید!
جاوا اسکریپت به عنوان یکی از مهمترین و پرکاربردترین زبان های برنامه نویسی دنیا، توانایی ها و ضعف های مخصوص به خود را داراست. در این مقاله ضمن بررسی تاریخچه این زبان، به بررسی موارد مهم در این زمینه خواهیم پرداخت.
می دانیم که جاوا اسکریپت، یک زبان سمت کاربر یا به اصطلاح Client-Side می باشد. به این مفهوم که تمامی کدهای این زبان در مرورگر کاربر انجام می پذیرد. پس در هنگام طراحی سایت، هر چه بیشتر بتوانیم با استفاده از جاوا اسکریپت، یک حالت Interactive برای سایت به وجود بیاوریم و از بار سمت سرور کاهش دهیم، می توانیم باعث بهبود سرعت سایت شویم. از آن جایی که کدهای جاوااسکریپت قابلیت کش شدن در حافظه نهان مرورگر را دارا هستند، این امر در نهایت به بهبود سئوی سایت نیز کمک شایانی می کند. اما پیش از آموزش جاوا اسکریپت، لازم است که اطلاعات اولیه ای از این زبان به دست آوریم.
تاریخچه ای مختصر از جاوا اسکریپت
جاوا اسکریپت و جاوا یکی نیستند. اگر بخواهیم به صورت رسمی صحبت کنیم، باید بگوییم که جاوا اسکریپت یک پیاده سازی از استانداردی است که با ECMAScript شناخته می شود. در مورد ECMAScript در مقالات دیگر، مطالب بیشتری خواهید آموخت. جاوااسکریپت کجا متولد شده است؟ احتمال دارد داستانی مفصل درباره تاریخ جاوا اسکریپت شنیده باشید. دانستن مختصری از تاریخچه جاوا اسکریپت برای درک نحوه داروسازی این زبان در محیطهای مختلف اهمیت ویژه ای دارد.
جاوا اسکریپت توسط برندان ایچ در شرکت Netscape در حدود سال های 1995 – 1996 متولد به زبان در آن زمان، LiveScript خوانده می شد که نامی بسیار عالی برای یک زبان جدید بود؛ اما داستان به همین جا ختم نشد. طی یک تصمیم نامناسب، بخش بازاریایی نام این زبان را به جاوا اسکریپت تغییر داد و سلسله ای از آشفتگی ها و اشتباه گرفتن ها در آمد. همان طور که می دانید، در همان زمان جاوا یک زبان جدید و مهیج به شماره این میان کس یا کسانی تصمیم گرفتند تا با استفاده از این نام از محبوبیت جاوا نین اینگونه شد که زبان جاوا اسکریپت و زبان جاوا با یکدیگر ارتباط یافتند.
ولی در عین حال برای جاوا اسکریپت یک نکته منفی بود، چرا که جاوا با وجود آنکه به خاطر استفاده زیاد، محبوبیت بالایی به دست آورده بود، ولی همزمان به دلیل شهرت بدی که کسب کرده بود و بدنام بود. زيرا توسعه دهندگان، جاوا را در وب سایت هایشان برای ارائه اطلاعات با ان بهسازی های بی مورد و بی فایده (از قبیل متن های متحرکی که روی اعصاب کاربر راه می رفتند) به کار می گرفتند.
جاوا برای اجرا نیاز داشت تا یک پلاگین به مرورگر وب بارگزاری شود خود کاهش سرعت را در گشت و گذار بر روی وب، برخی مشکلات دسترسی و در نهایت و آزردگی بازدیدکنندگان را به دنبال داشت. تنها در سالهای اخیر است که زبان جاوا اسکریپت راه خود را برای جدایی از این همراهی اشتباه با جاوا آغاز کرده است.
ویژگی های جاوا اسکریپت
جاوا اسکریپت یک زبان کامپایل شده نیست، در نتیجه اصلا شبیه زبان های فاقد توان و ضعیف به نظر نمی آید. برنامه نویسان جدیدالورود به دنیای جاوا اسکریپت به سرعت قدرت و سودمندی این زبان را در شبیه سازی و ایجاد تعامل بر روی وب در خواهند یافت. تا قبل از به کارگیری زبان جاوا اسکریپت، چه بسیار سایت هایی ایجاد شدند که فقط از زبان ساده HTML گرافیک هایی بدون جاذبه بصری و فاقد توانایی تعامل با محتوای سایت بهره می بردند.
در ابتدا، جاوا اسکریپت فقط بر روی اعتبارسنجی های سمت کاربر و کار با تصاویر موجود در صفحات وب تمرکز داشت که در نتیجه، تعامل پذیری و بازخوردهایی مفید، و هرچند ابتدایی را برای بیننده سایت به ارمغان می آورد. هنگامی که بازدیدکننده یک وب سایت، فرمی را پر می کرد. جاوا اسکریپت محتوای این فرم وب را به جای فرستادن به سرور، بلافاصله تعيين اعتبار می کرد. مخصوصا قبل از آن که اینترنت با پهنای باند بالا فراگیر شود، اجتناب از ارسال اطلاعات به سرور و دریافت نتیجه از آن روشی عالی برای سرعت بخشیدن به وب سایت ها و عکس العمل سریع تر آنها در مواجه کاربر بود و این نکته همچنان صادق است.
جاوا اسکریپت چه کارهایی می تواند انجام دهد؟
جاوا اسکریپت معمولا یک زبان مکمل است، بدین معنا که چندان معمول نیست که یک پروژه تنها با زبان جاوا اسکریپت و بدون استفاده از زبان های دیگر مانند HTML و بدون نمایش در یک مرورگر وب، توسعه یابد. برخی از محصولات Adobe نیز از جاوا اسکریپت پشتیبانی می کنند؛ اما به عمده جاوا اسکریپت در برنامه نویسی مبتنی بر وب به کار گرفته می شود. جاوااسکریپت همچنین نماینده حرف آ در کلمه مخفف شده AJAX (تقارن غيرهمزمان جاوا اسکریپت و XML) است. AJAX قلب وب 2 به شمار می آید. ورای این مطلب، امروزه زبان جاوا اسکریپت یک زبان رایج و معمول برای فراهم آوردن تعامل پذیری مورد انتظار کاربران اینترنت به شمار می آید.
برای یک پروژه وب، جاوا اسکریپت می تواند کارهای بسیاری را در سمت کاربر انجام دهد. به طور مثال، جاوااسکریپت می تواند تعامل پذیری لازم برای یک وب سایت را با ایجاد منوهای آبشاری، تغييرشكل متن بر روی صفحه، افزودن المان های پویا به صفحه و کمک در ورود اطلاعات در فرم تأمین کند.
قبل از آن که فرا بگیرید جاوااسکریپت چه کارهایی می تواند انجام دهد، لازم است تا از مواردی که جاوا اسکریپت نمی تواند انجام دهد آگاهی یابید، ولی توجه داشته باشید که هیچ کدام از این دو بحث در اینجا به صورت کامل و جامع ارائه نشده اند.
جاوا اسکریپت چه کارهایی نمی تواند انجام دهد؟
بسیاری از عملیات هایی که زبان جاوا اسکریپت نمی تواند انجام دهد به دلیل محدودیت به کارگیری جاوا اسکریپت در محیط مرورگر وب است. این بخش برخی از کارهایی که جاوا اسکریپت نمی تواند و برخی را نیز که نباید انجام دهد بررسی می کند.
جاوا اسکریپت نمی تواند به کلاینت اجبار شود.
جاوااسکریپت برای اجرا متکی به یک رابط با برنامه میزبان است. این برنامه میزبان معمولا مرورگر وبی است که کاربر استفاده میکند. به دلیل آنکه جاوا اسکریپت یک زبان سمت كلاينت است، تنها می تواند کارهایی را انجام دهد که کاربر اجازه آن را می دهد. بعضی اشخاص هنوز از مرورگرهای قدیمی استفاده می کنند که جاوا اسکریپت را اصلا پشتیبانی نمی کنند، برخی دیگر نیز به خاطر ناتوانی های موجود و به دلیل استفاده از برنامه های مربوطه، مانند برنامه های قرائت متن و دیگر نرم افزارهای جانبی که به آنها در وب گردی کمک می کنند قادر به استفاده از بسیاری از امکانات زیبای جاوا اسکریپت نیستند.
گروهی دیگر نیز ترجیح می دهند جاوا اسکریپت را چه به خاطر نگرانی های امنیتی یا به دلیل شهرت بد جاوا اسکریپت که محصول باز شدن پنجره های اضافی و اعصاب خردکن تبلیغاتی در حین وب گردی است غیرفعال کنند. صرف نظر از دلایل موجود، شما باید یک سری عملیات اضافی را انجام دهید تا وب سایتی که طراحی میکنید برای آن دسته از افرادی که جاوا اسکریپت ندارند نیز قابل دسترسی باشد. من هم اکنون میتوانم صدای اعتراض شما را به وضوح بشنوم:
ولی این امکانات در صفحه خیلی (هر صفتی را که دوست دارید در اینجا قرار دهيد) عالی، مهم، زیبا، فوق العاده، چشم نواز است و در نتیجه حذف آن غیرممکن
- جاوا اسکریپت نمی تواند امنیت داده ها را تضمین کند.
از آنجا که جاوا اسکریپت به طور کامل بر روی کامپیوتر کلاینت اجرا می شود، توسعه دهندى اجازه دهند که کدهای جاوا اسکریپت به سمت کلاینت برود. همان طور که انتظار دارید، این کنترل خارج شدن برنامه، مخاطرات جدی در بر دارد. زمانی که برنامه، بر روی کامپیوتری قرار گرفت، کلاینت می تواند قبل از فرستادن داده ها به سرور، هر عمل شرورانه و ناپسند روی آنها انجام دهد.
مشابه برنامه نویسی های دیگر حوزه وب، هرگز نباید به داده ای که از کلاینت می آید اطمینان کنید. حتی اگر از توابع جاوااسکریپت برای تعیین صحت محتوای فرود استفاده کرده اید، هنوز باید این مقادیر ورودی را که به سرور می رسند کنترل و تعيين اعتبار کن یک کلاینت با جاوااسکریپت غیرفعال ممکن است برخی داده های ناخواسته را از طریق فرم وی پس بفرستد.
اگر از روی معصومیت باور دارید که تابع جاوا اسکریپت در سمت كلاينت قبلا. دارد را برای اطمینان از صحت آن چک کرده است، پس کاملا احتمال دارد با برخی داده های غیر معتبر فرستاده شده به سرور مواجه شوید که متاسفانه ممکن است نتایج مخربی در پی داشته باشند.
به یاد داشته باشید که جاوا اسکریپت ممکن است بر روی کامپیوتر بازدیدکننده غیرفعال شده باشد. شما نمی توانید به موفقیت برخی حیله های زیرکانه اعتماد داشته باشید، مواردی مانند استفاده از جاوا اسکریپت در غیرفعال کردن راست کلیک یا جلوگیری از دیدن متن اصلی صفحه توسط کاربر و علاوه بر این نباید از این گونه ترفندها برای مسائل امنیتی استفاده کنید.
- جاوا اسکریپت نمی تواند به چندین دامنه دسترسی داشته باشد.
برنامه نویس جاوااسکریپت همیشه باید سیاست “مبدأ واحد” را در نظر داشته باشد. این سیاست می گوید اسکریپت هایی که درون یک دامنه اجرا می شوند نمی توانند به ویژگی ها و خصوصيات دامنه اینترنتی دیگری دسترسی داشته باشند، یا اینکه بر روی اسکریپت ها با داده های وارد شده از یک دامنه دیگر اثر بگذارند.
به طور مثال، جاوا اسکریپت را می توان برای باز کردن یک پنجره جدید در مرورگر استفاده کرد؛ ولی محتویات این صفحه تا حدودی به اسکریپت در حال اجرا محدود است. اگر صفحه ای از وب سایت ما (clickaval.com) حاوی جاوا اسکریپت باشد، آن صفحه نمی تواند . به جاوا اسکریپت اجرا شده در یک دامنه دیگر، مثلا microsoft.com دسترسی داشته باشد.
اساس سیاست مبدأ واحد این است: جاوا اسکریپت باید در همان صفحه با صفحات وابسته به آن اجرا شود.
خیلی از اوقات سیاست مبدأ واحد محدودیتی در برابر فریم ها و شیء XMLHtpRequest به AJAX به شمار می آید، چراکه در اینجا ممکن است درخواست های جاوا اسکریپت به وب سرور های مختلفی فرستاده شود. با معرفی اینترنت اکسپلورر 8، مایکروسافت پشتیبانی XDomainRequest را ارائه کرد، که اجازه دسترسی محدودی را به داده ها از دامنه های می دهد.
در حال حاضر، تنها کافیست بدانید که جاوااسکریپت محدود به عملیات هایی است که درون همان پنجره مرورگر اجرا شوند.
جاوا اسكريبت با برنامه های سمت سرور متفاوت است.
هنگام توسعه کد های سمت سرور، به طور مثال با ویژوال بیسیک دات نت یا PHP، می توانید مطمئن باید که سرور، برخی عملیات های معین مثل ارتباط با پایگاه داده یا اعطای حق دسترسی به ماژول های موردنیاز توسط برنامه کاربردی وب را خود انجام خواهد داد. جاوااسکریپت به متغیر های سمت سرور دسترسی ندارد. به طور نمونه، جاوا اسکریپت نمی تواند به پایگاه های داده ای هر سرور هستند متصل شود.
کد جاوااسکریپت محدود به کارهایی است که در پلتفرمی که اسکریپت را اجرا میکند و معمولا مرورگر وب است، قابلیت انجام دارند. اما اگر با برنامه نویسی سمت سرور آشنا هستید، تغییر دیگر که باید در نگرش خود در زمان استفاده از جاوااسکریپت بدهید این است که کد را باید برای کلاینت های بسیار متفاوتی امتحان کنید تا ببینید هر کلاینت چه قابلیت هایی دارد.
در زمان برنامه نویسی سمت سرور، اگر سرور برای عملکرد خاص را پیاده سازی نکرده باشد شما بلافاصله از آن مطلع خواهید شد، چرا که در زمان آزمایش، کد سمت سرور عمل نخواهد کرد. از برخی مدیران بدجنس سرورها که بگذریم، نشانه های سرور میزبان معمولا تغيير ناگهانی نخواهد داشت و در نتیجه، شما به آسانی خواهید فهمید چه چیزهایی را می توانید و چه چیزهایی را نمی توانید کدنویسی کنید. اما برای کدهای بود که باید بر روی کلاینت اجرا شوند نمی توانید پیش بینی کنید، زیرا کلاينت ها کاملا از کنترل شما خارچ هستند.
نکاتی در به کارگیری جاوا اسکریپت
چندین عامل در طراحی یک وب سایت خوب نقش دارند. اما واقعا چه کسی مشخص می کند چه چیزی خوب و چه چیزی بد است؟ یک بیننده سایت ممکن است سایت شما را مجموعه درهم و برهم و ترکیب زشتی از رنگ ها و متن ها بخواند که گویا عناصر آن درون یک کیسه گذاشته شده، تکان داده شده و سپس بر روی صفحه وب ریخته شده اند؛ بیننده بعدی ممکن است این طراحی و بسیار دوست داشته باشد.
از آنجا که در حال حاضر مشغول مطالعه این مقاله هستید، پس من فرض می کنم جست و جوی راهنمایی جهت استفاده از زبان جاوا اسکریپت برای بهبود وب سایت خود هستید و فرض می کنم قصد شما از به کارگیری این زبان کمک به کاربران در استفاده از سایت، افزایش زیبایی و عملکرد آن است تا در نهایت بتوانید با افزایش ترافیک سایت خود، به موفقیت بیشتر برسید.
طراحی یک وب سایت به طور کامل یک فرآیند عینی و واقعی نیست و هیچ گاه نیز نخواهد بود. یک وب سایت ممکن است دارای هدف اطلاعاتی باشد، که نوع خاصی از طراحی دیکته می کند، در حالی که هدف سایت دیگر ممکن است تنها اتصال به یک برنامه باشد، که این نیز طراحی و عملکردهای مخصوص به خود را نیاز دارد. با این حال، بسیاری از سایت های محبوب و طراحی شده دارای جنبه ها و نقاط مشترکی هستند. من در اینجا تلاش می کنم این جنبه ها را تقل کرده و تقسیم بندی کنم، هرچند تقاضا میکنم در نظر داشته باشید که این فهرست جامع نبوده تنها نظرات شخصی یک فرد را منعکس میکند.
یک وب سایت با طراحی خوب کارهای زیر را انجام میدهد:
عملکرد خود را بر روی فرم متمرکز می کند
هنگامی که یک کاربر از سایت بازدید می کند و معمولا قصد دارد تا اطلاعاتی را به دست آورده با عملیاتی را به انجام برساند. هرچه گشت و گذار در سایت شما دشوارتر باشد، بیشتر احتمال دارد تا کاربر به یک سایت دیگر با که دارای امکانات راحت تری برای وب گردی است برود.
تصاویر متحرک و قطعات چشمک زن می آیند و می روند؛ ولی آنچه باقی می ماند سایت هایی هستند که اطلاعات اساسی را در یک قالب حرفه ای و با امکان دستیابی آسان فراهم می آورند. استفاده از آخرین نرم افزارها با تکنولوژی های انیمیشن در وب من را به یاد استفاده از تگ <blink> در صفحات HTML می اندازد. برای آن هایی که هیچگاه تگ Blink را در عمل ندیده اند، متذکر میشوم که این تگ باعث می شد که متن درون آن ناپدید شده و دوباره روی صفحه ظاهر شود. تقریبا همه توسعه دهندگان وب از این تگ و کاری که انجام می دهد نفرت داشتند.
همین توسعه دهندگان وب اذعان می کنند که خصوصیات جالب و جذاب و جلوه های ویژه ای که امروزه در صفحات وب رایج هستند فردا سرنوشتی همچون تگ blink خواهند داشت. وب سایت های موفق از اصول پیروی می کنند و از این امکانات زیباسازی فقط در مواقع لزوم بهره می برند.
از عناصری مانند نقشه سایت، تگهای <alt> و ابزارهای ناوبری ساده استفاده کنید و برای دیدن محتوای اصلی سایت کاربر را مجبور به نصب هیچ نرم افزار خاصی با افزونه ای نکنید. بسیاری از مواقع، بازدید من از یک سایت فقط به خاطر اینکه من نیاز به یک بسته الحاقی با آخرین نسخه از فلان برنامه را دارم متوقف می شود.
هرچند ممکن است تاکید بر روی نقشه سایت، تگهای <alt> و ابزارهای ناوبری ساده بسیار عجیب به نظر برسد، با این حال این موارد، اجزایی ضروری برای دسترسی آسان (جهت ناتوانان و معلولان هستند. برنامه های قرائت متن و تکنولوژی های دیگر که امکان خواندن سایت با صدای بلند با گشت و گذار در آن را برای افراد ناتوان فراهم می آورند از این امکانات مفید بهره برده و اکثرا با جاوا اسکریپت های پیچیده مشکل دارند.
از استانداردها پیروی می کند
استانداردهای وب وجود دارند تا براساس آن ها پیاده سازی انجام شود، پس با مسئولیت خودتان از آنها صرف نظر کنید. استفاده از یک اعلان صحيح DOCTYPE و یک HTML خوش ساخت کمک می کند تا سایت شما به درستی برای بازدیدکنندگان به نمایش درآید. برای اعتبارسنجی استفاده از Validator Markup متعلق به W3C به شدت توصیه می شود. اگر مشکلی در سایت شما وجود دارد، آن را اصلاح کنید.
به درستی در مرورگرهای مختلف به نمایش در می آید.
حتی زمانی که اینترنت اکسپلورر، 90 درصد از س هم بازار را در اختیار داشت، صرف نظر کردن از بقیه مرورگرها برای برنامه نویسان هرگز ایده درستی نبود. انجام چنین عملی معمولا بدین معنا بود که دسترسی آسان نیز نادیده گرفته شده و در نتیجه کاربران استفاده کننده از برنامه های قرائت متن یا دیگر برنامه ها نمی توانستند از این سایت ها بهره ببرند. کاربرانی که سیستم های عامل دیگری غیر از ویندوز دارند نیز احتمال دارد در بازدید از سایت موفق نباشند.
هرچند اینترنت اکسپلورر همچنان نیز در بین مرورگرها پیشتاز است، ولی به احتمال زیاد از هر 10 بیننده 4 یا 5 تای آنها از مرورگرهای دیگری استفاده می کنند. البته این تفاوت به میزان زیادی بستگی به موضوع سایت دارد. هرچه مخاطبان سایت شما فنی تر باشند، بیشتر نیاز دارید تا مرورگرهایی غیر از اینترنت اکسپلورر را در هنگام طراحی به حساب بیاورید. بنابراین، اگر سایت ش ما از طرف بازدیدکنندگان فنی بازدید می شود، نیاز دارید که سایت شما در فایرفاکس، سافاری، یا حتی Lynx نیز کار کند.
صرف نظر از موضوع وب سایت، مطمئنا هرگز دوست نخواهید داشت که کاربران تنها به خاطر مرورگر انتخابی آنها سایت شما را ترک کنند. صاحب فروشگاهی را تصور کنید که از هر 10 مشتری خود 3 تای آن را از دست می دهد. این فروشگاه مدت زیادی در صحنه تجارت دوام نخواهد آورد، یا حداقل به آن میزانی که می تواند موفق نخواهد بود.
اگر به پیروی از استانداردهای وب مقید بوده اید، اکثر آنچه را در پشتیبانی از مرورگرهای مختلف نیاز دارید قبلا انجام داده اید. اجتناب از به کارگیری بسته های الحاقی اختصاصی در وب سایت روش دیگری است که شما را از نمایش صحیح سایتتان مطمئن می سازد. به همین علت، تولید سایت هایی که از استانداردها تبعیت میکنند و از بسته های الحاقی اجتناب می ورزند تضمین میکند که سایت شما توسط تعداد زیادی از بینندگان قابل بازدید خواهد بود.
از تکنولوژی های مناسب در زمان مناسب بهره بگیرید
یک وب سایت با طراحی خوب در استفاده از بسته های الحاقی افراط یا حتی اشتباه نمی کند. نمایش ویدئو در یک سایت مربوط به ویدئو و فیلم مناسب است. مشابه آن، در سایت موسیقی نیز استفاده از موسیقی در پس زمینه مناسب است. در سایت های دیگر، استفاده از این امکانات ممکن است چندان تناسبی نداشته باشد. اگر فکر میکنید که نیاز به پخش موسیقی پس زمینه در سایت خود دارید، پس یک بار دیگر به پله اول برگشته و ببینید اصلا وب سایت را برای چه منظوری می خواهید.
حتی فکر کردن به اولین باری که یک سایت را که مضمون حقوقی داشت دیدم، برایم مشمئزکننده است؛ سایت شروع به نواختن موسیقی Jingle در پس زمینه کرد، بدون اینکه حتی از من اجازه بگیرد. یک دوست به رفيق خود اجازه نمی دهد از موسیقی پس زمینه در سایت خود استفاده کند، مگر اینکه دوست شما عضو گروه موسیقی Rush بوده و شما وب سایتی را برای این گروه طراحی می کنید.
حال که با مفاهیم اولیه در مورد جاوااسکریپت آشنا شدید، می توانید آموزش آن را شروع نموده و تبدیل به یک برنامه نویس مجرب شوید.