متن این ویدئو :

با عرض سلام و ادب کیایی هستم مدیر وب سایت dotnetexpert.ir  و نویسنده ی پلتفرم خودکار 

با یک قسمت دیگه از سری ویدئوهای تور آشنایی با پلتفرم خودکار در خدمتتون هستم.

خوب دوستان من در این قسمت میخوام یه مقدار بیشتر راجب کدنویسی سمت Client صحبت کنم اگر از ویدئوهای قبلی یادتان باشه ما در مورد سیستم منحصر به فرد تزریق وابستگی‌های پلتفرم خودکار صحبت کردیم گفتیم که Bundle ها در اصل یک کلید وابستگی دارند که به کمک آنها هر صفحه‌ای میفهمه که چه Css و Jsهایی را لازم است پشت صحنه Load کنه و بیاره یه چیزی شبیه RequireJs . در اصل اینجا برای asModal.js  کلید وابستگی asModal تعریف شده چون asModalخودش یک پلاگین و این  asModal  یک کلمه کلیدی است که حتماً توسط برنامه‌نویس‌ها استفاده میشه به عنوان کلید وابستگی هم است. و هر جا که سیستم به این بربخورد asModal Css و AsModal Js را Load می‌کند.

من حالا برای اینکه بیشتر متوجه شوید میرم تو بخش مدیریت صفحات و آنجا یک صفحه را به عنوان نمونه به شما نشان می‌دهم. مثلاً تاریخچه رویدادها که از نوع فرم است این صفحه تو قسمت جاوااسکرپیتش خوب همینطور که مشاهده می‌کنید asModal الان پلاگینش کال شده و با استفاده از این کلمه‌ی کلیدی asModal این صفحه وقتی Framework بهش برمیخوره میفهمه که پشت صحنه بایدCss  asModal و asModal js را لود کند.

اما به غیر از این خود Framework خودکار سمت Client یک Framework JQuery base است. یعنی براساس JQuery کار میکنه اما اگر شما اینجا دقت کنید می‌بینید که ما هنگام کار با اشیاء دام به جای کلمه‌ی کلیدی $ که مال JQuery  است از کلمه‌ی کلیدی as که مال خود Framework خودکار است استفاده کردیم این کلمه کلیدی خودکار as مزایای زیادی دارد در حقیقت هر کاری که $ میکنه as هم میکنه حالا ممکنه در موارد خیلی محدودی احتمالش صفر من چیزی یادم نمیاد اما احیاناً شما برخوردید که یک کاری را $ انجام میده که as انجام نمیده شما از $ استفاده کنید هیچ مشکلی برای Framwork پیش نمیاد یعنی تو این ورژن ساپورت نمیشه و Framework هم به کار خودش ادامه میده و مشکلی نیست اما به غیر از این موارد محدود چیزی به ذهنم نمیاد این موارد پیش میاد احتمالش صفر شما باید از همه جا از کلمه‌ی کلیدی as استفاده کنید.

as هم مزایای زیادی داره حالا مثلاً یکی از آن این است که وقتی شما Conflict داشته باشید به IDهای صفحتون فرض کنید شما یک صفحه داشته باشید یک مودال هم باز شده و توی هر دو تا هم یک Text box داریم با ID، با نام txtName , خوب اینجاها اگر از $ استفاده کنید با مشکل برمی خورید ولی as این Conflictها را برای شما برطرف میکنه , حالا غیر از این خود Framework مثل JQuery که روی $ است Framework هم روی as است.

من یک اسلاید براتون آماده کردم که یه مقداری بیشتر راجب خود Framework هم براتون توضیح بدهم خوب دوستان اگه یادتان باشه من تو قسمت مدیریت صفحات گفتم که ما در اصل چهار نوع صفحه داریم Form، Modal، Template، Framework، که همه از Page  ارث می‌برند. از این چهار تا خوب Framework جایی است که شما js، مربوط به Framework را به صورت External لود کنید حالا مثلا میتونه انگولار باشه خودکار باشه JQurey باشه.

اما این سه تای دیگه قسمت هایی هستند که کدنویسی دارند و Event های Framework خودکار برای آنها کار میکنه تو Framework خودکار ما سه نوع Event داریم Eventهایی Global و Eventهایی که در سطح Page هستند و Eventهایی که در سطح Modal اجرا میشن.

