>>所有權利，所以我們又回來了， 一對夫婦為今天的目標，
我們將拿起 我們離開的最後一次，
記得我們 使這個繼承
，服務器相關的應用 超級簡單但使用節點的JS
然後，最近又 使用快遞觸摸AS
什麼是表達的JS 在PHP世界的模擬。
所以快遞是更多...近，
所以快遞在本質上是 MBC的框架，這是相當
在節點的js紅遍全球，
書架，我們會看到 通過添今天是一個模擬
這是一個ORM的雄辯的 在對象關係映射器
這實際上使得它更容易 為了避免低層次的SQL代碼
而實際上表達的關係 中的各種對象。
這樣的最酷 老老實實的東西
有關節點的js是多麼 簡單地它本身
以做實時應用， 之類的東西聊天服務器
或郵件服務器， 什麼，你們現在使用
像谷歌... G-聊天 或谷歌的住處
或者Facebook狀態更新 甚至Twitter的，如果你是
在他們的網頁上一切 是那種實時
或者給你 實時錯覺
而這實際上是一種痛苦 頸部做的東西
像PHP和我的SQL 右側沒有提出什麼
週一將是手段
通過它您可以實現的 實時行為錯覺
在PHP的聊天服務器， 你會要嗎？
Alice發送一條消息，打 進入到哪裡去？
是啊。
>> [無聲段]
>>進入數據的基礎上，然後 是什麼Bob的瀏覽器有
做真正看到 什麼愛麗絲說，是嗎？
>> [無聲段]
>>保持輪詢數據庫， 右，所以一個Ajax請求有
消防每一秒，每幾 秒或我們短暫交談
但沒有看的一個例子 一些所謂的長輪詢，
任何人都還記得如何
該機制對... 一個高層次的工作？
>> [無聲段]
>>沒錯，是這樣一個瀏覽器 還是讓一個Ajax請求
到服務器，到富PHP點 但富點的PHP似乎只是
掛，它本質上坐 在盡可能多的while循環
30秒通常和 只有一次，把foo點php文件
實現哦，有一個新的行
在該數據的基礎上做 它實際上反應
有一個http響應。
那麼，你認為，這可能 否則掛服務器
而且它在一定程度上
但它意味著有 少了很多開銷
因為你並不需要一個新的TCP 連接時，一個新的連接HTP
實際要求 來自服務器的數據。
但節點的js配備了一個非常 所謂插座通俗圖書館
點io的，你可以 從來沒有使用是建立在頂部
一個稱為Web技術 插座，其存在
在最現代的瀏覽器和 什麼插座io的作用是讓你
創建本質 持久連接
瀏覽器和服務器之間的 這是非常低的開銷
所以你不一定 具有相同的縮放問題
您可能會，如果你是 不斷衝擊服務器
在PHP的世界， 我的SQL等。
即使是舊的瀏覽器
不支持網絡插座 這個庫插座點IO可
依傍閃爍 實施插座
和插座是一個網絡 從CS143比如事情。
或者，它甚至可以依傍長 投票本身，所以它們實現
同樣的梳理工作
其實對於圍繞維護 該連接的錯覺。
所以插座[聽不清] IO 這是在形式
一個Java腳本庫， 基本上如果你使用它
在一個節點的js的形式 應用程序，您不僅安裝
它作為一個包使用的東西 像故宮，我們用在週一
而或者你也包括 剝去標籤在你的HTML文件
上面寫著使用 客戶端庫。
因此，有兩半 它和我們在這裡所做的
在第四次迭代 週一的序列
的例子如下。
所以這個文件的結構是 讓人想起一個很常見的集
註冊表示js和 令人欣慰的是比較簡單的方法
比lervo [拼音] 是，記得當你設置
高達lervo你得到了巨大的討厭 傾倒了一大堆文件的，
供應商目錄，lib和很 重的重量相比，這一點。
現在，為公平起見，我們已經剝離 遠的東西，是一個很值得
分心但所有的 多汁的東西是真的
在節點模塊。
只給你 如果我們看一嘗
在節點模塊有 兩個模塊或庫
我已經下載了，這 將相當於
供應商目錄，一 叫快遞是
像larevel但在節點
和插座的IO 一個我剛才提到的。
所以那些存在這樣我們就可以 請執行以下操作，如果我打開
了讓我們說指數點的html， 讓我們先來看看HTML，
這是怎麼回事組成 這個身體，我的超級，
超級簡單的聊天服務器。
所以這是一個很明顯UL 有消息的獨特的想法
而這也正是 一華里的時間，
所有的即時消息都是 將愛麗絲之間出現
和Bob，然後有一個 與文本字段的簡單形式
和一個提交按鈕 由愛麗絲
或鮑勃實際上可以 消息對方。
所以淨效果，如果 我運行這個應用程序
通過做節點空間應用點 js的，如果我拉起來一對夫婦
瀏覽器窗口是 愛麗絲可能是在右邊，
鮑勃可能是對的 左和公正
要清楚有沒有神奇 這裡我有一個窗口
在隱身所以沒有 分享餅乾或任何
這樣，這些都是 兩個不同的用戶。
我應該能夠有翹 打個招呼鮑勃，點擊提交
現在你在左邊看到 Alice的郵件已發送
和幾乎瞬間 在右側。
無投票看似參與其中， 鮑勃收到了同樣的消息。
現在，鮑勃說，說，嘿愛麗絲 你看到了相反的效果。
那麼到底發生了什麼，怎麼 太多的代碼我們需要編寫
實現這個聊天服務器
您現在可以推斷 精神上，每個人都
在這個房間裡，如果這 是不是我的[聽不清]
但富科網我們都可以 開始聊天瞬間
彼此。
那麼什麼是介入之前，我 清除此屏幕，這是本
只是插座IO作為一個 有點吵，它只是印刷
輸出調試信息 到屏幕上，
沒什麼好說的 否則對那裡發生的。
因此，讓我打開的應用程序點的js，所以 因為我們已經有了幾件事情之前，
在該文件的頂部。
一堆的要求， 所以這些都像庫
或銳利的線索或要求 成盎司無論心智模式你
想擁有和公正 要回顧一下使用FS
什麼樣的功能？
so文件系統，以便讀取文件 潛在的和類似的東西
我用這個在一 請將你會看到，
快遞當然是這樣的 框架我們正在使用，
它不是嚴格 必要時，我們可以
像週一完全建立 從頭開始我們自己的http服務器
通過做創建服務器和所有 之類的代碼與以前的
但正如我們將看到這使得 事情變得更輕鬆
因為所有我需要做的就是 在第3行這裡實例化
和表達的對象，我會打電話 它的應用程序，有些武斷，
然後我會告訴該應用 偵聽任意端口1337
可能按照慣例80
然後最後我有一個新的 今天的線，是說
要求插座 IO庫，然後
通過這條產業鏈的做法會 這點運算符，我只是
調用一個教訓聽這 基本上說的是插座
IO庫也 聽相同的服務器
或網絡套接字連接。
所以，現在是什麼，究竟什麼是 該做的，這四條線
這裡的代碼應 看起來讓人想起larevel的，
什麼是代表？
>> [無聲段]
>>這是一個......的路線，只是 路由以便在應用程序點的js，
又名取決於服務器的js點 什麼人想叫它
在自己的應用程序 你有一個約定
這樣的定義你的路由，
應用點GET意味著無論何時 你會得到一個GET請求去
為從字面上削減前進 並調用這個匿名函數
而在匿名函數 這種情況下，需要通過要求
或請求和響應， 可能一些其他的東西
但最低限度這兩個。
請求給您的訪問 喜歡的東西HTTP參數
和標題等 多汁的事情
然後將反應 是機制
通過它可以 響應給用戶。
因此，這是超級簡單，甚至 雖然我們沒有看到挺
相同的代碼最後一次，我 使用文件系統模塊
創建讀取數據流的方法 基本上這樣做，
創建一個只讀流， 指基本上開始嘖嘖
從指數點的字節 HTML作為有效的，你可以
而不必等待 直到你讀取整個文件
和你這樣做 管它們字面上
在豎線感 如果你是舒服
用linux命令行，
它管的反應 的對象。
所以有兩個例子 相關週一流，
我們只是看了一眼，但 歡迎您回頭
在流O和流1。
流1 ... 0做 一些與此類似，
流1做了什麼 幾乎完全一樣的，
這僅僅是一個華而不實 的說法排序單行
的嘟嘟地喝東西在這裡 然後開始在這裡發
在同一時間不 做一個群眾同意
然後一個巨大的權利，
這種方法是 通常更有效。
所以這是一種舊的東西 即使是新的週一，
這是所有需要 實現一個聊天服務器
與節點的js和更多 特別是插座點io的。
那麼，如何做這項工作， 讓我移動了一下，
所以io的僅僅是一個變量 引用
到模塊我們 早前要求，
點插座僅僅是一個 在它的內部屬性
這給了我插座 相關功能
上是一種常見的方法，該方法 涉及到什麼一般概念？
事件等等又名監聽 一些圖書館，那只是意味著
在聽到這個事件 這是所謂的連接
現在你知道這只是從 在看文檔，
誰寫的庫 定義稱為事件
連接這確實 你的會認為
當甲和乙連接。
來吧，把這種 匿名函數通過取
在一個參數客戶端 這顯然是某種
對象，它表示的 Alice的連接
或鮑勃的連接或 查理或其他任何人
現在我們做到以下幾點。
我們告訴客戶端後， 他或她正在連接
具體聽
對於一條消息，是完全 隨便叫消息
結腸客戶端。
這一點是Tim和 我想出了，也可能是富
或酒吧，它只是一些 我們需要的唯一的字符串
決定後，如 開發商。
當甲和乙聽到
該事件這個匿名 函數應該被稱為
和數據，該 愛麗絲的內容
或Bob的消息應​​該是 通過這個事件處理程序
現在又該 客戶端做的很好，你可以種
念這相當直觀 客戶端應該播出，
否則稱為發射 消息調用的方法服務器
從而標誌著該消息 從服務器來不
從瀏覽器和什麼 將這一信息是，
它顯然是從有效載荷 從客戶端傳來的任何
而我們只是要 隨意調用它的消息。
所以很多的，這是武斷
通過合理的命名 約定，蒂姆和我來
了，主要是蒂姆然後我們 簡單地創建一個最終
聊天服務器，做什麼， 當Alice發送消息
並點擊進入什麼樣的事件 顯然是被解僱，
只是回顧一下。
愛麗絲類型的消息，點擊率 輸入，郵件客戶端被觸發，
這段代碼聽說現在 服務器廣播什麼，
什麼是最終的結果 這真的？
Alice發送消息現在 服務器轉播它
有效地大家除了 愛麗絲，為什麼大家除了
愛麗絲，如果你只是看
在客戶端的文檔 點廣播點承認，
從字面上這樣做， 廣播消息
大家除了 客戶誰送你
那最新的消息。
所以這就是為什麼只有你 看到過一次，每邊，
你看不到Alice和 鮑勃獲得Alice的消息。
所以這是它，這 是一個中繼代理
如果你將那 只是走在信息
和轉播出來
和它的顯著 可擴展我的意思是什
一個超級簡單 服務器和幾行
的代碼，你當然可以 處理數百甚至數千
同時簡單的消息 來回這樣
和想像中的複雜性 現在做這個的PHD
或Larevel或我的SQL和 你會多少代碼有
在為了寫 其實做到這一點。
現在，在這個公平 是不是持久的權利
如果服務器出現故障 我們失去了整個歷史
所以它不是一個相當 完美的翻譯，但它
該直線前進。
讓我們來看看在Java腳本 代碼中，我們跳過了前面，
這是Alice和 Bob的客戶端，
他們現在使用的網頁 讓我們來看看在這裡了一會兒。
還有一些代碼
但它非常簡單，只是 jQuery的這裡，所以通知
在該網頁 我拉
一個剛才我們 包括jQuery庫，
套接字IO庫和 順便說一句注意到其中的差別
在這裡，斜線斜線 一個路徑的開始
像這意味著究竟，
哪裡是jQuery的點 JS什麼服務器？
是啊。
>> [無聲段]
>>這是在互聯網上耶 從字面上稱為碼點的jQuery
點com為什麼斜線，斜線， 為什麼不只是一個斜線，
哪裡是http或結腸， 這是什麼意思一般
如果你斜線斜線 該URL的開頭？
它實際上是有用的。
好了，有什麼明顯 現在缺的http，如果我們的理由
通過這個邏輯， 通常你不需要
更何況一個服務器的名字的權利
就像如果只是用斜杠 jQuery的js的點是什麼假設
由瀏覽器？
該文件是在同一 服務器，以便繼續那種
邏輯的，如果你不告訴 它什麼協議什麼
瀏覽器假定，同樣的協議， 如果你曾經訪問過的網站
沿給你一個錯誤 的不安全內容的行
此頁面上，這是因為 有人硬編碼一個http
冒號斜杠斜杠的URL為 圖像或Java腳本文件
或CSS文件，類似的東西 在網頁的源代碼
但網頁本身的 瀏覽器網址為http秒。
所以，這只是 花哨的小方法
的說，我不知道 什麼樣的協議是
這些最終用戶 要使用
但只要確定它 火柴使鉻
和其他瀏覽器 不罵的用戶。
唯一的缺點是在 jQuery的人最好設定
了他們的https服務器上。
因此，他們實際上是 在443上市。
好吧同時這 一個在這裡，這是一種
誤導斜線 插座io的建議
有一個名為目錄 我的服務器套接字IO點
但有沒有，如果我們撥開
周圍還有的 節點模塊的目錄
但並沒有什麼 公眾了解這一點，
當我們配置IO插座 在同一個端口上監聽，
1337本質上是庫 別人寫的是去
排序插入一些代碼 到節點JS的環境
只聽這個路徑。
該庫剛 針對此一路線，
它不是一個真正的目錄。
這將是一個 標準的位置。
好了，現在有趣 部分，
該文件因此當 準備好所指示
這個jQuery的構造， 首先，我要繼續前進
並連接到插座，
只是什麼插座...保持它 簡單的我要連接
大幅削減，這是 其中用戶是
我已經把簡單的例子 我們只是要連接
到精確的相同的URL，該 用戶訪問，然後我要去
做到以下幾點，我要去 告訴Alice的或者Bob的瀏覽器
偵聽的 從服務器的消息。
同樣，這可能是富
或禁止任何時候，你 聽到留言
從服務器調用它的數據 然後執行這個jQuery代碼
我猜大多數如果 不是每個人都熟悉
這些天，但 基本上一針列出項目
在現有的UL哪 被稱為消息
從字面上說， 無論負載是
聊天消息隨後的 一個連字符，接著接收，
後跟一個空格，然後 更新的時間，這就是為什麼
如果我們回去要清楚
這個你得到這些額外的 一次又一次的子彈
並再次與日期時間。
同時，如果我們看 到這裡我們只是有
處理表單提交 所以這是接收
即時消息的，這裡的 發送這是排序
的無關節點的js，聽 到形式提交事件。
當它發生時防止默認情況下， 這只是意味著不提交
以慣常的服務器 這樣，重新載入整個頁面，
我們希望所有通過ajax來做到這一點。
這裡只是一些jQuery代碼
實際獲得的輸入 其類型為消息，
他的名字是消息前進
並得到它的值 然後你繼續前進
如果你確實有一個 消息，如果Alice和Bob
或鮑勃實際上有些類型 沒有0號擊鍵發出
插座上的一個叫做消息 與有效載荷消息客戶端
再往下，這是這裡 是什麼使得它的綠色，而不是
紅色，我們只是輸出 家電側[聽不清]。
所以這是它，但所有的 這僅僅是設置了，
真正的新東西，我會 認為僅僅是這三個
或五行代碼在這裡和 在電源之類的提示
節點的js和與它 這個特定的庫。
因此，讓我們快速瀏覽 看快遞點的js，
所以我什麼都嘗試 做在剩下的夫婦
分鐘，這裡設置了一個 一些想法，一些技巧
這將然後採取一對夫婦 分鐘的休息時間，蒂姆將成立
然後我們將深入更深
一個更有趣 表達應用和也
我的書架，圖書館 添實際上寫
對於開源社區
這給了我們雄辯的光 功能與我的SQL
和交易，以及其他類似的 特徵，而他也將下潛
在深入一點的 語言Java腳本本身，
怎麼它的對象或無級 樣板工程，否則知道
作為一種樣機模型， 一些上了來。
因此，讓我們來看看最後兩個 這裡的應用程序，服務器5
和服務器6這些都是 有點類似的精神，
這些都不是聊天服務器 但他們使用快遞。
因此，讓我們來看看 這實際上呢，
我要繼續前進， 開放的...我要運行這個程序，
與節點的應用程序的js，我要去 回到我的瀏覽器和重載
這顯然是 所有的這台服務器是幹什麼的，
這是一個超級簡單的服務器 這顯然是一個搜索
引擎，所以，如果我輸入foo的 並提交，沒有搜索結果
foo的，我沒有得到周圍 實施複雜
後端，所有這回事
做不管是什麼回音 您鍵入沒有結果foo的，
沒有結果的吧 所以我們如何做到這一點
因為有一個 夫妻件，一，
有一些清楚 所提供的投入
在服務器不Larevel 當然，但節點現在的js
因此，我們需要以某種方式 獲取該參數Q，
我們要清楚地做 某種觀點在這裡，
我們渲染一個視圖，以便 也許有機會
為模板或變量 interprelation [拼音]
所以讓我們來看看 在下面。
在應用程序的js這個特定的 服務器這是我們擁有的。
一，我們需要表達 本身，兩個路徑模塊
這只是做了一些 有用的東西
像琴弦加盟 一起等我，
我偵聽端口1337以及 現在這個是新的所以它變成
指出，快遞像Larevel 支持不同的插件
以及技術和 其他的事情，一個
的技術，你 可以插在一個視圖引擎
這只是意味著什麼模板 引擎你想要使用，
Larevel有它自己的 的事情，但你可以插入
在不同的事情，不同的 桃P框架有
模板的方式不同， EJS僅僅是一個常見
和一個非常簡單的引擎 這只是讓你做的事情
像花括號的 您在Larevels語法有
用於替代變量，
這是一個有點不同 語法是一切。
因此，現在有這個東西叫 中間件所以你會看到
在自己的球隊節點項目 中間件是正中下懷代碼
或者說你注入庫
進入[聽不清]響應 一個應用程序的生命週期，
換句話說這兩 行告訴快遞
做的一些額外的工作 它得到一個請求的時間
並將其發送的時間之間 該請求與您的路線，
你說你寫的代碼。
所以特別是這條線在這裡 使用快速靜點和所有
這種複雜性這只是 也就是說，如果你看到一個請求
進來一個靜態文件 類似foo點JIF或富點的css
或富點的js所以不 動態生成的路線，
繼續前進，假設它的生命 在公共子目錄中，
這是所有在做什麼。
它有點像映射 Larevel，一切以您的網絡
或您的公共目錄 而在Larevel。
這下一行僅僅是 說我想使用的路由，
我想用的東西 喜歡的應用程序得到點
我們剛才也看到了，並 我們現在只是第二個看。
因此，應用程序點手段獲得 聽這條路，
當你得到它調用這個兇多吉少 匿名函數，它接受
在一個請求和一個 響應現在只是
像Larevel你有辦法 渲染一個模板，
響應點渲染， 引用引文索引，
渲染是一個模板 所謂指數，
這就是它讓我們暫停了 線程就一下看看
在內容 views目錄
並請注意這也是 超級簡單的現在，
有指數點EJS 和搜索點EJS，
我當然希望第一
因為這是一個我剛 累了來呈現，我們將看到
在視圖索引點EJS 其實最完全的html
目前，有 居然沒有模板怎麼回事。
所以，我在技術上沒有 甚至需要EJS調用它，
我不需要這個功能 但我一直是統一的，
所以就是這樣，這就是 給了我，超級簡單的形式。
所以，只有一種其他途徑， 如果我們往下看這裡，我已經說過了
這是什麼處理得到 斜線的搜索，這樣實際的排序
谷歌像處理程序的 表單提交，當你得到
該路徑調用這個 匿名函數
和渲染模板 所謂搜索
什麼是第二 參數大概的意思。
它看起來像一個json對象 各種或Java腳本對象。
這樣做的目的的作用 第二個參數想必？
>> [無聲段]
>>實際查詢的 用戶鍵入顯然生活
在申請點查詢，查詢 指的是一切
問號點後 Q的任意名稱
我給了它就像谷歌
並同時q結腸只是 話說傳遞到模板，
搜索點EJS，一 的q鍵和值
無論Q的實際的 值。
使葉片只有一個 感興趣的意見的文件，
搜索點EJS我不停 這個超級簡單了，
這大多只是除了HTML 一個有點了不起線
這也是這種語法在這裡 它看起來像一堆
不同的模板 發動機這只是意味著插件
在q的值 並使其大膽。
所以沒有實際的搜索 的功能，但它確實樣
的建議你會如何 結構骨架
像一個應用程序。
同時...其實我 可能會顯示一件事，
請注意，我有一些 html的在這裡的css文件
和Java腳本文件， 有沒有在這些文件
此刻卻發現， 有一個公共目錄
正如我前面所述 靜態文件，所以如果我去
在那裡有 我的CSS目錄，
如果我去那裡 還有的樣式的css點
而且也有沒有內容
但是這是你會如何 具有公共可訪問的文件。
好吧，讓我們一起來看看 在這裡另外一個變種
然後，我們將介紹 一個想法和突破。
因此，這是服務器6最後，所以 這幾乎是相同的，除了
對於底部的兩條線 這看起來是這樣。
因此，實際上有一個 第三行是不同的
但我已經隱藏......所以讓我回來 略高於所以不會有人要
提出這是怎麼回事 在這裡通俗地說
或者技術術語是什麼 有關此版本的不同
相對於那些 線路中的頂級節點。
有什麼我大概 在這裡，為什麼呢？
是啊，莎朗。
>> [無聲段]
>>是的，它看起來像我有 移動索引和搜索
所以單獨直接或什麼的， 我已經分解出來
而這使很像 在Larevel你可以把所有的
您的控制器邏輯 內部路由點的PHP
匿名函數 再，再而三
但當然，該文件 可以得到相當龐大
所以在路由點PHP的大多數
你們一直在做的 是您指定的名稱
一個控制器類或 一個方法連名字
應該被調用
所以在這裡同樣的想法，甚至 雖然語法是有點
不同的，所以在這裡通知
我有很明顯 實現了我自己的節點的js
模塊和模塊僅僅是一 Java的腳本文件，它附著
以基本上是一個慣例 我們將看到在短短的一瞬間。
因此，假設所有我的 索引功能
和搜索有明顯 被放入此目錄中
現在我打電話了整個 模塊或包或庫，
任何你想要的 把它作為，
作為路由的變量 所謂的路線。
因此很明顯，在那裡路線 點指數是一個調用的方法
指數，顯然有 另一種稱為搜索方法
在此路由模塊 或庫
而我只是它的路由 只是讓我不要把所有
我的匿名代碼 在我的應用程序文件。
因此，讓我們進入路由通告 還有的只是指數點的js
如果我看在這裡，這是 我剛才的意思公約
所以這是相當武斷 但它的節點慣例。
你實現任何時間 您自己的節點的js庫，
又名模塊，你基本上可以 編寫任何Java腳本代碼你
想在這個文件中，它會 可以很乾淨砂盒裝
因此，任何變量，你 選擇不會發生碰撞
與其他任何人的圖書館， 變量或方法或任何東西
這樣的，但任何事情 要公開
到外面的世界ALA一個 在Java腳本的公共方法
或PHP或其他語言 你必須撲通內
全局對象的該 筆者節點稱為出口。
所以做出口點 指數我暴露給用戶
這個模塊的調用方法 指數映射到這個功能
所以它是匿名的 右手側
但我有效地給它 在左手側的名稱
並且出口到世界
這樣就可以調用 點指數或點搜索。
所以要清楚，如果我也有 像函數foo
在這裡做了什麼
該函數會 絕對可以運行，
它可以被稱為在 這個文件，但沒有一個
在外面的世界 冷曾經調用foo
因為它不是出口 這個點號的方式。
所以，這一切是怎麼回事，
一切都很好 命名間隔為您服務。
所以最終的結果，如果我做節點 應用程序中，並重新加載頁面
如果我現在搜索
對吧...功能 這些應用程序是相同的
但它只是有點一步 朝著更清潔的實施，
當你開始肯定 編寫越來越多的代碼
而這所有的這些都是。
顯然不是特別 複雜或複雜
但本質上是一個起點
什麼將是你的 第一個節點的js應用程序。
我們要做的可能後 這個星期或這個週末
因為你是在完成了 PHP應用程序，我們將遵循
了一個非常簡單的 應用為球隊潛水
成精神相似 熱身練習PHP
其中基於所述 學期中旬調查顯示，
人們確實發現有幫助 經過鍛煉
做一些很簡單的
但在此之前你還算引導 其實解決更多的東西
在你自己的，所以我們會 跟進與
而且基本上會 一周半，由於
從現在稍微重疊 用php故意。
然後在任何問題 表達，套接字IO
或混亂剩餘 從週一可能。
好吧所以希望有 本想玩就如何迄今為
這有一個為其中的一些 事情肯定少了很多
可能比你開銷 已被用來。
因此，讓我來介紹 最後一個想法，
所以一個很常見 編程範式
用Java腳本的 實際上目前在jQuery的
在最近的版本，所以可能有 其實看到這種技術
之前，但它也相當 在節點的js全世界通用，
這是常見的Tim的 自己的書架庫
所以我們會在這重溫 一個更具體的例子
在某一時刻是一個解決方案 像這樣的代碼，
這是典型的代碼 我們看到在週一，所以讀取文件
在此上下文中是不實際的 方法是類似的精神
到fs點讀文件，但假設 這只是做一些
，做起來的方法 非常類似的東西。
所以，我們遇到了一些 一般在週一的問題
那麼什麼是樣的...為什麼 這是一個光滑的斜坡，
這個回調模式 的編程的Java腳本
並通過回叫範式 我只是說這個技術
在那裡你不回 立即值
因為這樣做可能 阻塞服務器
從做別的東西，就是 有用的，而不是你回電話
像蜂鳴器在搖 小屋當你準備好
傳回一個響應 作為參數。
這是一個光滑的斜坡
它非常快 變得討厭，為什麼？
是啊。
>> [無聲段]
>>是啊，微創成為 一種不可讀的權利
如果你擁有所有這些調用 背，如果你堅持
以良好的作風它越來越 相當大規模縮進
隨著時間的推移和情況下，我這點 例如，如果某種你脫脂
通過它只是意味著 打開一個JSON文件和打印，
喜歡就是這樣，但我們 有一些8或10線在這裡
這是已經排序 的nastily縮進，
我們已經有了嘗試捕捉這是
如果你不熟悉是 錯誤處理技術
使您可以試一下
而如果失敗的話 你希望抓住它
沒有你的整個程序 終止但有
這麼多複雜喜歡你那種 有想通過這種
上帝保佑我們做一對夫婦 其它異步方法調用，
事情是已經 將要在這裡，
你可能會認為這是一種 一個愚蠢的審美，但這個的
因為回電 範式是如此普遍，至少
在本地節點代碼的 很快變得乏味，
很難調試，壓痕 開始無所謂，因此您可以排序
追逐下來的東西，它是 只是沒有一個很快樂的方式
的編程。
那麼，什麼人都做
在在各種上下文節點 他們是盡量簡化這一點，
操作系統比如承諾 是另一種思維方式
關於編寫異步代碼 在視覺上的東西變成
像第1版到 這個版本2。
我要求，這是 排序的目的也只是混
實際的代碼和偽之間 代碼，這是代表
的你會如何重新實現 那同樣的事情，
打開一個JSON文件， 解析並打印
出使用的東西 所謂的承諾
而關鍵的語法細節是
，有一個鏈接 這裡發生了。
請注意，只有分號
在整個...其實很好 讓我們......我不想誤導。
這不是嚴格必需的 但我們是一致的，
注意到，分號 這指的是開口
這整個聲明 是一路下滑這裡。
因此，雖然我已經格式化 這...樣的期待
像三個報表，三 你可能會看到報表
在Java或其他語言 有try和catch
和異常處理 更普遍。
請注意，我剛才鏈 每個的返回值
這些方法一起。
所以，這是怎麼回事，讀文件 如果這個情況是存在的，一種方法
顯然試圖 閱讀這個文件，
點那麼這樣的話是一個非常 在世界上給定的通用名
承諾為中 應該執行的方法
如果以前的事情成功了。
因此，它是一種像成功 處理程序，所以後來JSON點解析，
以及JSON點解析 僅僅是一個方法
在全球JSON庫 它顯然是堅持
在這種情況下， 諾模型
所以我們說，我們可以只 假設調用這個傢伙
如果他成功了，然後 調用這個傢伙，然後
如果這是實際執行 簡單的控制台日誌中的數據
有問題。
那麼，是錯誤的 處理中，請注意我的排序
很盲目加大 關閉此窗台
而只是稱這 方法，然後該方法
而沒有檢查 為問題。
以及那些人在那裡的問題 想必處理......在這些
緩存語句，以便不同 庫使用不同的
約定，但在 這種情況下，然後就是排序
成功處理，緩存 是排序的錯誤處理程序
因為我們還沒有破 這條產業鏈，我們只是不停地用
點符號鏈接在一起 原來的方法調用
讀出文件和功能的 調用排序的任何錯誤
泡自己的方式 通過鏈
直到他們實際上處理 這比試圖方式吸塵器
對付它的每一個 的方式該死的步
讓你的代碼很 很快變得不真實的數據。
在這種情況下，我們 聲稱我們嘗試
捉所謂的 語法錯誤，它本質上是一個
更寬泛的子類 錯誤，如果出現這種情況索賠
它是無效的JSON否則 如果它是一個更通用的錯誤
我們並沒有期待 只是更普遍的說不能
讀取文件。
現在，這只是意味著 具有代表性的代碼
但如果你在已設定 原始的Java腳本或Java中
或其他語言，這是 程序代碼本質上，
這是一個比較傳統 嘗試catch語句
這就是審美和 該承諾的功能
或試圖給你 據此，你可以把它想像
剛才寫的嘗試，然後 捕捉和再搭上沒有
擔心在每 一個可能的點
其中一個可能的錯誤 處理......發生，
你可以處理這一切在 需要一個小的塊的結束
的代碼，你甚至可以 其中的錯誤區別
你可以在這裡這種情況下。
這樣的命名，你會 看文獻，也許
蒂姆提出了一些 這東西太是
，理想情況下你想 有望解決
和解決的承諾方式 終於回到這麼說
但不是在一個傳統的方式 的值，因此它要么成功
對於失敗本質。
所有的權利有任何疑問的話， 它並不意味著是足夠的
暴露於承諾 而只是一個心理模型
為你的代碼 將開始看到。