یادداشتهای یک برنامه نویس

بیان تجربیات و دیدگاه های یک برنامه نویس در مورد نرم افزار , طراحی و تولید برنامه با استفاده از تکنولوژی های مایکروسافت

یادداشتهای یک برنامه نویس

بیان تجربیات و دیدگاه های یک برنامه نویس در مورد نرم افزار , طراحی و تولید برنامه با استفاده از تکنولوژی های مایکروسافت

۱ مطلب با کلمه‌ی کلیدی «ECMAScript» ثبت شده است

بعد از گذشت زمان نسبتا طولانی از نوشتن آخرین مطالبی که هر از گاهی در وبلاگ یا فیسبوک نوشته میشد ، مدتها بود موضوع روند تکامل Form ها در HTML از زمان به کار گیری Javascript به عنوان ابزاری برای کنترل "صحت مقدار یا فرمت مقادیر" ، تا زمان حاضر که شاهد یک همکاری و هارمونی بسیار شگفت انگیز بین JQuery و MVC هستیم ، بخشی از ذهن مرا به خود مشغول ساخته بود.
مخصوصا دغدغه مرور مختصری بر مفهوم و کاربرد FORM در MVC و ارتباط آن با مفاهیم بسیار مهم تری به نام AJAX و Partial View ابعاد این موضوع را تا حد نسبتا غیر قابل کنترلی (حداقل از دیدگاه من) افزایش می داد .
به عبارت ساده تر به نظرم رسید حتی یک معرفی سطحی و اجمالی بر موضوعات مذکور ممکن است بسیار فراتر از مجال محدودی باشد که در اختیار من قرار دارد. مجموعه عناوین و مفاهیمی که ذکر شد بسیار گسترده ولی انصافا بسیار مهم و ظریف بوده و حاوی نکاتی هستند که یقین دارم تحقیق در مورد آنها ابعاد تازه و جالب تری را به این مجموعه اضافه خواهد نمود . 
اگر به روزهای ابتدایی HTML و در واقع زمان معرفی اولین Browser یا مرورگر مخصوص وب با نام Mozaic در سال 1993 برگردیم ، بنا بر مستندات مستدل موجود این مرور گر که در واقع جد همه مرورگرهای مدرن امروزی محسوب میشود ، قابلیت برقراری یک ارتباط محاوره ای با User را با استفاده از تگ Form برای کاربر فراهم می کرده است . 
در واقع یک سال بعد یعنی در سال 1994 وب که حالا تقریبا 4 ساله شده بود توجه بسیاری از بازیگران عصر طلایی صنعت IT را به خود جلب کرد و در سپتامبر همان سال Internet Engineering Task Force با نام اختصاری IETF که متولی ، ناشر و حامی غیر انتفاعی استانداردهای اینترنت بود، کار گروه ویژه ای را برای تدوین و انتشار استانداردهای HTML منسوب کرد. از اعضای مهم این گروه می توان به Tim Berners-Lee (مخترع وب) ، Don Connelly و Mark Anderson اشاره کرد که حاصل این اقدام انتشار استاندارد HTML 2 و تهیه Document Type Definition مربوط به این استاندارد بود .
جالب است بدانیم که Netscape Navigator که به عنوان اولین مرورگر تجاری موفق در سیلیکون ولی تدوین و منتشر شد حاصل کار گروهی Mark Anderson و Jim Clark بود. همانطور که قبلا هم اشاره شد، از همان ابتدا عنصر Form یکی از اصلی ترین و پر کاربرد ترین عناصر و یا Element های HTML محسوب میشد و با توجه به محدودیت های پهنای باند و بنا بر ویژگیها و محدودیت هایی که پروتکل HTTP بر وب تحمیل می کرد ، تا قبل از 1995 موضوع بررسی یا کنترل صحت مقادیر و اطلاعات Form که به نام Form Validation شناخته می شود منحصرا صرفا با یک Round Trip (اشاره به Post Back و Initiate و آغاز Request از سوی مرورگر ، پردازش Request در Server و ایجاد Response ) میسر بود . به عبارت ساده تر ، امکان انجام این کنترل صرفا در Server و با استفاده از زبانهایی مثل PERL وجود داشت که با توجه به سرعت مودم های 28.8 kbps ، نیاز به زمان قابل توجهی داشت . اولین بار Brenden Eich که از مهندسین ارشد Netscape بود به فکر انجام این کنترل، تمام با استفاده از یک زبان اسکریپت افتاد و این انگیزه سبب طراحی زبان اسکریپتی گردید که ابتدا Mocha و در فاصله کوتاهی LiveScript نامیده شد. قبل از تولید نسخه تجاری Netscape Navigator 2 در سال 1995 بازیگر مطرحی در عرصه تکنولوژی مثل Sun Microsystem در تکمیل طراحی LiveScript پا به عرصه وجود گذاشت و نتیجه این همکاری تولد زبان JavaScript بود که با یک تاخیر زمانی کوتاه به Netscape Navigator 3 ملحق شد و از آن موقع تا زمان حاضر چنانچه همه ما مطلع هستیم، به عنوان یکی از ملزومات اصلی مروگرها شناخته می شود. 
اما در این میان همه چیز آن چنان که انتظار میرفت پیش نرفت . چرا که Microsoft به سرعت شروع به تدوین مرورگر اختصاصی و معلوم الحال خود نمود که علاوه بر داغ تر کردن تنور رقابت بازار مروگرها، به دلیل پرهیز از مشکلات ناشی از ثبت انحصاری Javascript نسخه انحصاری خود از زبان اسکریپتی اختصاصی خود به نام Jscript را ضمیمه مرورگر خود کرد و روانه بازار نمود . این موضوع در واقع مبدأ آشفته بازاری بود که انگیزه نیاز به یک استاندارد جامع در زبانهای اسکریپت را تقویت نمود و در نهایت منجر به تدوین ECMAScript ( به صورت رایجی ، اکما - اسکریپت تلفظ می شود) به عنوان استاندارد پایه و مبنای زبانهای اسکریپت شد . 
نکته مهم:
از آنجاییکه JQuery و نقش آن در DOM Processing و Form Validation و Form Submission و نهایتا AJAX بسیار حائز اهمیت است، لاجرم لازم می دانم که که در این مقاله ، هر چند به اجمال، این مباحث بیشتر بررسی شده تا احیانا برخی از ابهامات موجود در این زمینه برطرف گردد .