Eventهای، Global، Eventهای سراسری هستند که هم در Page  و هم در Modal و هم در سطح خود Framework قابل دریافت و قابل استفاده هستند Eventهای، Page فقط در سطح صفحات اتفاق می‌افتند دقت داشته باشید خودFrom، Modal و Template هم از صفحه ارث بردند یعنی هر Eventی که در این سطح اتفاق می‌افته صد درصد در Modal  و Form، Template قابل دسترسی است.

Eventهای سطح Modal فقط در سطح Modal اتفاق می‌افتند و دیگه در From و Template قابل دسترسی نیستند و من حالا دونه دونه هر کدام از Eventها را یه توضیح مختصری براتون میدم،

Global Eventsها شامل data Load Complete هستند این Event زمانی اتفاق می‌افته که dataهای یک صفحه یا حالا یه Modal یا هر چیزی که اون لحظه باز است به طور کامل Load شده و اومده فرضاً Grid بوده که و اطلاعاتش قابل نمایش است Event ، before Send Ajaxt Request قبل از هر Request Ajax  اجرا میشه، Event login وقتی که Login اتفاق بیفته، Event logoff وقتی که logoff اتفاق بیفته از برنامه خارج شود . Event query String Change , ایونتی است که زمانی که query String URL عوض میشه اتفاق می‌افته، Event font Load زمانیکه فونت‌ها در حال Load شدن هستند و Event font Loaded زمانیکه که فونت ها load شان تکمیل شد.

اینها Event‌هایی هستند که در سطح Global اتفاق می افتند. Eventهای صفحه، یک سری Eventهای دیگر هستند که، data Loding زمانی است که اطلاعات داخل یک صفحه در حال Load است مثلاً اطلاعات یک گریدی که قرار شما نمایش بدهید یا Tableی که قرار اطلاعاتش نمایش داده بشه در حال Load است. Data Loaded زمانی که Load اطلاعات به پایان رسید فرضاً اطلاعات گرید کامل Load شد اومد سمت Client. Eventهای Loaded و Loading مربوط به خود صفحه هستند زمانی که HTML صفحه بعلاوه وابستگی هاش داره میاد مثلا همان صفحه که ما دیدیم از پلاگین asModal استفاده میکنه وقتی خود HTML آن صفحه Cssاش و Jsاش و asModal.Js اش و asModal.css اش کامل شدن , Event Loaded اتفاق می‌افته و در حالیکه اینها دارند دونه دونه لود میشن Event Loading اتفاق می‌افته.

Event,  dispose ایی است که خیلی مهمه برای مدیریت حافظه مرورگرهاتون که زمانی که یک page داره از دسترس خارج میشه Page یا Modal یا Templent فرق نیمکنه این Event dispose صدا زده میشه و اینجا , آن جایی است که شما باید اشیایی که نیاز ندارید , اشیاء جاوااسکریپت را اونجا dispose کنید.

Event ready یه چیزی شبیه Loading  توی web Form در dotnet framework دراصل ما هدفمان این بود که این سیستم Eventing خیلی شبیه باشه به همون Eventing که توی web Form در dotnet framework شود و برای برنامه‌نویس‌های دات نت آشنا باشه.

Ready , همون حکم loading اون فرم ها را در اصل برعهده داره. Query String Change باز زمانیکه Query String تغییر پیدا میکنه منتها این بار در سطح Page میتونید این Event را دریافت کنید.

Before SendAjax Request هم دقیقاً شبیه Global هست منتها این بار میتونید در سطح Page میتونید Event را دریافت کنید.

Event های Event , Modal های Modal چون از Page ارث برده تمام اون Eventهای قبلی را هم دارد بعلاوه یه یکی خاص خودش به اسم reopen که این در اصل شبیه همان Ready است توی Modal ها بهتر است به جای Ready از reopen استفاده کنید که هر بار Modal را می بندید باز می کنید یکبار دیگه این دست خودتان است هر جور که دلخواه برنامه‌نویس است یکبار دیگه کدهایی که وسط این reopen است براتون اجرا میشن. سعی بر این بود که برای برنامه‌نویسان دات نت این سیستم Eventing شبیه اون سیستم Eventing خود Dotnet Framework باشه.