>> خوب.
بنابراین، مطلب یا داستان جالب بود، چه شده است node.js که شما امروز می شناسیم؟
هر چیزی؟ آره؟
>> مثل این بود چارچوب نوشتن جاوا اسکریپت
برنامه های کاربردی به طور گسترده -
>> OK، که کار می کند.
>> - من می خواهم می دانم کاربردهای رایج مانند -
و یا چیزی است که شما می توانید انجام دهید مانند -
[نکته نامفهوم]
>> OK خوب است.
آره، پس از آن چارچوب است.
این موتور که توسط آن شما می توانید کد جاوا اسکریپت اجرا
سایت سرور.
این می تواند به معنای ساده ترین از همه چیز
مانند نوشتن یک خط فرمان اسکریپت در پایتون و بش
و یا روبی و یا PHP، اما تنها در خود جاوا اسکریپت
و اجرای آن را در چشمک زدن خط فرمان.
یا شما در واقع می تواند اجرا شود آن را در یک وب سرور.
و در واقع در node.js خود را،
این چارچوب یک دسته کامل است کتابخانه در میان است که
در HTTP سرور ساخته شده است در.
بنابراین، شما در واقع می تواند ارسال سرور به عنوان خواهیم دید
در یک لحظه، به راحتی توسط فقط به درک کمی
از HTTP و TCP و پورت.
و شما می توانید گوش دادن تخم ریزی وب سرور بدون آپاچی،
بدون مایکروسافت IIS.
بدون هیچ گونه دیگر نرم افزار نصب شده،
شما فقط می توانید این تخم ریزی و گوش دادن به بیشتر از هر پورت
در این سیستم که شما اجازه.
بنابراین مورد و امتیاز، بگذار بروم و باز
این مثال، سرور 0.js.
بنابراین توجه کنید که بالای این فایل، فقط یک دسته
از نظر علاقه، و پس از آن یک زن و شوهر وجود دارد
خطوط نماینده کد که ما recurringly را ببینید.
بنابراین، ور HTTP می شود نیاز به "HTTP".
بنابراین ساخته شده است در به node.js ' زیرساخت یک دسته کامل است
ماژول های که واقعا فقط کتابخانه ها و همه چیز مرتب سازی بر
نام فضا با شناسه منحصر به فرد
مثل این یکی: "HTTP" است.
به طوری که مانند بسیاری از زبان هایی مانند جاوا و C + +
و C، تنها زمانی که شما واردات و یا شامل
و یا در گره صحبت می کنند نیاز یک ماژول می کند بیت های آن است.
و تمام حافظه نیاز به دریافت لود شده
به RAM و به همین دلیل استفاده می شود.
بنابراین، شما به نوعی این بار کتابخانه ها و ماژول ها بر روی تقاضا.
این به این معنی جلو بروید و نیاز
برای این برنامه کتابخانه HTTP،
و اشاره به آن کتابخانه های راه یک متغیر به نام HTTP.
اما این نماد سمت چپ می تواند چیزی به نام شده است، تولی،
نوار، باز، مهم نیست.
بنابراین بر خلاف C + + و جاوا و C که در آن زمانی که شما نیاز به
و یا وارد کردن یک کتابخانه، آن را فقط نوعی
از می شود سطح جهانی قابل دسترس،
ماژول های node.js است محکم تر فضای نام.
به طوری که خود - که قابلیت فقط در دسترس در حال حاضر
از طریق این نام متغیر.
شما نه تنها می تواند شروع روش تایپ کردن که وجود داشته باشد
در آن راست راه که احتمالا خوب است،
چرا که پس از آن فضای نام خود را نمی شود تقریبا به هم ریخته
همانطور که در بسیاری از زبان.
همه حق است، بنابراین در حال حاضر به عنوان مشترک نشان می دهد، ایجاد یک سرور HTTP
به عنوان جاناتان [فرض املایی] است ممکن است به معنای واقعی کلمه
به عنوان ساده به عنوان تماس ایجاد روش سرور در داخل
ماژول HTTP.
بنابراین، این است که بازگشت مرجع
به نوعی از وب سرور.
آن را به آپاچی آمد، نه وزن لزوما به عنوان سنگین.
این یکی کمی ساده تر.
و در حال حاضر، من باید فقط به سادگی انجام چند چیز.
پس اول، اجازه دهید به من رفته به پایین در اینجا
و جست و خیز کنترل روش برای یک لحظه.
و متوجه این خط از کد،
server.on که است اساسا به معنی سرور -
گوش دادن مانند در کد جی کوئری،
گوش دادن را برای یک رویداد به نام درخواست
و فقط یک حدس را باید چه کار کنم
زمانی که یک رویداد درخواست آتش سوزی در سرور.
آره؟
>> تماس کنترل عملکرد.
بنابراین، به معنای واقعی کلمه اجرا کد که اشاره
این متغیر و در واقع نه یک متغیر به نماد در اینجا،
آنچه که نماد آن با اشاره به؟
خوب، این نام از کار کردن در اینجا
و کنترل ظاهرا دو آرگومان می گیرد.
چرا دو؟ خوب، اگر شما فقط خواندن اسناد و مدارک
برای این ماژول خاص، شما گفته خواهد شد که کنترل
که باشد قابل استناد خواهد بود گذشت حداقل دو آرگومان،
اشاره به درخواست،
و در داخل از ما درخواست به معنای واقعی کلمه به معنای درخواست HTTP.
بنابراین، تمام کسانی که HTTP هدر که شما ممکن است به یاد می آورند
از آغاز ترم و یا برخی از کلاس قبل
و یا تجربه مانند دریافت خط و خط میزبان
و خط کاربر، عامل، همه از آن است و محصور شده و در داخل تر
از این شی درخواست.
و جسم پاسخ است طبقه بندی شده اند برای داده های خروجی.
بنابراین، شما باید یک ارجاع به شی که رفتن به شما اجازه می دهد
به ارسال اطلاعات به عقب مرورگر با تماس با روش
در این استدلال دوم به نام پژوهش برای پاسخ.
اما این می تواند به نام تولی و یا نوار، این فقط کنوانسیون می باشد.
بنابراین در حال حاضر، چه می توانم بکنم؟
خب، به نظر می رسد که در داخل از این وب سرور فوق العاده ساده
که من اجرای، من هستم رفتن به زیر را انجام دهید.
من قصد دارم برای نوشتن یک HTTP هدر با کد وضعیت 200،
200 معنی OK، همه خوب است.
و پس از آن، من قصد دارم در انتقال به ظاهر.
نوع داده ها از چیست آرگومان دوم به سر درست است؟
>> این شی است؟
>> این شی با است چگونه بسیاری از کلید ها و مقادیر؟
فقط یکی از هر یک، راست، یک مقدار کلیدی جفت.
بنابراین، 'نوع محتوا'.
و تنها دلیل من آن را به نقل از اینجا است
به این دلیل که خط تیره ممکن است تلفیق شدهاست برای یک علامت منفی
و یا چیزی شبیه به آن.
بنابراین، من به آن نقل قول در اینجا، نمونه های تک و یا به نقل از دو برابر شود.
اما پارادایم دوباره مشترک
در کد های جاوا اسکریپت، اغلب نقل قول تنها این روز،
روده بزرگ و پس از آن مقدار است.
بنابراین، این است که فقط به اصطلاح نوع ذهن داشته باشند.
این یک هدر HTTP است که به معنای واقعی کلمه رفتن
به این مطلب نوع خط روده بزرگ متن ساده و بریده بریده که رفتن
از ارسال شود سرور به مرورگر
به طوری که مرورگر می داند آیا برای اجرای این متن را به عنوان اولیه
و یا HTML و یا به عنوان یک تصویر و یا یک فیلم
و یا یک فایل فلش یا هر چیز دیگری.
در حال حاضر، که در آن من در واقع می خواهم در بدن از صفحه ارسال کنم؟
خب، تنها با خواندن اسناد و مدارک
برای شی پاسخ در داخل از این کتابخانه.
من می بینم که سمت راست وجود دارد روش و طول می کشد که یک رشته،
شاید چیز دیگر اما حداقل یک رشته است.
و بند است چه تف به مرورگر.
در این مورد فوق العاده آن ساده، جهان خوش آن،
اما می تواند opne براکت، HTML، براکت نزدیک،
سر براکت باز، بسته براکت و غیره،
این می تواند HTML خام.
اما ما در حال نگه داشتن به عنوان مثال ساده و تنها با تف
از ساده ترین انواع ذهن که مسلما متن / ساده است.
و پس از آن فقط response.end به معنای بستن اتصال
و ارسال همه چیز من نوع داخل بافر
این شیء به عقب به مرورگر.
من انجام داده ام. بسیار خوب.
بنابراین، آخرین چیزی که من انجام می دهند در اینجا
و این تا حدودی خودسرانه و به معنای سرد،
است من گفتن سرور در نهایت به گوش دادن
در TCP خاص توسط پورت پیش فرض.
به یاد بیاورید از ابتدا از کلاس که خدمات -
و یا شما به طور معمول منحصر به فرد شناسایی آن توسط اعداد،
AD وب، 443 است HTTP بر اساس است وب سایت ها، 22 SSH است، 21 FTP است
و 1337 فقط خودسرانه اما بالاتر از 1024
که به معنی در اکثر سیستم ها، من می توانم از آن استفاده کنید
بدون نیاز فوق العاده دسترسی های کاربر.
بنابراین آن را فقط مناسب.
اما 8080 است در خارج - مشترک یک، 8088، واقعا هر چیزی بزرگ
در هزار نفر به عنوان مشترک اما این فقط نخبگان است.
همه حق است، پس چه اتفاقی می افتد زمانی که من در واقع این اجرا؟
خوب، من نه تنها بازدید صفحه در یک مرورگر.
این فایل سرور 0.js نامیده می شود.
از آنجا دوباره، آپاچی است در حال حاضر از تصویر
برای نیمه دوم از این دوره.
اگر من به وب می خواهید سرور، من نیاز به نوشتن
و پس از آن اجرا این وب سرور.
اما به نظر می رسد که جاوا اسکریپت هر دو در سمت سرویس گیرنده
و سمت سرور است یک زبان تفسیر شده است.
بنابراین، تمام چیزی که نیاز دارم مترجم.
بنابراین it's - در صورت اصرار برای اجرای گره و سپس سرور 0.js،
من ممکن است یا نه ممکن است برخی از خروجی بسته
در چه کتابخانه من شامل، هیچ چیز به نظر می رسد اتفاق می افتد.
اما اجازه دهید من به رفتن مرورگر و اجازه دهید من به
به همان آدرس IP مشتریان CS50 من.
اما این فقط می تواند به عنوان به خوبی می شود مک من
و یا PC من و سپس کلید را وارد کنید.
که در واقع مثل آپاچی به نظر می رسد.
مثل این است که دایرکتوری فهرست ما نگاه
در در نیمه اول.
بنابراین، آنچه که من اشتباه انجام دهید؟
آره.
[نکته نامفهوم]
دقیقا، درست است؟
بنابراین، آپاچی هنوز هم گوش دادن در پورت پیش فرض 80.
حتی اگر من می تواند تغییر دهد، من می توانم آن را همه با هم به نوبه خود
اما هنوز هم در حال اجرا.
اما این افراد می توانند قطعا وجود داشته باشند.
من به سادگی برای قرار دادن روده بزرگ 1337 و پس از آن شاید
و یا شاید یک علامت است نه در در پایان برای دسترسی به این پورت
که این سرور در حال اجرا است.
و اکنون می بینم که سلام، جهان بازگشته است.
و من می توانم بازنگری به عنوان ضربه چند بار که من می خواهم،
آن را هنوز هم در خدمت یک صفحه.
در واقع اگر باز کنم تا کروم بازرس، به شبکه به
و سپس بارگذاری مجدد کل صفحه،
توجه کنید که در واقع این بود درخواست که فرستاده شد.
اگر من در منبع اولیه نگاه کنید،
متوجه مرورگر می فرستد همه از آن چیزهایی است.
و پس از آن پاسخ از سرور فوق العاده ساده بود.
است که 200 وجود دارد.
اگر آن را بیش از حد کم نیست بر روی صفحه نمایش،
است نوع محتوا وجود دارد.
و پس از آن node.js مرتب کردن بر اساس به طور خودکار
برای من تاریخ اضافه شده و همه چیزهای دیگر
که مرورگر به طور معمول انتظار می رود.
بنابراین، اجازه دهید فقط یک ورود به سلامت عقل کم است.
به من اجازه رفتن به کد در سرور 0.js و اجازه دهید من -
هر بار که من را به کنترل،
به من اجازه دهید فقط می گویند console.log.
("ما تا به حال یک بازدید کننده! ').
من نیازی به کامپایل مجدد و یا چیزی شبیه به آن،
آن را به یک زبان تفسیر شده است.
بنابراین در حال حاضر، اجازه دهید من به بازگشت به صفحه، بارگیری مجدد یک، دو،
سه بار و به به پنجره من عقب.
و حالا من این را ببینید.
خب این خیلی عجیب و غریب، من شش خط را ببینید.
چیزهای بی اهمیت وب جالب توجه است، چرا من شش درخواست سه را دریافت کنم؟
آره؟
[نکته نامفهوم]
آره. بنابراین، همانطور که می دانید آیکون کمی احمقانه در بالا
از نوار مرورگر است که بسیاری
از وب سایت ها ممکن است مورد استفاده قرار گیرد یک تاج هاروارد،
ممکن است یک آرم شرکت و یا چیزی شبیه به آن.
بنابراین، مرورگرهای این روزها مرتب سازی بر
از مغرورانه را درخواست HTTP اضافی
تقریبا در هر وب سایت است که بازدید می کنید چک کردن اگر وجود دارد
به طور پیش فرض یک فایل به نام favicon.ico
در همان دایرکتوری به عنوان فایل درخواستی شما.
و اگر چنین است، آن را آیکون وجود دارد.
پس همه ما شاهد است که دقیقا.
و در واقع، بیایید ببینید که اگر ما می توانید این نه از نوع ببینید
فقط، 'ما یک بازدید کننده داشته است.
اجازه بدهید به جلو و خروجی بروید.
و من تنها این را از دانم نگاه به اسناد و مدارک.
یک ملک در داخل وجود دارد شی درخواست به نام URL
که اتفاق می افتد به راه
که درخواست شده بود در URL واقعی.
بنابراین، اگر من به سرور راه اندازی مجدد به سادگی با اجرای مجدد گره
در سرور 0.js و در حال حاضر این یک، دو،
سه و رفتن به اینجا.
آن وجود دارد.
اسلش چیزی است که من - انسان درخواست
در favicon.ico است چه مرورگر است
مغرورانه درخواست.
اما نکته این است نمی چیزهای موارد دلخواه بسیار
اما چگونه سرور عمل است.
آره؟
>> چرا که به برخی از درخواست؟
>> چرا که باید - طبیعت چگونه HTTP کار می کند.
بنابراین، HTTP تنها می توانند درخواست یک فایل در یک زمان.
مرورگرها می تواند هوشمند این روزها
و نگه داشتن TCP اتصال باز است.
اگر شما CS143 و جو در زمان و یا به طور کلی آشنایی با شبکه،
بنابراین شما می توانید سود بازده کنید
با نگه داشتن شبکه سوکت باز
در ساخت HTTP چندگانه درخواست سریال بیش از آن
اما آنها یک فایل هستید در هر درخواست.
بنابراین، اگر شما مراجعه کنید چیزی شبیه به -
منظورم این است که ما می توانیم به بیشتر از هر وب سایت.
اگر شما برای رفتن - اجازه دهید به جلو و تا بازرس کروم در اینجا.
این ممکن است بیشتر پر کنید صفحه.
برو به تب شبکه و به www.cnn.com.
و هنگامی که شما بازدید cnn.com، صفحه اصلی آن -
مرورگر خود را به جای طرز فجیعی باعث می شود - هنوز هم ادامه دارد.
OK. حداقل 289 HTTP درخواست دوباره و دوباره.
و این که چرا در هنگام مراجعه وب سایت ها به خصوص پف کرده،
آنها آهسته به بار می به دلیل تمام
از دارایی های آنها در حال بارگذاری.
بنابراین، آن را مانند 298 به نظر می رسد.
ممکن است برخی از آژاکس وجود دارد در رفتن در این نقطه یا برخی از
از دارایی تنها کم است.
بنابراین، هر یک از این است درخواست فردی بازگشت
و جلو، عقب و جلو.
و به همین دلیل قبل از آن، حتی هر چند که ما نوعی از صحبت
در مورد آن تا حدودی fancifully که در آن شما با قرار دادن برچسب اسکریپت،
کاملا می سازد تفاوت زمانی که شما -
آن شروع به مقدار زیادی از ترافیک و بسیاری
فایل های مورد تقاضا است.
و هر یک از این نشان دهنده احتمالا یک تصویر، یک فایل رسانه ای،
یک فایل جاوا اسکریپت، فایل CSS و یا مانند آن.
بنابراین، ما در حال حاضر تا هستید برخی 4 مگابایت فقط
در اخبار امروز نگاه کنید.
سوال خوبی است.
بسیار خوب.
بنابراین، آنچه که برخی از می شاهد رشد آمارهای چند؟
راست، ما می دانیم که چگونه صفحات وب در حال حاضر با PHP.
و بسیاری از شما در به آمد کلاس دانستن جنگو
و پایتون و یا ریل با روبی.
پس چرا ما نیاز به دیگری زبان و زیر ساخت؟
چه node.js ویژه خوب اگر شما می دانید؟
[مکث]
برخی از چیزی؟
هیچ؟ آره؟
>> رله پیام است.
>> بنابراین، رله پیام است.
به طوری که درست است و این درست است به یک دلیل فنی بیشتر
و node.js و واقعا جاوا اسکریپت است به خصوص
به خوبی مناسب به آسنکرون کد،
اگر به موجب آن شما ایجاد توهم
از انجام چند همه چیز در یک بار.
بنابراین، حتی اگر آنها واقعا اتفاق می افتد سریال،
در واقع در اغلب موارد، جاوا اسکریپت هر دو سمت سرویس گیرنده
و سمت سرور است موضوع واحد.
که اگر شما در حال گرفتن 161 و یا حتی 61 بدان معنی است که -
از این برنامه می دانید،
مفسر می تواند به معنای واقعی کلمه تنها یک چیز در یک بار.
اما این فوق العاده است برای ندارد چیزی شبیه به یک وب سرور
که در آن شما ممکن است ده ها و یا صدها و شاید هم هزاران
از کاربران تمام تلاش برای دسترسی به صفحه وب شما
در همان زمان.
و با این حال، که نشان می دهد که از دست زدن به آنها یک
پس از دیگری پس از دیگر به خصوص اگر برخی از
از این درخواست به عنوان ما شاهد در سی ان ان ممکن است نیاز به خدمت
تا 300 فایل های قبل از شما حتی به کاربر بعدی را دریافت کنید
که می خواهد برای دیدن این خبر می گوید.
Node.js مناسب است برای محیط های شبیه به آن.
از آنجا چه اتفاقی می افتد است هر فرآیند در حال اجرا کند
مانند خواندن یک فایل از روی دیسک و یا پرس و جو از پایگاه داده و یا صحبت کردن
به برخی از سرور شبکه های دیگر،
که به سمت زمان تاخیر، درست است؟
اگر شما را 61 یا 161 به خصوص همه از این نوع
خدمات جانبی تمایل به بسیار آهسته تر
از انجام هر کاری در داخل RAM همان و همان پردازنده
که می گویند در این مورد سرور است که در واقع در حال اجرا.
اما چه خوب است در مورد node.js است که شما می توانید -
و جاوا اسکریپت به طور کلی است که شما می توانید کاری را انجام
و پس از آن می گویند، "سلام، این است که
به من را چند میلی ثانیه و یا حتی چند ثانیه.
اجازه بدهید به نوعی از چنگال که خاموش " اما آن را یک فرایند درست نیست.
و پس از آن زمانی که آن را انجام داده انجام فرایندی است که در حال اجرا کند
مانند گرفتن ردیف از پایگاه داده و یا خواندن یک فایل. اچ تی ام ال
از دیسک، از آن خواهد شد بازگشت به من نه
از من نیاز به برای آن صبر کنید.
بنابراین، به این روشن تر.
این به این معنی من است ساخت این بیشتر آشنا.
همه حق است، پس این تکان زیستن در مربع است.
این نوع است پارادایم رایج
برای توضیح asynchronicity.
این در واقع خوب به عنوان مثال به دلیل لرزش زیستن
و برگر خوشمزه هستند قابل ملاحظه کاهش سرعت برای آنچه انجام می دهند.
اما نکته این است که آنها واقعا در گرفتن سفارشات خوب
و مصرف پول خود را پس از که شما برای مواد غذایی خود را صبر کنید.
بنابراین، این است که در واقع بهتر طراحی از جایگزین.
از آنجا که فرض کنید شما را به راه رفتن یک فروشگاه مثل این و شما رو
به جلو از خط و شما سفارش خود را قرار داده و شما می خواهید
به همبرگر، به عنوان بهترین من می توانم بگو، آن را می گیرد حداقل پنج
یا چند دقیقه به در واقع یک همبرگر دریافت کنید.
بنابراین، این امر می تواند نوع یک مدل کسب و کار بد
اگر در حالی که شما در انتظار شما برگر، آلیس [املایی فرض]
و باب [فرض املایی] و چارلی [املایی فرض]
و هر کس دیگری است صف پشت سر شما
و شما به معنای واقعی کلمه مسدود کردن خط انتظار برای مواد غذایی خود را.
بنابراین بدیهی است، در لرزش زیستن
و دیگر مواد غذایی سریع مکان این کار را انجام نمی،
آنها این کار چیزی شبیه به این.
آنها به شما زنگ می دهد.
و آنها نوع شما در راه خود را ارسال کنید.
و آنها با شما تماس بگیرد توسط ساخت این چیزی که لرزش کمی
و یا فلش برای جلب توجه شما.
بنابراین، این است که به معنای واقعی کلمه چه؟
یه چیزی مثل node.js می کند.
اگر node.js یا جاوا اسکریپت به طور کلی استفاده می شود
و برنامه نویس به اندازه کافی هوشمند است
به درک، "شما می دانید چه؟
هر آنچه که نیاز دارید به انجام راست در اینجا می تواند برخی از تعدادی را
از میلی ثانیه یا ثانیه صورت گرفت.
شما چه می دانید؟
اجازه بدهید به جلو و نه به آن را به صورت همزمان -
"که مسدود کردن مرد است هر کس دیگری در خط، "-
به من اجازه پیش بروید و نوع کنار
و به سادگی خودم دوباره تماس بگیرید
زمانی که در حال اجرا طولانی عملیات کامل است. "
و تماس بگیرید البته است اشاره در این مورد
به callback function، اشاره به چاک از کد
که عملی شدن زمانی که همبرگر شما آماده است،
بسیار شبیه به این چیزی که برخی از نوع از قابلیت های ساخته شده در
که آن شروع می شود ارتعاشی و یا وزوز وقتی که آن زمان برای شما
به توان به نام جلوی خط.
بنابراین، آنچه این کار را معنی در شرایط واقعی؟
خب، ما به راه خود را تا.
بنابراین، اجازه دهید من به جلو و این کار را برای اولین بار.
در سرور 1.js، به من اجازه اولین کد ساده
بنابراین ما می توانیم گام های کودک به سمت را مشکل قانع کننده تر.
این دقیقا همان است برنامه ای است که قبل از من نوشت.
اما آنچه تغییر کرده است؟
به نوعی کمی وجود دارد تفاوت نحوی
بین این و نسخه 0 یک لحظه پیش.
چه جهش در شما اگر به یاد میآورید؟
آره سینتیا [فرض املایی]؟
[نکته نامفهوم]
آره. بنابراین در حال حاضر، ما باید یک خط از تابع که به تصویب شوید
ما بدست مرتب کردن بر اساس شر
از بیهوده روی نام عملکرد کنترل.
بی فایده تنها در آن قبل از حتی آن را فراخوانی در یک مکان،
من واقعا نیاز به نه اتلاف وقت به آن نام
و آن را سخت تر به خوانده بالا کد به پایین.
بنابراین، اجازه دهید فقط درون خطی اعلام یک تابع بی نام است.
و من انجام دو چیز دیگر.
من دارم بهتر استفاده از نماد نقطه.
پس چون در jQuery، بسیاری از گره روش را می توان با هم زنجیر.
به طوری که یک بار شما انجام می شود تماس چیزی، شما لازم نیست
صبر کنید تا یک خط جدید تماس گرفته و روش دیگری،
شما می توانید فقط زنجیره ای آنها را با هم.
و به این ترتیب در این راه، ما می توانیم واقعا این سفت کردن.
بنابراین، این است که به معنای واقعی کلمه وب سرور در پنج خط
از کل کد بر خلاف -
بر خلاف آنچه شما ممکن است به طور معمول باید انجام دهید را به مجموعه ای چیزی.
اگر من به سرور بروید 2 در حال حاضر، اجازه دهید این کار را.
در سرور 2 - در واقع اجازه دوباره به آن سرور 2.
بیایید به باز کردن ای async-0.js و رسیدگی به این مشکل در دست.
پس اول، اجازه دهید به جلو و باز
تا ای async-0.js در مرورگر.
پس ای async-0، بگذار بروم به مرورگر عقب.
آمار به بازنگری.
و در حال حاضر، این نوع است از پیغام خطا.
در واقع من از دیدن 500 در بازرس کروم.
اما اجازه دهید به من دقیق تر درخواست hello.txt.
OK. بنابراین، به نظر می رسد به کار می کنند.
پس ای async-0.js می کند به نظر نمی رسد خدمت به چیزی برای علامت ممیز.
این هیچ پشتیبانی از فایل به طور پیش فرض.
اما اگر من به صراحت درخواست hello.txt،
که به نظر می رسد حمایت شد.
چرا؟
خوب، آنچه که من در اینجا رفته
و انجام شده است اجرا یک وب سرور فوق العاده ساده
که نشان می دهد که در آن asynchronicity می تواند مفید باشد.
و این اجرا به شرح زیر است.
اول، من با استفاده از ماژول HTTP دوباره،
بلکه FS که احتمالا برای ایستد؟
به طور کلی در CS، فایل سیستم.
سیستم فایل OK.
از این رو جلو FS، فایل سیستم.
همه حق است، پس چه این به من بدهید؟
قابلیت های مربوط به فایل ها مانند تصویب شدن،
باز کردن فایل، نوشتن دایرکتوری، دایرکتوری خواندن
و همه از این نوع از مسائل.
بنابراین در حال حاضر متوجه، این کد مانند قبل است،
ایجاد سرور، عبور در یک تابع بی نام.
این نوع دلخواه.
این است که بسیار نمی وب سرور امن.
در واقع، شما می توانید دسترسی به بیشتر از هر فایل بر روی هارد دیسک من
و یا بر روی سرور سخت رانندگی با اجرای این کد
چون من فقط کورکورانه هستم فرض کنید که من قصد دارم
برای گرفتن هر کاربر درخواست در URL.
و من قصد دارم به پیشوند آن را با نقطه
به طوری که I حاشیه هستم امن بودن
با گفتن هر فایل که می توانند درخواست به حداقل شروع
در دایرکتوری جاری.
البته یک تهدید در اینجا وجود دارد.
چون اگر آنها به جای شامل چه؟
در مسیر خود، آنها را می تواند به نوعی از اطراف که کار بیش از حد.
نقطه، نقطه، درست است؟
بنابراین، در صورتی که کاربر فقط با قرار دادن نقطه، نقطه در URL، در تئوری،
آنها می توانند شروع به گرفتن من - و می گویند فایل رمز عبور.
بنابراین، این به معنی این نیست به امن،
آن را به معنای ساده است.
بنابراین در اینجا، من یک متغیر داشته باشد که الحاق نقطه است
است که شاخه جاری و URL درخواست
که ما شاهد قبل از مانند بریده بریده و یا / hello.txt.
بنابراین در حال حاضر، آن را می شود کمی بیشتر جالب است.
اول، توجه به پایین.
من گوش دادن در همان پورت به عنوان قبل از.
بنابراین جالب واقعی کار در داخل از اینجا است.
هر بار که یک درخواست می آید در طبیعت
از این کد، چه هستم من انجام می دهند؟
من خواستار فایل روش فایل به نشانه خوانده شدن سیستم،
عبور در مسیر که من می خواهم به عنوان خوانده شده.
و در حال حاضر، این است چه جالب است در اینجا،
این است که پیاده سازی در روش غیر همزمان.
شما می توانید به بازگشت می کنید ارزش از فایل خوانده شوند.
در واقع توجه وجود دارد، بیان هیچ دست چپ
به سمت چپ از فایل خوانده شوند.
این یک مقدار بر نمی گرداند.
در عوض، آن پاسخ به تماس می خواند عمل زمانی که آن آماده است
به شما جواب بده.
پس دوباره روشن، در حالی که در گذشته،
در برنامه نویسی بسیاری از زبان، اگر شما می خواهید
برای خواندن پرونده در نقطه PHP،
فایل تاکید کنید تاکید مطالب،
شما باید یک عبارت سمت چپ در تمام ارزش پس از -
قبل از علامت مساوی، این بدان معناست که شما در حال اختصاص دادن
به متغیر بازگشت ارزش آن تابع.
شما می توانید انجام دهید که در node.js، اما شما به طور معمول
برای تماس با صراحت همزمان نسخه از توابع دوست،
من فکر می کنم آن را همگام به عنوان خوانده شده فایل ها و یا همگام سازی به عنوان خوانده شده فایل.
من را فراموش کرده که چگونه آنها آن را به نام.
و که را شما یک مقدار بازگشتی.
اما در صورتی که فایل در برخی از فایل سیستم از راه دور
و یا دیسک است فقط به طور طبیعی کند، این می تواند به 10 میلی ثانیه را
و یا 2 ثانیه برای آن فایل به واقع گشت.
در همین حال، هیچ وب دیگر بازدید کننده در حال سرویس
توسط Websit شما.
شما در حال مسدود کردن.
این چیزی است که به نام مسدود کردن IO، ورودی / خروجی.
بنابراین در اینجا، این است که بسیار دقیق.
از آنجا که آنچه node.js در جریان است
بر تفسیر انجام به شرح زیر است،
آن را به تماس روش فایل را خوانده،
سعی کنید به یکی از این فایل چه کسی یک مسیر مشخص شده توسط ارزش P.
و پس از آن اگر و وقتی که آن را آماده به شما برگشت محتویات را
از فایل P، آن را خواهد یک تابع که امضا است
توسط کنوانسیون به شرح زیر است.
دو استدلال، برای اولین بار از که شاید یک شی خطا است،
سرمایه E، آن را به یک شی است خطا یا نول نام
اگر چنین خطا وجود دارد.
و آرگومان دوم - را حدس - در حال رفتن به چه؟
آن را به نام داده بدیهی است اما داده های ملموس تر است؟
>> مطالب؟
>> مطالب hello.txt در مثال من کشیده
در مرورگر من یک لحظه پیش.
بنابراین به عبارت دیگر برای خواندن فایل و بسیاری از node.js توابع
مانند در مقادیر بازگشتی نیست.
آنها تماس مجدد تماس بگیرید و با تصویب
به کسانی که تماس مجدد چه به طور سنتی بوده است
مقدار بازگشتی.
حرکت صعودی این روش این است
که شما ممکن است تماس بگیرید خواندن فایل T0.
تابع پاسخ به تماس قدرت یکی کنه بعد به نام نه
بنابراین در T صحبت می کنند، آن را به ممکن است به نام T1000،
هزار کنه بعد.
اما نکته این است که بقیه کد در این فایل،
در صورت وجود بلافاصله در حالی که node.js اعدام
و در حالی که فایل سیستم چهره چگونه به عنوان خوانده شده
آن فایل را دریافت و آن را به شما به.
بنابراین شما این ایجاد -
بنابراین به طور موثر توهم
موازی در حالی که اجازه فرآیندهای آهسته تر در حال اجرا است
جلوگیری از مسائل مهم، بخشی که ارائه خدمات به کاربران است.
بنابراین، ما چگونه این دسته؟
این بسیار معمول است الگوی node.js.
و این راه فقط به ساده وجود دارد این است که ما قبل از همراه خواهید دید.
من برای اولین بار در صورت بررسی می شود خطا است تهی نیست.
بنابراین، اگر آن را به غلط پس از آن یک خطا وجود دارد.
من نمی دانم چه چیزی است، شاید فایل وجود ندارد.
من مجوز ندارد.
مسیر اشتباه است.
هر یک از مواردی تواند به اشتباه.
در حال حاضر، من قصد دارم خودسرانه بازگشت 500
که خطای سرور داخلی است.
چیزی را اشتباه رفت.
من واقعا مهم نیست برای تشخیص آن است.
بنابراین، اجازه دهید فقط بگویم کاربر آن شکسته را.
و پس از آن، من قصد دارم به انجام res.end،
و این نماد مختصر نویسی است.
به یاد بیاورید که آخرین زمان I res.write بود
و پس از آن من res.end بود.
اگر شما فقط می خواهید ارسال یک خط از خروجی،
شما فقط می توانید آن را تمام انجام در یک بار با res.end با استدلال،
و که رفتن به ارسال هر پیام خطا است
در داخل این شی به مرورگر.
این بسیار قوس شد به یاد یک لحظه پیش.
من هیچ نظری ندارم آنچه این به معنای در نگاه اول.
اما وقتی که من درخواست فایل که وجود ندارند -
اوه، ما نیاز به اجرای سرور دوباره.
وقتی که من درخواست یک فایل وجود نداشت، EISDIR،
بنابراین چیزی در مورد این که دایرکتوری،
اگر من مقداری تصادفی انجام رشته وجود دارد،
ظاهرا این بدان معناست که فایل حتی وجود ندارد.
و این به دلیل کد من به سادگی گفت: به ارسال
از هر خام پیام خطا است،
بسیار کاربر پسند اما حداقل من آن را به دست زدن.
دیگر، اگر آن را نمی خطا چه هستم من انجام می دهند؟
همان چیزی که به عنوان قبل از تف از 200 OK، یک دشت -
متن / ساده نوع ذهن و پس از آن تف داده.
و به همین دلیل من گرفتن محتویات hello.txt که فقط
برای تایید اگر من نگاه در hello.txt،
آن را به معنای واقعی کلمه فقط سلام، جهان است.
و اگر من این تغییر سلام، جهان، ذخیره فایل،
تکرار سرور، صفحه.
در حال حاضر، من که نسخه.
بنابراین، من واقعا فقط reimplemented یک وب سرور
به عنوان است برای بسیاری وجود داشته است سال، اما با استفاده از node.js.
اما ما می توانیم این کار را انجام حتی بیش از پاک.
به من اجازه باز کردن ای async-1.js.
در حال حاضر، متوجه من اضافه کردن ماژول یکی دیگر از این زمان،
ظاهرا ماژول مسیر.
در حال حاضر، این خوب است فرصت را به نگاه
در چه اسناد و مدارک به نظر می رسد.
Node.js اسناد و مدارک است.
مانند PHP من فکر می کنم در واقع خیلی خوب است
و مستقیم به جلو.
اگر من به node.js و گوگل و جستجو برای راه node.js،
آنچه شما معمولا خواهید دید لینک مستقیم به URL است
که من قرار داده تا در اینجا یک لحظه پیش.
بنابراین / API مکان رسمی است به مدارک بروید.
و از آنچه شما را در بالای صفحه ببینید
اسناد و مدارک رسمی گره همه از روش ها و
و یا خواص داخل این ماژول خاص،
که یکی از آنها به نام بپیوندید.
و پیوستن به تابع کمک کننده است که به من اجازه می دهد
با زحمت نیست همه علامت +.
و از آن است که اضافه شده است پاداش به عنوان شما خواهید دید
از اسکله های آن را نیز عادی مسیر نتیجه.
بنابراین، در صورتی که کاربر و یا شما نقطه یا نقطه نقطه یا هر ترکیبی
از آن نوع نسبی مسیر، در میان شاهد رشد آمارهای
از روش پیوسته است که آن را برای تمیز کردن تمام که تا
و شما متعارف را مسیر بدون هیچ گونه
از آن نقطه و یا نقطه نقطه.
بنابراین، آن را چیز خوبی در به طور کلی برای امنیت حداقل
اگر شما در حال بررسی ارزش بازگشت که من نیستم
در این مورد ساده و خاص است.
اما من می خواهم به استفاده از آن.
بنابراین، من در حال حاضر در مسیر ایجاد کمی برنامه نویسی تر
با path.join به جای از الحاق خام.
بنابراین، که کمی پاک تر از قبل.
و در حال حاضر متوجه من بودن کمی آگاهی بیشتر و نه
از فقط کورکورانه سعی کنید به خواندن فایل،
من قصد دارم در واقع fs.stat تماس بگیرید.
بنابراین، اگر شما آشنا
با سطح پایین C توابع و C، حتی PHP.
بسیاری از کتابخانه ها بازده آمار این تابع
اساسا آمار در یک فایل، اندازه فایل،
مجوز، نام و مانند آن،
و همچنین به طور ضمنی اگر فایل وجود دارد یا نه،
و اگر یک فایل یا دایرکتوری است
و یا پیوند نمادی و یا چیز دیگری.
بنابراین در حال حاضر متوجه، من هستم تماس fs.stat.
و پس از آن ظاهرا بر اساس به اسناد و مدارک،
من باید به عقب بر گردیم در شی خطا
و یا نول به دنبال توسط یک جسم آمار.
اما بگذارید این را بررسی کنید، node.js.fs.
در اینجا فایل سیستم مستند سازی.
اجازه بدهید من برای آمار نگاه کنید.
خیلی بیشتر وجود دارد از توابع در اینجا.
اوه، که همگام آمار، fs.stat.
بنابراین در اینجا، آن ناهمزمان آمار (2).
که به این معنی است که اگر شما به یاد داشته باشید از صفحه اصلی،
فصل 2 از صفحه اصلی،
که به معنی این است که به معنای واقعی کلمه فقط یک اجرای گره
از سطح پایین آمار عملکرد سیستم.
بنابراین، پاسخ به تماس می شود دو استدلال، خطا و آمار
که در آن آمار است fs.stats شی.
بنابراین اجازه دهید این چه شی قرار است به مانند نگاه کنید.
بیایید با کلیک بر روی لینک و من می بینم که.
هدف آمار شامل ظاهرا برخی از روش های کمکی،
است فایل، پوشه، است یک دسته از چیزهای دیگر.
این "است" فایل است که مراقبت من است در مورد در این مورد خاص.
بنابراین در اینجا من به.
اگر خطایی وجود داشته باشد، اجازه دهید به قید وثیقه این زمان
و فرض کنیم.
اگر یک خطا وجود دارد، آن بود احتمالا یک فایل 404 یافت نشد.
این می تواند چیز دیگری
اما من که یک کمی تنبل در اینجا فقط به تمرکز
در جزئیات بیشتر جالب است.
اما برای کاربر اهداف، فایل یافت نشد،
اگر هر گونه خطا وجود دارد بیان کنید.
در غیر این صورت، به من اجازه چک کردن فایل در واقع یک فایل واقعی.
بنابراین اگر آن را نمی فایل، که وجود دارد.
چیزی وجود دارد وجود دارد، اما آن را احتمالا یک دایرکتوری
و یا شاید هم به طور نمادین
و یا چیز دیگری که بد بو در سیستم فایل.
در هر صورت، کاربر باید آن را نمی بیند.
بنابراین در حال حاضر، من فقط رفتن به تف
از متداول غیر مجاز 403.
اما باز هم فقط یک قرارداد،
من می توانم استفاده کرده اند چیز دیگری در تئوری.
و پس از آن در نهایت، به من اجازه سعی کنید به خواندن فایل.
بنابراین، اجازه دهید من در پایین حرکت.
و در حال حاضر متوجه این است که در آن کد می تواند یک کمی کثیف کنید،
توجه کنید که من خواستار fs.readFile عبور
در همان مسیر، همان پاسخ به تماس به عنوان زمان گذشته،
بنابراین نسخه های قبلی است.
و پس از آن اگر من می خواهم پیدا -
اگر من آن را پیدا کنید، من از 500 تف می اندازند.
و اگر من پیدا کردن آن، چه خط می خواهیم به قسمت مشاهده کنید؟
ما قصد داریم برای دیدن FS ارسال هدر 200 احتمالا
و res.end ارسال داده های واقعی.
اما متوجه این.
و این است که نمایشی نمی از بدترین حالت.
اما من این را آمار دارند در اینجا از من برخی از مسائل داشته باشد.
سپس، I دیگری تماس ناهمزمان در اینجا،
دندانه بنابراین بیشتر.
بنابراین، فقط نوع از برون یابی اگر شما می توانید از اینجا.
چه مشکل تمایل به بوجود می آیند با زبان هایی مانند جاوا اسکریپت
در این محیط که در آن شما مقادیر بازگشتی ندارد
بلکه شما این تماس مجدد.
و البته، این فقط یک چیز سبکی این واقعیت است
که من ایجاد تورفتگی متن، نگه دارید.
اما این به منطقی گام بعدی.
فرض کنید بوده است وجود دارد و یا دو یا سه توابع دیگر
که من نیاز به اجرای آن توسط ناهمزمان طبیعت بود،
و در نتیجه شما فقط نوع نگه ایجاد تورفتگی متن، که مسئولیت رسیدگی به آنها را،
آنها را اداره کند، که مسئولیت رسیدگی به آنها.
شما به نوعی پاسخ به تماس کنید جهنم را مردم آن را
که در آن کد خود را شروع می شود برای دریافت بسیار گسترده
و رک و پوست کنده واقعا سخت به خواندن.
همانطور که در آن است، من می توانم مرتب سازی بر جو بگویم که این نوع از جریان است
است که این نوع
از سبک زاویه دار چیزی که در حال اتفاق است.
بنابراین، این ایده آل نیست چرا که این می تواند به سرعت تبدیل
گنده، حتی اگر دو آسنکرون می خواند نمی
چنین معامله بزرگ.
بنابراین، ما می تواند از این جلوگیری، درست است؟
شما ممکن است دیدم که I misclicked یک لحظه پیش.
در اسناد و مدارک، شما می دانید، به نظر می رسد مانند است statSync وجود دارد.
و statSync نمی کشد پاسخ به تماس به عنوان آرگومان.
طول می کشد تنها راه به دلیل ظاهرا چه؟
این تابع نمونه از fs.stats.
بنابراین این ممکن است شما را غریزه برای اولین بار، درست است؟
به خصوص اگر توابع پاسخ به تماس
و asynchronicity است جدید کمی به شما، رک و پوست کنده،
ساده ترین روش است که احتمالا فقط اجتناب از مشکل تمام
با هم، بازگشت به مرتب سازی برنامه نویسی به سبک CS101
که در آن شما عملکرد تماس بگیرید و یا روش بازگرداندن مقدار،
تماس تابع، بازده ارزش،
تابع، باز می گرداند مقدار است.
و به همین دلیل من می تواند استفاده fs.statSync
است که به معنای واقعی کلمه همان اما این یک نسخه همزمان است
که به معنی آن را می گرداند ارزش.
این کار یک عبور نمی کند ارزش را به پاسخ به تماس.
اما چرا که احتمالا می شود راه حل بهینه به توسل
به توابع همزمان؟
آره؟
[نکته نامفهوم]
دقیقا، آن را به مدت طولانی طول می کشد.
شما فقط کاهش همه چیز را.
از آنجا که بسیار شبیه به لرزش زیستن و یا برگر خوشمزه، در صورتی که شر
از آن buzzers و ساخته شده شما، مشتری ایستاده در جلو
از خط تا زمانی که مواد غذایی خود را آماده است حتی قبل از در نظر گرفتن جهت
از نفر پشت سر شما به وضوح
از طریق قرار دادن بدن افت می کند.
مردم شروع به ترک، شما نوع از بسته های قرعه کشی.
شما می توانید هر تعداد را از اینجا شباهتها.
اما در کوتاه مدت، آن را احتمالا چیز خوبی نیست
برای کسب و کار و یا برای سرور.
کد پس ناهمزمان است به طور معمول خوب است حداقل
در این مورد، اما قطعا شروع می شود به علت برخی احساس وحشت و نگرانی.
و در واقع من به جرات می گویند زمانی که اولین نوشتن این مسائل،
آن را کمی می گیرم کمی از مورد استفاده قرار گرفتن به.
بنابراین، اجازه دهید شروع به تجهیز شما را با برخی از کتابخانه ها
و روش به این کمی ساده تر.
بنابراین، یکی از شایع ترین کتابخانه ها کتابخانه های محبوب
این روزها، این یک async.js نامیده می شود.
و مانند بسیاری از node.js کتابخانه ها و ماژول ها،
این همه منبع باز است.
آنها تقریبا در تمام زندگی می کنند و دریافت مخازن توپی است که نوع
از تبدیل شدن به بالفعل جایی برای ذخیره این چیزها.
و پس از آن وجود دارد تمام زیرساخت
برای نصب این چیزها نام NPM، گره بسته بندی شده مدیریت
که اگر شما آشنا با EvanTube نوع است
مانند نرم افزار و یا نرم افزار دریافت کنید.
اگر شما آشنا با فدورا و ردهت
همانطور که در لوازم خانگی، آن را مانند یام.
اما این یک گره - آن را یک مدیر بسته تنها
برای این محیط خاص است.
بنابراین، ما می توانیم دانلود و نصب کنید چیزهایی مانند کتابخانه ای async
و یکی دیگر به نام تأکید کتابخانه و یا ماژول.
اما این FS به عنوان دور، HTTP، مسیر،
کسانی که همه می آیند ساخته شده در به گره.
بنابراین اگر ما به اسناد API بروید، در واقع شما خواهید دید که ساخته شده
به گره شما به صورت رایگان یک دسته کامل از ماژول های.
اما بسیاری از مردم به خوبی در اینترنت ده ها ساخته شده اند
اگر صدها نفر از نه کتابخانه های دیگر
برای انجام کارهای بهتر و یا متفاوت است.
بنابراین، اجازه دهید نگاهی به نحوه کار این کتابخانه.
بنابراین، بسیاری از این فعال است برای لحظه ای یکسان.
من یک مسیر که باید ایجاد شده تا بالا.
و حالا من خواهان async.series.
بنابراین کتابخانه ای async، آن را فقط یک کتابخانه است که شما اجازه می دهد تا
به تصویب و یا افزایش به طور معمول از توابع به نام یک
پس از دیگر فقط به نوع اجتناب از این موضوع دندانه،
و واقعا فقط ذهنی احساس وحشت و نگرانی است که همواره بوجود می آیند
حداقل زمانی که برای بار اول شما شیرجه رفتن در این را در خود
با برنامه نویسی ناهمگام.
همانطور که در کنار، اگر شما را گرفته اند 161 و شما با قفل پرداخته ام
و بالا بردن شرایط و تمام از آن، کد ناهمزمان
و یک محیط مانند node.js است که در واقع بسیار،
مسلما بسیار ساده
از واقع نوشتن کد های multithreaded.
هر زمان شما کد های multithreaded،
شما دارای شرایط بالا می برد.
شما باید به نگرانی در مورد دو موضوع ها
برای همان منابع دیسک و یا حافظه است.
زیبایی جاوا اسکریپت
در node.js است وجود دارد به معنای واقعی کلمه تنها یک موضوع،
که بدان معنی است که مرورگر
یا سرور تنها می تواند یک چیز در یک بار.
این فقط به شما، برنامه نویس
برای نگه داشتن یک مدل ذهنی برای چگونه شما نوع صف چیز
و بفهمند که چگونه سفارش کد شما.
اما شما هرگز نگران در مورد شرایط بالا بردن
در کاملا به همان شیوه در حداقل با کد اولیه شبیه به این.
بنابراین، آن را کمی سخت به grack در اینجا.
اما - پس به من اجازه باز کردن مستندات برای فقط یک لحظه.
کتابخانه async.js که به طور مشابه بسیار googleable،
آن را در GitHub زندگی می کند repot مانند بسیاری از آنها را.
فکر نمی کنم آن را ناقص، این طور نیست.
اجازه دهید من در پایین حرکت به نشانه خوانده شدن من در اینجا.
بنابراین، کتابخانه ای async فراهم می کند یک دسته کامل
از روش داخل آن.
به عنوان مثال، وجود دارد یک روش به نام هر،
که اگر من این فقط کلیک کنید برای دیدن اسناد خود را برای لحظه ای،
این یک تابع و یا روش است که اجازه می دهد تا شما را به انجام کاری
مانند چهار هر اما در موازی.
همه آنها اتفاق خواهد افتاد به طور بالقوه در موازی.
و هر یک به روش تنها رفتن به بازگشت به زمانی که شما همه
از تکرار کامل می باشد.
شاید آنها رخ می دهد یکی پس از دیگری.
در حالت ایده آل، آنها رخ می دهد اساسا در موازی.
اما روش نمی کند با شما تماس بگیرد.
این وزوز نه خود را زنگ اخبار تا زمانی که همه
از عناصر شما تأثیری بر تکمیل کرده اند.
بنابراین، آن را فقط یک راه خوب است
اجتناب از استفاده از چهار حلقه ساده
اما در واقع انجام چیزی غیر همزمان.
اما در حال حاضر بیشتر به طور مستقیم مربوط به این مثال،
توجه به این وجود دارد روش سری.
و اجازه دهید بالا بکشد به عنوان مثال متعارف ساده است.
بنابراین کتابخانه ای async، سری روش طول می کشد در به عنوان ضمنی
توسط براکت مربع در آرایه.
داده ها چه هستند نوع عناصر
در این آرایه بر اساس در یک مثال ساده؟
این مجموعه ای از توابع است.
بنابراین در C، شما می توانید تماس بگیرید تابع اشاره گر است.
در جاوا اسکریپت، بیشتر وجود دارد به درستی به توابع رفرانس ها
و یا توابع بی نام.
و این فقط به معنی، آرایه ها
البته دستور داد ها از صفر در تا.
بنابراین، آنها را حفظ کرده اند سفارش شده است که خوب است
برای یک سری، چون سری البته به معنای انجام کاری
به منظور به موازات نیست.
بنابراین، این فقط بدان معنی است که این تابع اجرا خواهد شد،
پس از این، پس از این یکی، این یکی، و سپس این یکی،
با این حال بسیاری وجود دارد
تا در نهایت اختیاری پاسخ به تماس نامیده می شود.
بنابراین، توجه به الگوی اینجا.
و حتی اگر این کتابخانه یک مرد است،
این نماینده پارادایم جاوا اسکریپت بسیار معمول
دوباره با استفاده از تماس مجدد.
بنابراین، توجه به آنچه شما را در اینجا.
در تابع اول از طریق این آرایه گذشت،
شما تعریف ناشناس تابع فقط با تابع.
اما توجه کنید که ظاهرا با توجه به این اسناد و مدارک،
که تابع بی نام باید را به پاسخ به تماس استدلال.
است که برای رفتن به یک اشاره گر و یا یک مرجع به یک تابع
که شما باید در زمانی که شما تماس بگیرید کد آماده برای بازگشت به ارزش است.
بنابراین دوباره، بر خلاف فقط برای برنامه نویسی به طور معمول رویه
که در آن شما استفاده می شود بازگشت ارزش فورا
که یک تفاوت با با استفاده از یک کتابخانه مثل این
در برنامه نویسی ناهمگام به طور کلی، زمانی است که شما آماده است
برای برگرداندن مقدار از یک پایگاه داده، از یک فایل،
از یک حساب بیان، آن را تا به شما
تابع پاسخ به تماس به تماس.
و چیز های خوب درباره این کتابخانه
اگر ما به عنوان خوانده شده مستندات با دقت تر این است که،
اگر و تنها اگر همه منطقه تماس مجدد نام
بدون یک شی خطا، تمام چیزی که موفق خواهد شد؟
بنابراین به عبارت دیگر، اگر 2 وجود دارد،
اگر 10 ناشناس وجود دارد توابع
در این آرایه در نتیجه در این سری،
فقط اگر همه آنها موفق می شوند،
خواهد شد و پاسخ به تماس نهایی اختیاری موفق باشد در نظر گرفته؟
اگر کسی از آنها می افتد، هر تابع
پس از آن خواهد شد حتی اعدام شود.
بنابراین، این یک راه خوب از نوعی است داشتن یک زنجیره ای گل مروارید
که بی نتیجه میگذارد قبل از موعد مقرر اگر چیزی را اشتباه می رود.
بنابراین برای دیدن این زمینه، در اینجا این است که چگونه ممکن است دوباره اجرا
که برنامه های قبلی است.
من مسیر را به عنوان قبل از، بنابراین این قسمت آسان است.
من کپی این کد اسکلت خمیر
از اسناد وجود دارد async.series پرانتز باز،
باز کردن براکت مربع است.
و در حال حاضر متوجه من یکی عملکرد در این آغاز
از ثانیه، خواهیم دید که در آن ما از این به.
و در حال حاضر متوجه، آن را پیچیده در ابتدا کمی
اما تمرکز فقط بر روی آن را خط به خط.
Fs.stat به معنی دریافت آمار و یا چه چیزی از این مسیر نیست.
به این پاسخ به تماس زمانی که آماده شده است.
این کد مانند قبل است.
اگر یک خطا وجود دارد، یک تفاوت وجود دارد در حال حاضر.
باز هم، الگوی بسیار رایج در برنامه نویسی node.js است
اگر چیزی را اشتباه می رود و پاسخ به تماس نیاز به دانستن
که توسط کنوانسیون، اولین استدلال به پاسخ به تماس است که
به هیچ، اگر همه به خوبی و یا یک ارجاع به یک شی خطا،
سرمایه E. مثل یک خطا است طبقه ای که در سطح جهان وجود داشته باشد
اما بیشتر در برخی دیگر از زمان.
بنابراین با انجام این کار، اگر وجود دارد خطا، چه مفهوم است؟
خوب در آنچه که من بر اساس گفت که این سری می کند،
است اگر هر چیزی می رود اشتباه است، ما فقط نوع می خواهید
به سقط سری کامل عملکرد ناشناس را خواستار شد.
بنابراین، آن را برای من کافی است فقط گذشت پاسخ به تماس بازگشت
در شی خطا.
چرا که اگر آمار را داد من به یک خطا،
من می توانم جدید ایجاد کنید خطا در هدف خود من،
اما من واقعا اهمیتی به نیست،
من فقط می خواهم به تصویب هر چه خطا این است که در واقع رخ می دهد
بنابراین من می تواند از آن عبور کند در این پاسخ به تماس.
و فقط برای روشن، بازگشت به شدت ضروری نیست.
من در اصل می خواهید برای انجام این کار اما من می خواستم حالا "بازگشت؛
/ / به طوری که بیش کد را در اینجا اجرا ".
پس دوباره یکی دیگر از شایع کنوانسیون در جاوا اسکریپت،
حتی اگر شما نیست بازگشت به یک مقدار در هر سه،
شما می خواهید به تصویب ارزش به تابع پاسخ به تماس
اما بعد از آن شما می خواهید برای متوقف کردن اعدام
از تابع شما در، راه بی اهمیت
برای انجام این کار این است که فقط تماس بگیرید به اینجا بازگردید.
اما هیچ مشکلی وجود دارد،
ما فقط انجام پاسخ به تماس بازگشت خطا حتی اگر آن را
به بازگشت در مقدار تعریف نشده است.
خوب، این را نمی کند یک مقدار را برگرداند به احتمال زیاد.
اکنون من در مورد مراقبت است سوار شدن به اعدام بیشتر است.
بنابراین، تلفیق من از این دو خط تنها یک سبک است
به کنوانسیون فقط به به تعداد خط
کد من فقط نوشتم از 2 به 1.
پس چه چیز دیگری؟
اگر یک خطا وجود ندارد -
در واقع روشن من نیز می تواند به جلوگیری از
که با انجام این کار اگر چیز دیگری.
اما باز هم، یکی دیگر از الگوی معمول چک است
برای اشتباهات خود را بالا و سپس فقط بازگشت به جای ادامه
از تورفتگی در متن کد خود را با میکنم و میکنم و میکنم.
بنابراین اگر آن را نمی فایل، در حال حاضر، شما می دانید،
من می خواهم که مسئولیت رسیدگی به این کمی خاص.
بنابراین در اینجا مانند جاوا یا C + + و یا چند زبان های دیگر،
اینجا است که چگونه می توانید یک نمونه از اعتراض به نوع عبور خطا
در یک پیام به طور پیش فرض از یک فایل
و این فقط تا حدودی خودسرانه.
اما من سیگنالینگ خطا از خود من.
و چه چیزی از این گذشته خط احتمالا نشان؟
همه خوب است.
اگر شما در تهی برای عبور پارامتر خطا، که تنها به معنی
طبق قرارداد همه خوب است.
بنابراین، این بدان معناست که آنچه منطقی اتفاق خواهد افتاد؟
اگر تهی به تصویب می رسد به پاسخ به تماس
این بدان معناست که این ناشناس عملکرد موفق شده است
پس به صحبت می کنند.
بنابراین، آنچه که باید سری روش پیش می آید و در حال حاضر بر اساس انجام
در تعریف کلامی من قبل از آن؟
[نکته نامفهوم]
حرکت بر روی یک بعدی، درست است؟
اگر آن غیر تهی بازگشته بود ارزش، که فقط نسبت به
و هیچ ناشناس تر تابع می توانید نامیده می شود.
اما به دلیل آن است نیست، پس این را دریافت خواهید بعدی نامیده می شود.
بنابراین، منطق در اینجا است تقریبا همان است که قبل از
و خواهیم دید که چگونه برای تمیز کردن این تا بیشتر در یک لحظه.
من می دانم این نوع از زیادی است
به جذب تمام شفاهی و بصری.
اما در حال حاضر متوجه، دوم تابع بی نام است که من می خواهم
به اجرا در سری است سعی کنید به خواندن فایل.
به این پاسخ به تماس وقتی که شما آماده شود.
اگر یک خطا وجود دارد، فقط سیگنال را از طریق پاسخ به تماس
به طوری که بقیه این مسائل بی نتیجه میگذارد.
تهی بازگشت دیگری.
اما چرا من عبور در دو استدلال؟
خوب این زمان اگر من به عنوان خوانده شده فایل و بازگشت
به عنوان یک متغیر به نام داده ها،
من می خواهم، نه تنها نشان همه به خوبی با بازگشت تهی
برای اولین آرگومان.
من می خواهم به بازگشت واقعی داده ها به عنوان آرگومان دوم.
از آنجا که اگر من به عنوان خوانده شده بیشتر در اسناد و مدارک،
متوجه این تکه آخر کد براکت بدان معنی است که
پایان مجموعه.
تنها دو ناشناس وجود دارد توابع در این سری.
اگر خطایی در اینجا وجود دارد، پس از آن من می دانم که یکی از لینک
در این زنجیره تا به صحبت می کنند شکست خورده است.
بنابراین به عبارت دیگر، این خطا است برای رفتن به یک شی خطا
که تهی است اگر هر از این بچه ها شکست خورده است.
و اگر چنین است، من فقط هستم رفتن به قید وثیقه از و من قصد دارم
برای گفتن 400 که به معنای درخواست شکست،
که بسیار عمومی پیام خطا.
و پس از آن، من قصد دارم چاپ پیغام خطا از.
بنابراین، من به آزار نمی شود مقعد فوق العاده این زمان،
من قصد ندارم به تشخیص بین 500 و 404 و 403،
من فقط نوع هستم کورکورانه موج دست های من
و می گویند چیزی را اشتباه رفت.
اما اگر چیزی بود به اشتباه،
من قصد دارم برای ارسال این res.end عبور از این داده ها.
در حال حاضر این به نظر می رسد کمی مرموز.
اما باز هم اگر من به عنوان خوانده شده اسناد و مدارک،
آرگومان دوم به این آخر، پاسخ به تماس نهایی،
آن مرد که تنها اجرا پس از آن که مجموعه ای که انجام شده است
اجرا یا بخش وجود دارد از، این است که برای رفتن به یک آرایه
همه از استدلال دوم
که تصویب شد به پاسخ به تماس.
در حال حاضر، آن را به نظر می رسد که فقط در این مجموعه پیوند دارند
که در واقع به دوم بازگشت استدلال این یکی در اینجا است.
بنابراین من قصد دارم به نوعی در جهش از ایمان به سادگی فرض استفاده
برای لحظه ای که یک روش گذشته است
است که به شما آخرین عناصر یک آرایه.
از آنجا که این آرایه که در حال تصویب
به من دو شاخص، صفر و یک.
این فقط صفر است و هیچ ارزش چون این پسر بر می گرداند -
در دوم عبور نمی کند استدلال اما این مرد می کند.
بنابراین نتایج: از شماره براکت صفر هیچ چیز است،
یکی از نتایج براکت شامل چه،
اگر شما زیر شده است همراه تا به این نقطه؟
فایل، سلام، محتوای جهان احتمالا،
تا این که چگونه من در واقع چاپ آن.
و اجازه دهید به پایان برسد جزئیات اینجا.
اگر من این کار را نوعی قدیمی مدرسه، اگر من می خواهم به
در آخرین عنصر، اگر من می توانم نتایج [results.length-1]،
آن نوع است راه مدرسه قدیمی
دسترسی به آخرین عناصر در - و یا اندیس صفر است.
اما آنگونه که از طرف، به یاد می آورند که من تا به حال این کتابخانه
در اینجا تاکید است که توسط قرارداد فقط به نام
به معنای واقعی کلمه زیرین شخصیت است که خاص نیست،
آن را فقط به نظر می رسد سرد مانند علامت دلار را برای از jQuery.
این فقط یک کمک کننده است روش تأکید نقطه آخر
که نمی تواند دقیقا همین.
و اگر شما هرگز از آن استفاده می شود قبل از تاکید JS هر دو
برای برنامه نویسی سمت سرویس گیرنده
و سمت سرور است کتابخانه زیبا و مفید
است که به عنوان بسیاری از مردم آن را دوست دارم جی کوئری شامل تمام
از روش ها، از مردم خواست با خود جاوا اسکریپت آمد.
OK.
>> بنابراین، مانند خیلی به من و من تماشای در این مجموعه شد،
شما مانند پاسخ به تماس داشته به عنوان آرگومان؟
>> بله.
>> مانند تا زمانی که شما در واقع فشار که در مثل،
و مانند آنچه در آن می کند متوسط ​​زمانی که شما فقط باید
مانند پاسخ به تماس و پس از آن مانند انجام -
[نکته نامفهوم]
>> OK، سوال خوبی است.
بنابراین، اجازه دهید من بالا بکشد صفحه اصلی async است اینجا
و یا اسناد و مدارک در GetHub.
بنابراین این متعارف است ساختار.
اگر شما به تماس با استفاده از این خاص سری روش،
این دو بخش بزرگ به آن وجود دارد.
یکی از مجموعه ای از است توابع بی نام
و دو پاسخ به تماس نهایی است تابع که در واقع
اعدام در بسیار پایان مجموعه.
حال اگر ما در یک زوم کمی نزدیک تر است در اولین
از آن چیزهایی است بزرگ، مجموعه ای از توابع بی نام
توسط مورد نیاز از این مدارک مرد است
به ناشناس تابع است که طول می کشد
در یک آرگومان به نام پاسخ به تماس و یا تولی و نوار، مهم نیست
اما او آن را خواستار پاسخ به تماس.
و این نوع از زنگ اخبار خود را است که لرزش زیستن شما دست.
این وسیله است که توسط آن شما می توانید یک مقدار را برگرداند
به مشتری چون شما می تواند نه فقط به معنای واقعی کلمه بازگشت.
شما باید این کار را انجام توسط راه این پاسخ به تماس.
از آنجا که اگر در داخل این عملکرد برخی از سرعت در حال اجرا است
کد بانک اطلاعاتی پرس و جو، به عنوان خوانده شده فایل از سیستم فایل،
شما نمی خواهید به صبر وجود دارد و هر کس دیگری جلوگیری از،
شما می خواهید به تماس پاسخ به تماس.
بنابراین، این است که به معنای واقعی کلمه نام این استدلال.
اما می خواهم در C، شما باید اشاره گر تابع.
در جاوا شما روش سیستم مرجع
و همان جا در جاوا اسکریپت.
این یک متغیر است، اما نوع آن تابع است.
پس فقط با نوشتن نام آن آیا پاسخ به تماس و یا تولی
و یا بار، پس از آن پرانتز باز و پرانتز بسته،
شما در حال اجرا است که در آن تابع.
و پس از گذشت یک تهی که به معنی خطای صفر و یک
که به معنی این است که داده هایی را که من می خواهم به تصویب شوید
و پس از آن تکه های روشن، این پاسخ به تماس دیگری است.
و این پاسخ به تماس به نام نیست،
آن را فقط مفهومی است تابع روش پاسخ به تماس
دلیل آن است که به نام با تعریف
کتابخانه این نویسنده را در هنگام سری کامل به اتمام رسانده است
و یا اگر آن زیر مجموعه خطا تا هر چه زودتر اتفاق افتاده است.
بنابراین، نام تابع پاسخ به تماس، تماس تابع پاسخ به تماس،
نام از تابع پاسخ به تماس، تماس تابع پاسخ به تماس،
پاسخ به تماس های مختلف عمل همه با هم.
>> ما در حال حاضر مانند دارند تعریف پاسخ به تماس؟
>> نه، چرا که این پسر را به آرایه خود را منتقل می
توابع ناشناس،
یک اشاره گر به کد او می خواهد به اجرا.
دقیقا، همه حق است.
بنابراین، لطفا بگو که کد می شود کمی ساده تر.
بنابراین، آن را می توانید.
و اگر شما مانند من هستید، راحت به حداقل دانستن،
طول می کشد در حالی که برای در رسیدن به این استفاده می شود.
اما ما می توانیم تمیز این یک کمی،
به پرتاب بیش از حد در به شما اما در اینجا یکی دیگر از تنوع است
و با استفاده از آن روش دیگری
در همان کتابخانه به نام آبشار.
حرکت صعودی است که بر خلاف سری که در آن هر
از آن ناشناس توابع اعدام اساسا
مستقل از هر یک از دیگر.
آبشار مانند نام نشان می دهد اجازه می دهد تا توابع بالاترین
به نوع در مقدار عبور به عملکرد پایین تر،
نوعی مانند یک آبشار از آب است.
بنابراین حرکت صعودی از این این است که من می تواند به نوعی
این به نفع من استفاده کنید.
در async.waterfall، متوجه زیر است.
من فقط می توانید fs.stat تماس بگیرید عبور در مسیر
که من می خواهم به آمار.
و پس از آن قبل از من به یاد داشته باشید یک تابع بی نام بود
که تا به حال دو استدلال گمراه،
esults و پس از آن من به نام تابع پاسخ به تماس به صورت دستی؟
به عبارت دیگر فقط به پاک کردن، به یاد می آورند که قبل از آن
در ای async 2، من همه را انجام داد از این کار تند و زننده.
من به نام fs.stat در P گذشت،
اعلام ناشناس خود من عملکرد.
من پس از آن بررسی می شود اگر خطا است تهی نیست پس از آن من این بود،
دیگری من که، کل زیبایی قراردادهای زیر
مانند در node.js که پاسخ به تماس است توابع به طور کلی به معنای
به حداقل یک آرگومان، یک شی خطا و پس از صفر
و یا مقادیر بیشتر مفید است.
بنابراین الگوی توجه در اینجا،
این تابع پاسخ به تماس من اعلام شرح زیر است دقیقا
پارادایم که این پسر را کتابخانه ای async می کند.
که به این می گویند، چرا I پیاده سازی پاسخ به تماس خود من
روش هنگامی که نویسنده این کتابخانه به معنای واقعی کلمه من توزیع
در صفحه گرامافون به تعبیری، تابع پاسخ به تماس من می توانید استفاده کنید؟
بنابراین، من فقط می توانید در عبور مرجع او به من داده
به طوری که بلافاصله، چند خط من
کد تبدیل یک خط کد.
در حال حاضر، که در آن ما با این کار؟
تابع بعدی که من می خواهم برای اجرا،
بعد از ناشناس عملکرد در این آرایه
از توابع می کند به شرح زیر است.
اولین آگهی و آمار است آرگومان اول.
بنابراین چیزی است در حال حاضر تغییر کرده است.
در حال حاضر، این مرد است که نوشت کتابخانه -
و من گفت: پسر به این دلیل که یک پسر است.
این مرد است که این کتابخانه نوشته تضمین اسناد و مدارک است
که اگر این تابع در اینجا عبور می کند به من یک شی خطا
یا null های کما و به دنبال لیست تفکیک شده از ارزش های دیگر،
او را مطمئن است که آن ارزش های دیگر دست هستند
در این تابع بی نام به ترتیب از چپ به راست.
و چه تنها می شود استفاده می شود تابع پاسخ به تماس به تنهایی به سادگی
این بحث گذشته چنین می شود.
در حال حاضر، من نمی دانم که من هستم با تمرکز بر فقط شما می دانید.
اما در حال حاضر، چه چیزی دور در اینجا؟
بنابراین، ما از دانم اسناد و مدارک
و یا زن و شوهر قبل از نمونه
که fs.stat در نهایت انتظار پاسخ به تماس با دو آرگومان،
شی خطا است که شی خطا یا null به دنبال
با اشاره به آمار شی.
بنابراین اگر من در مورد آن فکر می کنم، آمار کما شی خطا شی،
که متناسب با در الگوی کتابخانه این شخص.
بنابراین، من به سادگی می توان گفت به دلیل I آرگومان دوم هیچ
که آن را - که رفتن به fs.stat منتقل می شود
به پاسخ به تماس است گمراه، آمار با تعریف از این کتابخانه،
من می توانم دوم قرار داده نام بحث در اینجا
و یا هر آنچه من می توانم آن را تغییر نام دهید
اگر من می خواهم به دنبال توسط پاسخ به تماس در اینجا.
بنابراین، من می توانم یک عبور ارزش از اینجا به اینجا.
در حال حاضر، همه این کد هر چند مسلما تا حدودی مرموز است
حداقل کپی پیست برای در اکثر موارد از قبل.
تنها تفاوت این اطلاع است اینجا به من اعلام خطا
اعتراض و در حال حاضر من می خواهم به کمی خیال باف.
من در واقع می خواهند بدانند چه خطا بود، بنابراین من قصد دارم
در داخل این شی پهلو اموال خودسرانه به نام کد
به طوری که من می دانم که این است که یک فایل
است که باید غیر مجاز باشد، این یک HTTP 403 است.
اجازه بدهید من به یاد داشته باشید که قبل از من پاس شی خطا
به پاسخ به تماس.
و سپس در آخر سعی کنید به عنوان خوانده شده فایل، بنابراین در این مورد،
آبشار، من شکسته ام کد از دو گام بزرگ
به سه مرحله کوچکتر است.
توجه زیبایی در اینجا،
من می توانم fs.readFile تماس بگیرید عبور در مسیر.
و پس از آن بخشی از سخت ذهنی است، من فقط عبور
در پاسخ به تماس آن مرد.
چیزی که او را به من واگذار، من هستم رفتن برای تصویب به fs.readFile.
از آنجا که ما همه پیوستن به کنوانسیون های مشابه،
آرگومان اول را به پاسخ به تماس است یک شی خطا یا null به دنبال
توسط کما و یا از هم جدا لیستی از چیزهای مفید.
بنابراین، آنچه این بدان معناست که در حال حاضر و اگر من خواندن اسناد و مدارک من می دانم
این، آخرین پاسخ به تماس، این پسر در اینجا در خارج
از براکت مربع در جریان است به در شی خطا منتقل می شود
یا تهی که من باید برای بررسی مثل همیشه با این کد در اینجا.
و سپس با تعریف از این روش
در اسناد و مدارک آن مرد، آخرین مقدار بازگشت
از روش گذشته در آرایه ناشناس من -
آرایه من از توابع بی نام.
بنابراین، چه به عنوان خوانده شده بازگشت فایل
و من با استفاده از یک بازگشت آزادانه در حال حاضر.
منظورم این است که چه چیزی به عنوان خوانده شده پاس فایل به عنوان آرگومان
به روش پاسخ به تماس دست خود را؟
دو آرگومان، اولین است یک شی خطا یا null،
که تقریبا همیشه رفتن به پاسخ.
و نکته دوم است که به چه چیزی برای فایل خواندن؟
محتویات فایل، داده ها به عنوان ما آن را زودتر گفته می شود.
بنابراین، به سادگی با اعلان گمراه، در نتیجه،
را بررسی کنید و خطا در این است نوعی از هم اکنون خسته کننده.
دیگری، من res.end عبور از در که نتیجه.
این بدون شک خواهد کرد همگام در کاملا
تا زمانی که شما در واقع ارسال آن را به خودتان.
اما در حال حاضر، را دور حداقل این واقعیت است
این است که ظاهرا این وجود دارد الگوی معمول، به موجب آن اگر ما
و نویسندگان کتابخانه ها همه نوع چوب
با این قرارداد از روش های پاسخ به تماس.
و آرگومان اول است یک شی خطا یا null.
و دوم و سوم
و اشیاء چهارم همه چیز ما در مورد مراقبت و ما مرتب سازی بر
از پیروی از قوانین و اسناد و مدارک.
ما با کد آغاز شده است که صادقانه بسیار زشت است.
و حتی اگر اخیر به عنوان مثال است رک و پوست کنده نوع سخت
به بسته بندی کردن ذهن خود را در اطراف، آن را حداقل بصری،
به نظر می رسد مانند آن را به مراتب سخت تر.
و هنگامی که شما راحت با آن، آن را بسیار ساده تر
و آن را بسیار کمتر در معرض اشکالات از مثال قبلی است.
بنابراین، اجازه دهید به من نشان یه چیزی در اینجا.
این نسخه سه است.
و - نه، اجازه دهید ترک این یکی به تنهایی.
اجازه بدهید من به یک زن و شوهر از برود دیگر چیز به عنوان بازی فکری.
همه حق است، پس در سرور 2.
OK. اول، هر گونه سوال، من می دانم که این مقدار زیادی است
اما شما بیشتر می خواستم دستورالعمل، پس؟
شما می گویند خوب نیست آموزش لزوما.
آره؟
[نکته نامفهوم]
درست است، شما اساسا هستید ملایم به سیستم عامل
به شکل از چگونه به حقه بازی همه از این توپ در یک بار،
خواندن از یک فایل، خواندن از پایگاه داده باشد.
و آن را از این سرور جاوا اسکریپت خود را که تنها موضوعی است.
و در اصل و در واقع،
یک تصویر وجود دارد من پرتاب کردن،
و آن را لزوما همه که روشنگر
اما شاید ما را شما یک مدل ذهنی.
جاوا اسکریپت خود را و گره
به طور خاص است این به اصطلاح حلقه رویداد.
به موجب آن، شما می توانید فکر می کنم از node.js، برنامه،
به معنای واقعی کلمه مثل در حلقه بی نهایت.
این فقط یک حلقه وحشی، انتظار و انتظار و انتظار،
به دنبال وظایف را پر کنید.
و این کار ممکن است، به اوردن چیزی از یک پایگاه داده
و یا اینجا یک مقدار از این پایگاه داده و یا به دریافت این فایل
از روی دیسک و یا اینجا درخواست از یک کاربر.
هر نوع رویداد، درست مثل این رویداد مرورگرهای رانده می شود،
بنابراین به عنوان سرور رویداد سمت هدایت می شود.
و هر یک از آن چیزهایی است را تشکیل می دهند رویدادی.
بنابراین کسی که در node.js، فقط نوشت یک حلقه بی نهایت،
یک حلقه وحشی بزرگ، انتظار برای چیزهای اتفاق می افتد.
و به عنوان مسائل اتفاق نمی افتد، آن به پایان می رسد تا در یک صف، درست است؟
بدیهی است، یک پایگاه داده ممکن است یک مقدار را برگرداند.
و یک فایل سیستم، عامل سیستم ممکن است یک مقدار را برگرداند
در حدود همان زمان اما احتمالا رفتن
به برخی از سفارش به آنها.
و node.js در حال رفتن به را اساسا یک صف
مانند یک آرایه بزرگ و یا یک بردار، برخی از ساختار داده
که بافر همه از آن چیزهایی است.
از آنجا که آن را می توانید به معنای واقعی کلمه تنها رسیدگی به یکی از آنها در یک زمان.
بنابراین، هنگامی که شما، توسعه دهنده،
نوشتن آسنکرون جاوا اسکریپت کد با استفاده از ناهمزمان
تابع، شما اجازه می دهد این به اصطلاح حلقه رویداد به
به کنه بعدی، درست است؟
بنابراین، زمانی که شما را بلافاصله بازگشت به همه
از این روش آسنکرون مانند فایل خواندن و آمار انجام دهید،
آنها بلافاصله بازگشت زیرا پاسخ به تماس در نهایت
می شود برگشت.
به محض این که شما بازگشت،
این بدان معناست که شخص دیگری می تواند پیاده سهام ظهور در اینجا
یا این که می توانید از ظهور کردن در مقابل صف در اینجا.
و چنین است که، در آن وجود دارد واقع ترتیب
از هر چیزی که اتفاق می افتد،
حتی اگر همه این مسائل را می توان به صورت موازی اتفاق می افتد
در سیستم های multithreaded.
اما خود به خود و node.js سرور در حال اجرا شد
به عنوان یک موضوع.
و در سمت پایین آن است تو لزوما حداکثر
از کامپیوتر شما قابلیت است که به خصوص
اگر شما یک هسته 16 یا حتی یک کامپیوتر 2 هسته ای
و شما فقط در حال اجرا یک نمونه از گره.
اما اگر شما دوباره چیزی شبیه به 161 گرفته شده،
شما یک کابوس بزرگ اجتناب سردرد وقتی که می آید
به مسابقه شرایط و قفل و پرچم مخابره کردن
و نوشتن واقعا کد های multithreaded،
بنابراین شاهد رشد آمارهای ها و جنبه های منفی.
OK. بنابراین، به کد در اینجا، اجازه دهید به من پیشنهاد می کنند که ما شروع
برای ساده چیز کمی.
ما دیدم سرور یک کمی پیش که شبیه این بود.
بنابراین، که مسلما خیلی ساده است.
اما درست مثل در جهان از PHP، در چارچوب وجود دارد
مانند Laravel و وجود دارد چیزهایی مانند آهن و جنگو،
همان چیزی که در جهان node.js.
و ما رو تو بیشتری را صرف زمان در این روز چهارشنبه
و در پروژه بعدی.
اما اگر من به رفتن سرور 2 شاخه،
متوجه چند نمونه در اینجا.
پس این است - وجود دارد رفتن به عنوان مثال معادل
اما آن را با استفاده از یک چارچوب به نام express.js،
که منبع باز رایگان نرم افزار مانند آهن و جنگو،
مانند Laravel، که فقط در نهایت رفتن
به قرار ن امروز چون ما به نوشتن شده است
نمونه ساده است.
اما به ما اعتماد.
این بسیار سریع خواهد شد تبدیل به دوست خود
چرا که آن را نجات خواهد داد شما تعداد زیادی از کد TDS.
و یک الگوی مشترک برای برنامه express.js است
به app.js یا server.js فایل که حاوی منطق
از برنامه های خود و یا در حداقل نقطه ورود.
شما می توانید چند فایل را داشته باشد.
ماژول زیر شاخه گره است که کتابخانه ها
که شما دانلود کرده اید مانند ای async
و در برخی دیگر بیان خود.
و پس از آن package.json، package.json به نظر می رسد مثل این،
و شما می توانید آن را به صورت دستی ایجاد کنید و یا ابزار آن را ایجاد برای شما
و آن را به معنای واقعی کلمه یک فایل JSON
و قسمت جالب وابستگیها در اینجا است.
فقط در Laravel دوست دارید، شما حال که دایرکتوری فروشنده
و شما تا به حال به نگرانی در مورد بسته و انجام -
در واقع با به روز رسانی صنعتگری و یا دستورات مشابه،
کتابخانه شما نصب شده اند،
به طور مشابه با package.json در اینجا و شما را مدیریت کتابخانه
و نسخه که برای شما مهم است.
بنابراین، اگر من یک package.json، من به سادگی می توانید انجام دهید NPM،
گره بسته بندی مدیر نصب، آن را به طور خودکار نگاه
در آن فایل package.json.
نگاه کنید و ببینید، من که آخرین نسخه
از تمام ماژول های فروشندگان
در یک گره تاکید ماژول ها دایرکتوری اینجا و یا شاید
در برخی از پدر و مادر و یا دایرکتوری جد.
و اگر نه، آن را رفتن به آنها را دانلود کنید
و شما یک دسته کامل را ببینید
از HTTP چیزهای رفتن در سراسر سیم.
بنابراین به عنوان مثال، اجازه دهید من شما محتویات نشان می دهد
از ماژول های گره فقط به بیان کنند.
اجازه بدهید به پیش بروید و ماژول های گره شجاعانه حذف
به طوری که تمام من در حال حاضر این است.
و اگر من NPM نصب، نظر شما ببینید که آن را به عنوان خوانده شده
که فایل package.json و ما دیده ایم خروجی مشابه
به این در جهان Laravel.
این دانلود در کل دسته از مسائل و به
به دلیل بیان به نوبه خود بستگی به یک دسته کامل
کتابخانه های دیگر از مردم.
بنابراین، همه کسانی که به نوعی که به صورت بازگشتی دریافت کنید.
تا به حال، اگر من در LS را دوباره انجام دهید،
ماژول های گره من وجود دارد دایرکتوری به عقب
و بیان به عنوان پشت.
پس از آن فقط یک راه ساده مدیریت بسته.
حال اگر ما در نگاه فایل app.js، این است که
به یک بازگشت به اولین وب سرور ما
که در آن ما فقط تف از "سلام جهان".
اما متوجه پارادایم،
در ابتدا ما نیاز به بیان ماژول، پس ما باید این خط
از کد که شما می دانید از اسناد و مدارک.
شما به معنای واقعی کلمه در درمان که متغیر ماژول را به عنوان یک تابع،
نزدیک پرانتز تا باز پرانتز به معنی اجرای آن است.
که رفتن به ظاهرا چیزی است که ما قصد بازگشت
به طور کلی برنامه تماس بگیرید.
چگونه کار می کند؟
من واقعا نمی دانم.
من به شما اجازه شخص دیگری، شما می دانید، در جهان بیان را بنویسید.
من قصد دارم به حال ایستاده در شانه های او و یا او را به عنوان
به درخواست من در حال اجرا کمی ساده تر.
در اینجا، من قصد دارم به گوش دادن در آن پورت خاص
که می تواند هر چیزی.
و در اینجا کد که است شاید بیشتر یادآور اکنون
از Laravel و routes.php.
پس این است که شام ​​ساده، من هستم فقط برای مشخص کردن یک مسیر
برای ستاره بریده بریده، بنابراین همه چیز رفتن به جذب می شود
این درخواست کنترل.
پارادایم برای درخواست کنترل تابع بی نام آن است
با استدلال درخواست
و یک شیء پاسخ درست مثل قبل.
و res.send در وسیله بیان شما کد به دنبال ارسال
توسط هر آنچه شما می خواهید برای ارسال.
و البته، شما می توانید انجام کاری رویایی
در واقع ارسال فایل ها و یا HTML
و یا به صورت پویا تولید محتوا.
اما در حال حاضر، همه ما بود سلام، جهان از تف شده است.
اگر ما به سرور سه بروید، این است که حتی خیال باف تنها
به شما برخی از قابلیت های نشان می دهد.
و ما به شما نشان می دهد نسخه حتی جذاب
از این روز چهارشنبه.
اما اگر شما تا به حال شنیده ام از سوکت IO شاید،
به طوری که من فکر می کنم جاناتان یا کسی که قبلا هم گفتم،
یکی از چیزهایی که گره واقعا شناخته شده
برای زمان واقعی آن است رفتار، درست است؟
در مورد PHP در خروجی زیر فکر کنید، اگر شما بود به پیاده سازی یک سرور چت
در PHP به موجب آن دو نفر می تواند باز کردن یک پنجره مرورگر به foo.com
و سپس شروع به IMing هر دیگر، آلیس در یک پنجره،
باب در دیگری را که هر یک از آنها را می بیند او
و یا پیام های خود را در پنجره های دیگر.
چگونه می خواهید این کار را انجام در PHP و MySQL؟
با استفاده از و یا با استفاده از نوعی Laravel از غیر مادی، شما می توانید
مانند یک فایل index.php.
و شما رو به - در برخی از موارد باید به تف
از فرم، بنابراین وجود دارد برای رفتن به یک فرم HTML
که احتمالا تسلیم نمی از طریق ارسال فرم نرمال
اما آژاکس احتمالا، درست است؟
بنابراین، در ارائه برنامه کنترل، پس شما را به یک فیلد متنی تایپ کنید،
به شما ضربه وارد کنید و سپس آن را می شود از طریق آژاکس به سرور ارسال می شود.
چه شما پس از بر روی سرور انجام دهید؟
بنابراین، شما فایل index.php رو
و یا چیزی نقطه PHP که دریافت در پارامتر HTTP
از کاربر، آلیس و باب پیام های فوری، چه کار میکنید
با آن به منظور انتشار به باب و آلیس، بود؟
شما منظور من به معنای واقعی کلمه از ابزار که با آن
برای انجام این کار در دقیقه خود را.
پس چون آنچه را شما انجام دهید؟
شما یک دقیقه به پیاده سازی این برنامه است.
آره؟
[نکته نامفهوم]
کامل. راست است، بنابراین شما یک پایگاه داده داریم.
ما کمی می دانید کمی در مورد داده.
بنابراین، شما باید یک جدول که پیام است،
شاید یک بار وجود دارد تمبر، ID کاربر،
بدن از پیام خود را ایجاد شده است که،
به روز شده آن و همه از آن.
بنابراین، شما در یک پایگاه داده ذخیره کنید.
و فرض کنید آلیس می فرستد اولین پیام، چگونه باب کنید
که پیام در حال حاضر از پایگاه داده؟
>> این ممکن است برخی از آژاکس پاسخ است که به طور مداوم در رفتن
برگشت به پایگاه داده بالا [نامفهوم].
>> دقیقا.
بنابراین کد باب که کد این است همان آلیس است فقط نوع
یک رابطه متقارن،
مرورگر باب تا به برخی از کد آژاکس که احتمالا شاید هر 30
ثانیه کشیدن سرور از طریق همگام سازی آژاکس،
پیام های جدید وجود دارد؟
آیا پیام های جدید وجود دارد؟
هر 30 ثانیه است که به نوعی کمتر از حد مطلوب است
چرا که او را به صبر و حتی
اگر آلیس به معنای واقعی کلمه فقط پیام ارسال می شود.
بنابراین، مرورگر باب می تواند در هر ثانیه آمار سرور.
اما این به معنای آلیس مرورگر است هدف قرار دادن سرور
در هر ثانیه.
چه در مورد چارلی [املایی فرض]
و دیوید [فرض املایی] و ادوارد [فرض املایی]
و هر حرف دیگر از حروف الفبا؟
مشکل چیست از این روش؟
بسیاری از بازدید بیش از حد -
منظورم این است که شما فقط به طور موثر هستند دوز دید خود را
و یا DDOSing، توزیع شده حملات انکار سرویس
در سایت خود، با داشتن همه
از این کاربران اجرای جاوا اسکریپت کد که فقط pinging
هک از سرور شما حتی اگر تعداد دلخواه،
80 درصد از زمان هیچ کس گفته است هر چیزی
در اتاق چت.
اما شما فقط چک مطمئن شوید از جمله.
بنابراین PHP در بسیاری از زبان تنها خوب نیست
برای ارتباطات زمان واقعی است.
از آنجا که در فراخوان PHP وجود دارد هیچ حافظه مرکزی، درست است؟
شما باید اشیاء را وارد نمایید که ایجاد توهم
از ذخیره سازی مرکزی اما که بر اساس هر کاربر است.
شما حافظه جهانی ندارد مثل شما در یک جاوا سرولت انجام
در آشنا و یا در دیگر فریم کار می کند که می خواهم.
Node.js هر چند، شما مجبور حافظه جهانی چون شما
یک سرور و که می تواند به یاد داشته باشید هر چیزی آن را می خواهد
در مورد تمام کاربران.
و شما ممکن است هنوز یک پایگاه داده.
اما نکته خوب در مورد node.js بیش از حد است که آن را به مراتب بهتر
از چیزی شبیه به PHP و ایجاد توهم
از دست زدن به چند همه چیز در یک بار.
و در واقع به عنوان در کنار، شما می توانید پیاده سازی سرویس دهنده چت در PHP،
اما شما به طور معمول انجام چیزی به نام رای گیری طولانی
به موجب آن شما پینگ نمی سرور در هر ثانیه.
شما پینگ سرور، سرور به شما پاسخ نمی دهند
برای بیش از 30 ثانیه، آن را به معنای واقعی کلمه می نشیند
در یک حلقه انتظار و انتظار.
و چک های سرور اگر این داده های جدید در پایگاه داده وجود دارد
و تنها یک بار آن را به شما می بیند، "آه، در اینجا یک پیام از باب است، "
آیا آن را به سرور HTP پاسخ؟
بنابراین اثر را در مرورگر خود این است که آیکون اینترنت اکسپلورر یا موزیلا
و یا هر آنچه که فقط نگه می دارد در حال چرخش برای 30 ثانیه در یک زمان.
اما حرکت صعودی است، شما نمی 30 درخواست های اتصال
در 30 ثانیه، شما باید یک.
پس این رای گیری طولانی نامیده می شود.
اما حتی بهتر در وب مدرن مرورگرهای چیزی به نام است
WebSocket، که شما را CS143،
شما به طور موثر می تواند یک را اتصال TCP از مشتریان
مانند یک مرورگر به سرور و پس از آن در چسبیدن به آن
بدون استفاده از نزدیک به به عنوان بسیاری از منابع
به عنوان HTTP به طور سنتی ممکن است انجام دهد.
و سوکت IO است کتابخانه node.js
که باعث می شود آن را بسیار آسان تر به ایجاد ارتباط سوکت
و یا توهم وجود دارد در برای مرورگرهای قدیمی
به طوری که شما می توانید این اجرا قابلیت زمان واقعی است.
بنابراین، در اینجا به عنوان مثال است.
این مسائل تا بالا می شود کمی پیچیده تر است
اما آن را بیشتر به کپی و چسباندن از اسناد و مدارک socket.io است.
در اینجا در حال حاضر بیش کنترل درخواست دقیق.
اگر درخواست کاربر بریده بریده، چه فایل هستم رفتن
به ظاهرا شود خدمت به آنها را؟
میکنید.
و در برخی از جدید وجود دارد مسائل در اینجا جریان
که من شما را نشان می دهد در یک لحظه.
اما این یک راه دیگر است
از گرفتن یک فایل کمی موثر تر
از انجام fs.readFile.
این یک دقیق کمی به خصوص برای فایل های بزرگ.
داستان تا زمانی کوتاه، این خطوط فقط برای خدمت
یک فایل به نام index.html به
که در حال حاضر فرض شامل فرم HTML که در آن آلیس
و باب ممکن امیزش.
در نهایت، io.sockets.on، بنابراین این می آید از این خط تا اینجا.
بنابراین، من فقط خواندن io.socket اسناد و مدارک به من می دهد
دسترسی به اصطلاح WebSocket با یک مرورگر،
بین مرورگر و سرور.
من گوش دادن را برای خاص اتصال رویداد که به معنی
زمانی که کاربر برای اولین بار بازدید از سرور تلاش
برای باز کردن این ارتباط، من هستم رفتن به به این تماس به عقب.
و در حال حاضر، من قصد دارم برای انجام این کار به شرح زیر است.
هر پنج ثانیه، آنچه من قصد دارم کاری انجام دهید؟
من قصد دارم به منتشر می کنند و یا پخش اگر شما ابتدا به یاد داشته باشید،
زبان گرافیکی را که یک بلوک های پخش؟
بنابراین، شما در حال رفتن به منتشر می کنند
و یا موجب یک رویداد به نام خودسرانه از سرور.
و آن را به شامل پینگ پیام
و تاریخ جاری است.
بنابراین، این یک واقعی سرور چت که آلیس
و باب می توانید استفاده کنید، اما این نوع یک سرور چت خودکار
که در آن پیام می باشد درخواستهای فقط نوع سونار.
این فقط در زمان های که در تاریخ در حال ارسال در هر پنج ثانیه صورت گرفت.
بنابراین، اگر من در واقع این اجرا چیزی - و آن.
روشن کردن در اینجا، توجه این است که فقط از ورود به سیستم را در اینجا.
بنابراین، اجازه دهید من به نوبه خود چشم خود را به که.
به من اجازه انجام گره از app.js.
اجازه بدهید من به مرورگر بروید.
بازنگری صفحه اصلی اینجا.
[مکث]
و به من اجازه بازرس نزدیک است.
هر پنج ثانیه، من یک تظاهرات حتی اگر نمی
تعاملی برای انسان
از چیزی است که اتفاق می افتد. آنلاین نیست.
در اطلاع مرورگر، هیچ آیکون در حال چرخش وجود دارد.
این با استفاده از یکی از ویژگی های رویایی از کروم در مرورگر های مدرن
حفظ یک سوکت اتصال در زیر هود
و آن چیزی است که به نام به طور کلی یک مدل میخانه / زیر،
چاپ / مدل مشترک، که در آن ما انجام می شود
که کاملا به صراحت در اینجا.
اما چه خوب است در مورد این میخانه عمومی / خرده پارادایم است
که شما می توانید یک ناشر داشته باشد.
در این مورد سرور مرکزی و تمام
فرد مرورگرهای مشتریان می باشد.
Alices و باب از جهان می تواند به آن مشترک،
بنابراین شما می توانید پیام های رله در میان هر تعداد از کاربران.
و حتی اگر دوباره ما دیدن تعاملی نیست،
ما شاید به حال 12 خط کد فقط برای انجام این کار.
و این احتمالا یک جهش نمی تصور کنید که چگونه شما ممکن شلاق
از فایل index.html که دارای یک فرم HTML درست است،
کمی از کد جی کوئری با آژاکس می کند که در طول روز ارسال کنید
اما فقط می فرستد هر آلیس یا باب نوع به سرور
و سپس سرور آن را به رله است.
و من قول می دهم تا نگاهی اجمالی در یکی از آخرین چیزی که فقط
به شما کسی را دست انداختن با این.
اگر ما به جریان به صفر و یک،
شما کد که فقط ببینید کمی متفاوت است در اینجا.
فقط برای این که شما آن را دیده ام، این یک جایگزین است
به آنچه من به نام fs.readFile روش قبل از آن، به موجب آن،
شما می توانید node.js بگویید، "برو خواندن این فایل را به حافظه است.
اما اگر آن را بزرگ فقط به من بدهید من یک تکه در یک زمان. "
و شما ممکن است از CS165 دانم
و یا 161 فایل سیستم داشته های مختلف
خواص عملکرد.
شما ممکن است بخواهید به عنوان خوانده شده در بلوک از 512 کلمه در ادامه متن
و یا 2 کیلوبایت و یا هر چیز دیگری.
این یک راه بهینه از است از برگشت از فایل تکراری
به طوری که شما می توانید آن را تف از سرعت کمی بیشتر
به مرورگر و یا به هر کس به مشتری نهایی است.
مقدار پس عظیمی از محتوا امروز و ما قصد داریم به شیرجه رفتن
به جزئیات بیشتر در روز چهارشنبه با تیم [املایی فرض]
به طور خاص به دنبال چگونه ما می تواند برخی از ایده های ترجمه
از نیمه اول البته Laravel و مدل
به یک کتابخانه که خود او نوشت به نام Bookshelf.js
است که به طور فزاینده ای تبدیل محبوب در جامعه
چرا که آن را به شما می دهد بیشتر از آن،
اگر نه بیش از عملکرد سخنور
که فراخوان این است که بینش کتابخانه Laravel،
بنابراین بیشتر بر روی آن و بیشتر چگونه
برای توسعه کامل تکامل یافته برنامه روز چهارشنبه.
ما به شما پس از آن را ببینید.