آموزش جاوا
شی گرایی و دینامیکی درمورد زبان JS
در درس قبل آموختیم زبان js با صفحات وب چه ارتباطی دارد و دانستیم که برنامه های زبان js در میان TAG های زبان HTML قرار میگیرد . اما حال بهتر است چگونگی ارتباط js با صفحات وب را بررسی کنیم .
هر چیزی که شما در صفحه وب می بینید (و گاهی بعضی چیزهایی که نمی بینید ) و در تعریف کلی هر چیزی که صفحه وب را تشکیل می دهد , مثل دکمه ها ( button ) , فرم ها , عکس ها و هزاران چیز دیگر در صفحه وب , شی نام دارند . این اشیاء راه ارتباط JS با صفحات وب هستند و در واقع وظیفه اصلی JS کنترل این اشیاست . خاصیت شی گرایی (object-oriented) در JS باعث شده که بتواند با بیشتر اشیاء در صفحات وب ارتباط برقرار کند .
یک مثال ساده این مفهوم را آشکارتر می کند . اگر ما دنیای واقعی خود را در نظر بگیریم می توانیم میز ها , کتاب ها , سگ ها , گربه ها , انسان ها و همه و همه را شی بنامیم . در صفحات وب نیز شی به همین معناست البته با این تفاوت که در صفحات وب بعضی از اشیاء قابل مشاهده نیستند . در صفحات وب هر شی دارای خصوصیات و مشخصه های خاص خودش است که در زمان بررسی هر شی به ان اشاره خواهم کرد .
همانطور که گفتم این اشیاء بسیار زیادند . برای راحتی استفاده از آنها , گروه ها و زیر دسته هایی در نظر می گیریم و این اشیاء را در این گروه ها طبقه بندی می کنیم .
زبان HTML به تنهایی نمی تواند با اعمالی که کاربر در درون صفحه وب انجام می دهد ارتباط برقرار کند . و علاوه بر آن توانایی ایجاد جلوه های ویژه که باعث جذابیت صفحه وب می شود را ندارد . و چون کاربر نمی تواند به وقایع (Event ) و اشیاء صفحه پاسخ دهد , حالتی کسل کننده برای او ایجاد می شود . زبان JS به خوبی این کمبود در صفحات وب را رفع می کند و به صفحات حالت فعال می دهد . در واقع JS این ویژگی را به وسیله خصلت شی گرایی اش کسب کرده است .
مثلا وقتی شما اطلاعات نادرست به یک فرم در صفحه وب می دهید , JS با پیغامی می تواند به شما اطلاع دهد . به صورت ساده تر می توان گفت JS نوعی امکان انتخاب به کاربر و امکان پاسخ مناسب از طرف خود را می دهد .
با یک مثال ساده تر , مفهوم آشکار تری را در اختیار شما قرار می دهم . شما دوربین عکاسی را در نظر بگیرید که بدون توجه به نور اطراف خود عکس برداری می کند . این دوربین را می توان مانند حالت غیر فعالی HTML در نظر گرفت . در سوی دیگر دوربینی را در نظر بگیرید که بنا به نور اطراف خود , شفافیت عکس را تنظیم میکند . این دوربین را میتوان مانند JS در نظر گرفت که با محیط اطراف خود ارتباط برقرار می کند وتصمیمات لازم را می گیرد و اعمال لازم را انجام می دهد ( البته بر اساس خواست برنامه نویس ) .
حال با مثالی در خود JS بحث را تکمیل می کنم . فرض کنید شما وارد صفحه وبی شده اید . بنا به برنامه ای که برنامه نویس نوشته است ابتدا پیغامی مبنی بر اینکه (( آیا شما از رنگ صفحه خوشتان می آید ؟ )) توسط JS صادر می شود . در صورت انتخاب جواب مثبت , رنگ صفحه تغییر نمی کند ولی در صورت منفی بودن پاسخ بنا به انتخاب خود شما یا برنامه نویس رنگ صفحه تغییر می کند .
متاسفانه توسط برنامه نویسان مختلف تعاریف اشتباهی درباره مفهوم دینامیک بودن در زبان های برنامه نویسی ارائه می شود . بسیاری به اشتباه , به هر زبانی که شی گرا باشد دینامیک می گویند.
من ابتدا نحوه اجرای JS را مورد بررسی قرار میدهم تا به نتیجه نهایی برسیم .
دو مفهوم Client side languages و Server side languages به ما کمک فراوانی می کنند .
در اصطلاح به کامپیوتر کاربر یا بیننده صفحه , مشتری ( Client ) و به کامپیوتری که به کامپیوتر های دیگر جهت مشاهده صفحات وب سرویس می دهد , سرویس دهنده یا میزبان (Server ) می گوییم. برنامه ها و فایل های موجود در کامپیوتر میزبان , به 2 صورت می توانند برای کامپیوتر های مشتری مورد استفاده قرار گیرند . در حالت اول , فایل ها دقیقا به کامپیوتر مشتری انتقال یافته و آنجا ترجمه و اجرا می شوند . در این حالت درخواستی به میزبان فرستاده شده و میزبان این درخواست را پردازش می کند . سپس فایل درخواستی را بدون انجام هیچگونه عملیاتی به مشتری می فرستد . پس از انتقال فایل , مشتری فایل را دریافت میکند . فایل توسط مرورگر ترجمه و اجرا می شود . زبان هایی چون JS و HTML و CSS به این صورت عمل می کنند . زبان هایی که به این صورت اجرا می شوند را Client side languages ( زبان های طرف مشتری ) می گویند .این زبان ها غیر دینامیکی هستند زیرا سرویس دهنده هیچ نقشی در اجرای آنها ندارد .
در حالت دوم ابتدا فایل توسط مترجمی که در کامپیوتر میزبان تعبیه شده , در خود میزبان ترجمه می شود و سپس نتایج این پردازش به مشتری ارائه می شود . مرورگرهایی که در کامپیوتر مشتری قرار دارند , نمی توانند برنامه های نوشته شده توسط اینگونه زبان ها را خودشان ترجمه و ا جرا کنند , بلکه نیاز به نقش اساسی میزبان در ترجمه آن دارند . اینگونه زبان ها را Server side languages یا زبان های طرف میزبان می نامند . این زبان ها به دلیل نقش داشتن میزبان در فرایند ترجمه و در نتیجه امکان تغییر یا استفاده فعال از منابع میزبان , حالت دینامیکی دارند . مهمترین این زبان ها ASP , CGI و PHP هستند .
با استفاده از مفاهیم بالا به راحتی میتوان نتیجه گرفت JS زبانی دینامیکی نیست و فرایند های مربوط به آن روی کامپیوتر مشتری صورت می گیرد .
در بخش بعدی چگونگی برنامه نویسی با JS و چند برنامه ساده را شرح خواهیم داد.
__________________
زمستان نیز رفت اما بهارانی نمی بینم
بر این تکرارِ در تکرار پایانی نمی بینم
به دنبال خودم چون گردبادی خسته می گردم
ولی از خویش جز گَردی به دامانی نمی بینم
چه بر ما رفته است ای عمر؟ ای یاقوت بی قیمت!
که غیر از مرگ، گردن بند ارزانی نمی بینم
زمین از دلبران خالی است یا من چشم ودل سیرم؟
که می گردم ولی زلف پریشانی نمی بینم
خدایا عشق درمانی به غیر از مرگ می خواهد
که من می میرم از این درد و درمانی نمی بینم
استاد فاضل نظری
|