با در نظر گرفتن مطالبی که عنوان شد از اینجا به بعد در واقع Javascript بر خلاف یک تلقی اشتباه (که برخی آن را مترادف با ECMAScript قلمداد می کنند) یک پیاده سازی از استاندارد از ECMAScript است و در حقیقت شامل اجزای زیر می باشد :
1- هسته و Core مربوط به ECMAScript .
2- Document Object Model یا به اختصار DOM
3- پشتیبانی از Browser Object Model یا به اختصار BOM

به منظور درک عمیقتر ECMAScript اولا باید آن را مستقل از Web در نظر گرفت. در واقع مرورگرهای وب یک میزبان برای هسته اصلی ECMAScript می باشند که امکان پیاده سازی سطوح بالاتر ، بر مبنای امکانات پایه ای که فراهم می کند را ، میسر می سازند . مواردی نظیر نحو یا Syntax ، امکان تعریف Type ، کلید واژه ها، اپراتور ها ، مفهوم Object و ... در JavaScript همه به لطف پیاده سازی سطوح پایین تر در ECMAScript ایجاد و بنا بر نیاز موجود تقویت و بهینه شده اند . با مراجعه به منابع معتبر می توان بوضوح مشاهده کرد که ECMAScript در طول حیات خود و با گذشت زمان و قطعا متناسب با نیازهای موجود ، دارای هسته ای به مراتب مجهز تر شده است که به نظرم در اینجا مجال پرداختن به جزییات آن وجود ندارد و علاقمندان می توانند با مراجعه به منابع معتبر جزییات دقیق تر این تکامل تدریجی ECMAScript را مطالعه کرده و در جریان کامل آن قرار بگیرند . در این زمینه، پشتیبانی از دستورات try catch ، پشتیبانی دقیق تر از کلاسها و مفهوم Inheritance و وراثت ، پشتیبانی و پیاده سازی JSON به عنوان فرمتی برای تبادل Object ها و اطلاعات و .... از مهمترین مواردی بودند که به تدریج در چرخه تکامل ECMAScript نقش آفرینی کرده اند .
مفهوم Document Object Model یا DOM
این مفهوم در اصل عبارت است از یک API خاص منظوره برای کار با فرمت XML که بعدها به منظور کار با HTML تقویت ، ویرایش و یا گسترش یافته است . 
در مقطعی از زمان مرورگرهای اختصاصی Netscape و Microsoft هر یک روایت اختصاصی خود از DHTML را که لزوما با یکدیگر سازگار نبوده و حتی تضادهایی هم داشت، ارائه نموده و این موضوع یکی از عوامل اصلی نیاز به یک استاندارد فراگیر را مطرح کرد که موجب شد World Wide Web Consortium یا W3C تدوین استانداردهای DOM را در دستور کار خود قرار دهد .
از دیدگاه DOM یک سند XML یا HTML (در واقع HTML یک زیر مجموعه از XML محسوب می شود) صرفا دارای مجموعه ای از اجزا یا المانها یا Node هایی است که به صورت سلسله مراتبی (Hierarchical) ، به ترتیبی قرار دارند که اولا همه اجزا (یا همان المانها و Node ها) منشعب از یک Node ویژه به عنوان Root و ریشه بوده و ثانیا هر Node می تواند از نظر محتوا شامل یک یا چند Node فرزند (یا هیچ) بوده و از نظر نوع می تواند شامل انواع متفاوتی از اطلاعات یا Data باشد .
اتخاذ این استراتژی، API را قادر می سازد تا عملیاتی نظیر پیمایش (Traverse) ، افزودن (Add) ، حذف (Remove) ، الحاق (Append) و ... را به صورت بسیار موثر و کارآمدی را انجام دهد . 
اصطلاحات DOM Level 1 ، DOM Level 2 و DOM Level 3 اشاره به روایت های متعددی است که از سال 1998 تا امروز استانداردهای DOM را بر حسب شرایط روز تدوین و منتشر نموده است . در حقیقت مواردی مثل حمایت از Device هایی همچون Mouse ، الحاق و پشتیبانی Css و در ادامه تجهیز و گسترش Event ها و الحاق استاندارد XPath همه و همه از مواردی بودند که به مرور زمان در DOM ایجاد شده و منتشر شدند . 
در حال حاضر به لطف Library های مشهور و کاربردی و در صدر آنها JQuery حمایت و قابلیت کار با DOM تا بالاترین سطح خود در مرورگرها گسترش پیدا کرده و در ادامه و مخصوصا در مباحث مربوط به AJAX مثالهای کاربردی تری از آن را ملاحظه خواهیم کرد .
در واقع به نظرم تا اینجا خواننده این سطور باید به این نکته مهم توجه داشته باشد که JavaScript و JQuery (به عنوان یک کتابخانه کاربردی بنا شده بر اساس Javascript) چگونه در طول زمان بر اساس نیازهای موجود از یک ابزار اسکریپت نویسی ساده به منظور کنترل Form Validation و Dom Traversal (اشاره به قابلیت های آن در ارتباط با پیمایش ، حذف، الحاق و ... Node ها در ساختار سلسله مراتبی DOM) به یک جزء لاینفک از Platform های وب مخصوصا ASP .NET MVC تبدیل شد .
مفهوم Browser Object Model یا BOM
چنانچه پیشتر نیز اشاره شد، اولین و مهمترین ویژگی Javascript پشتیبانی کامل از ECMAScript و DOM و BOM می باشد . به طور دقیق تر مفهوم BOM اشاره به مجموعه ای از امکاناتی بود که همزمان با Netscape Navigator 3 و Internet Explorer 3 در این دو مرورگر ایجاد شد که امکان کار با Window یا پنجره میزبان مرورگر و همچنین استفاده از Dialog های Modalو Modeless را فراهم نمودند . به طور مشخص تمرکز BOM در کار با خود Object پنجره میزبان (Window) و Frame های این پنجره قرار داشت و به طور کلی شامل امکاناتی برای کار با سایر پنجره های Popup ، امکان قابلیت حرکت، تغییر اندازه و بستن پنجره ها و امکان کار با Object های کاربردی navigatorو location و Screen و از همه مهمتر (و در بحث ما با تمرکز بیشتر) تولد XMLHttpRequest به عنوان محور اصلی ظهور تکنولوژی AJAX و گسترش آن بود .

۰ نظر موافقین ۰ مخالفین ۰ ۰۸ فروردين ۹۴ ، ۱۷:۰۷
مهران حسین نیا