1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN Schmid: Xin chào tất cả mọi người. 3 00:00:09,710 --> 00:00:12,640 Chào mừng đến với hội thảo CS50 trên Node.js. 4 00:00:12,640 --> 00:00:13,955 Tôi tên là Kevin. 5 00:00:13,955 --> 00:00:15,580 Tôi là một TF CS50. 6 00:00:15,580 --> 00:00:17,650 Và tôi là loại giống như thực sự vui mừng về buổi hội thảo này. 7 00:00:17,650 --> 00:00:20,430 Tôi nghĩ rằng Node.js là rất mát mẻ. 8 00:00:20,430 --> 00:00:24,200 Tôi hy vọng rằng hội thảo này có thể được sử dụng như một tốt, tôi đoán, đạp cho 9 00:00:24,200 --> 00:00:26,380 một số dự án cuối cùng của bạn nếu bạn quan tâm trong việc sử dụng 10 00:00:26,380 --> 00:00:27,630 một cái gì đó như Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Chúng tôi sẽ loại bắt đầu buổi hội thảo bằng cách chỉ nói về một chút của 13 00:00:33,320 --> 00:00:36,970 loại khả năng mở rộng nền quan điểm của Node.js, và sau đó 14 00:00:36,970 --> 00:00:39,240 chúng tôi sẽ chuyển đến một số ví dụ mã. 15 00:00:39,240 --> 00:00:42,340 Và tôi sẽ có mã trên một trang web, và bạn có thể nhìn vào mã. 16 00:00:42,340 --> 00:00:45,475 Và sau buổi hội thảo, tôi sẽ sắp xếp buổi nói chuyện về cách bạn có thể thiết lập Node.js 17 00:00:45,475 --> 00:00:48,220 trên máy tính của bạn. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Vì vậy, chúng ta hãy bắt đầu. 20 00:00:49,760 --> 00:00:53,700 Vì vậy, tôi đoán tôi chỉ muốn nói về các máy chủ web, thực sự, đầu tiên. 21 00:00:53,700 --> 00:00:59,730 Và bắt đầu thảo luận này, tôi về cơ bản có một sơ đồ mà là từ 22 00:00:59,730 --> 00:01:04,269 sách giáo khoa được sử dụng để CS61, mà cơ bản cho thấy sự tương tác 23 00:01:04,269 --> 00:01:08,510 giữa một quá trình khách hàng, như web của bạn trình duyệt hoặc như khách hàng mục tiêu của bạn hoặc 24 00:01:08,510 --> 00:01:11,340 như thế, và một máy chủ web. 25 00:01:11,340 --> 00:01:15,150 Vì vậy, đây loại trông giống như hình ảnh mà bạn đã thấy trong bài thuyết trình về 26 00:01:15,150 --> 00:01:19,270 Thứ tư nơi về cơ bản chúng tôi có một số quá trình khách hàng như Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Và sau đó bước một là khách hàng gửi một yêu cầu. 28 00:01:22,980 --> 00:01:27,510 Vì vậy, đó có thể là một cái gì đó như cũng hãy thăm, tôi không biết, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Vì vậy, chúng tôi phát hành yêu cầu đó. 30 00:01:29,320 --> 00:01:34,280 Và không ai nhớ tên của giao thức để xác định cách mà 31 00:01:34,280 --> 00:01:35,610 Yêu cầu phải được cấu trúc? 32 00:01:35,610 --> 00:01:36,382 Vâng. 33 00:01:36,382 --> 00:01:37,650 >> ĐỐI TƯỢNG: [nghe được]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN Schmid: Chính xác. 35 00:01:38,150 --> 00:01:40,100 Vì vậy, nó giống như HTTP, phải không? 36 00:01:40,100 --> 00:01:44,720 Vì vậy, về cơ bản là đặc điểm kỹ thuật như thế nào yêu cầu mà thực sự phải được đặt 37 00:01:44,720 --> 00:01:47,450 ra, bởi vì vào cuối ngày, yêu cầu đó là thực sự giống như một 38 00:01:47,450 --> 00:01:50,240 chuỗi cơ bản nói rằng tôi muốn điều này. 39 00:01:50,240 --> 00:01:53,580 Và đặc điểm kỹ thuật cho đó là HTTP. 40 00:01:53,580 --> 00:01:55,270 Vì vậy, đó như một giao thức. 41 00:01:55,270 --> 00:01:57,920 >> Vì vậy, sau đó máy chủ nhận được yêu cầu đó. 42 00:01:57,920 --> 00:02:01,610 Vì vậy, các bạn có một máy chủ web cài đặt trong thiết bị CS50. 43 00:02:01,610 --> 00:02:02,460 Đó là Apache. 44 00:02:02,460 --> 00:02:06,230 Và trong tuần này khi bạn làm việc về vấn đề thiết lập bảy, bạn sẽ thực sự được làm việc 45 00:02:06,230 --> 00:02:08,160 với máy chủ web. 46 00:02:08,160 --> 00:02:12,380 Vì vậy, các máy chủ nhận được yêu cầu đó, và sau đó nó phải loại xước của nó 47 00:02:12,380 --> 00:02:15,090 đầu và nói như những gì tốt Tôi phải làm với điều này? 48 00:02:15,090 --> 00:02:20,060 >> Vì vậy, dựa trên những gì nó quyết định làm, sau đó nó có thể có liên hệ với một số loại 49 00:02:20,060 --> 00:02:20,730 tài nguyên. 50 00:02:20,730 --> 00:02:23,700 Và nguồn tài nguyên đó có thể là một rất nhiều thứ khác nhau. 51 00:02:23,700 --> 00:02:26,810 Đối với một, nó có thể chỉ như một tập tin HTML tĩnh. 52 00:02:26,810 --> 00:02:29,820 Vì vậy, nó chỉ có thể được như một số HTML là thích 53 00:02:29,820 --> 00:02:31,100 trang web cá nhân của bạn. 54 00:02:31,100 --> 00:02:35,360 Nó có thể là một tập tin tĩnh như một hình ảnh hoặc như một bộ phim mà bạn có. 55 00:02:35,360 --> 00:02:37,660 Nó thậm chí có thể phải nói chuyện một số loại cơ sở dữ liệu 56 00:02:37,660 --> 00:02:39,530 giống như một cơ sở dữ liệu MySQL. 57 00:02:39,530 --> 00:02:43,910 Vì vậy, nó không luôn luôn phải giao tiếp với một nguồn tài nguyên, nhưng trong 58 00:02:43,910 --> 00:02:45,700 một số trường hợp, nó có thể. 59 00:02:45,700 --> 00:02:47,800 >> Vì vậy, sau đó những gì nó sẽ làm gì sau đó là nó sẽ 60 00:02:47,800 --> 00:02:49,430 gửi lại phản ứng. 61 00:02:49,430 --> 00:02:53,130 Và đáp ứng cho điều này là cũng quy định của HTTP. 62 00:02:53,130 --> 00:02:54,830 Vì vậy, sau đó khách hàng có thể nhận được nó. 63 00:02:54,830 --> 00:02:56,740 Nó có thể xé nó ra và xử lý nó. 64 00:02:56,740 --> 00:03:00,900 Và sau đó bạn nhận được một trang web như Google hay CS50.net hoặc 65 00:03:00,900 --> 00:03:02,240 bất cứ điều gì bạn đã đi đến. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Vì vậy, đây là sự tương tác cơ bản chúng ta sẽ được xử lý. 68 00:03:06,080 --> 00:03:08,770 Và chúng tôi khá nhiều sẽ tập trung vào phần này của 69 00:03:08,770 --> 00:03:10,640 tương tác, máy chủ. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Mát mẻ. 72 00:03:12,210 --> 00:03:15,500 Ai có bất cứ câu hỏi cho đến nay? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Vì vậy, như chúng tôi đã nói, máy chủ web nhận yêu cầu HTTP này và sau đó vấn đề này 75 00:03:22,430 --> 00:03:24,760 Đáp ứng HTTP. 76 00:03:24,760 --> 00:03:29,100 Và như chúng ta đã nói trước đây, Máy chủ web thiết bị CS50 là Apache. 77 00:03:29,100 --> 00:03:32,490 Vì vậy, khi các bạn làm việc trên P thiết lập bảy, bạn sẽ được làm việc với các 78 00:03:32,490 --> 00:03:34,120 Máy chủ web Apache. 79 00:03:34,120 --> 00:03:37,890 Bạn sẽ không bao giờ phải thực sự làm việc với Apache trực tiếp quá nhiều. 80 00:03:37,890 --> 00:03:41,920 Bạn loại cấu hình Apache một chút khi bạn chỉ định các máy ảo hoặc 81 00:03:41,920 --> 00:03:44,970 đội chủ nhà v, và chúng tôi sẽ nhận được cho rằng trong một chút. 82 00:03:44,970 --> 00:03:50,620 >> Nhưng về cơ bản, các máy chủ web Apache thiết lập để làm việc với PHP loại 83 00:03:50,620 --> 00:03:51,730 của ra khỏi hộp. 84 00:03:51,730 --> 00:03:56,170 Vì vậy, những gì thực sự xảy ra khi bạn đi là với một trong các trang web của bạn như, nói, 85 00:03:56,170 --> 00:04:00,360 địa phương chủ index.php dấu gạch chéo hoặc một cái gì đó, là trình duyệt của bạn gửi mà 86 00:04:00,360 --> 00:04:04,330 yêu cầu, và sau đó Apache đang ngồi ở đó và con số ra để làm với nó. 87 00:04:04,330 --> 00:04:08,840 Và hành động này là để thực hiện mã trong index.php và 88 00:04:08,840 --> 00:04:11,330 sau đó gửi nó đi trở lại. 89 00:04:11,330 --> 00:04:15,640 Vì vậy, có đó. 90 00:04:15,640 --> 00:04:16,980 Vì vậy, chúng tôi loại nói về điều này. 91 00:04:16,980 --> 00:04:21,990 Vì vậy, nó chỉ có thể phục vụ cho một tập tin tĩnh hoặc chạy một số mã PHP và sau đó vấn đề 92 00:04:21,990 --> 00:04:23,510 các phản ứng. 93 00:04:23,510 --> 00:04:27,670 >> Vì vậy, sau đó một câu hỏi phổ biến mà có thể đến lên là tốt, làm thế nào để chúng tôi thực sự đối phó 94 00:04:27,670 --> 00:04:31,750 với việc có nhiều người sử dụng cùng một lúc? 95 00:04:31,750 --> 00:04:36,930 Vì vậy, hãy tưởng tượng nếu bạn đang viết một trang web máy chủ, nếu bạn đã có một máy chủ web 96 00:04:36,930 --> 00:04:39,900 bạn đã cố gắng để viết một cái gì đó trong như C hay như thế, 97 00:04:39,900 --> 00:04:45,150 về cơ bản bạn có thể suy nghĩ về làm thế nào có có thể là một số loại mã 98 00:04:45,150 --> 00:04:49,330 sẽ nhận được yêu cầu, nhưng sau đó nó đã làm tất cả các công việc này vào nó. 99 00:04:49,330 --> 00:04:53,060 Nó có thể có, ví dụ, liên hệ với cơ sở dữ liệu hoặc một cái gì đó như thế. 100 00:04:53,060 --> 00:04:53,300 Phải không? 101 00:04:53,300 --> 00:04:56,010 Và sau đó nó sẽ làm loại mà chế biến và sau đó 102 00:04:56,010 --> 00:04:57,060 gửi lại các phản ứng. 103 00:04:57,060 --> 00:04:58,950 Vì vậy, đó là giống như cao tổng quan về mức độ. 104 00:04:58,950 --> 00:05:04,210 >> Nhưng nó không phải là ngay lập tức rõ ràng làm thế nào bạn có thể làm điều đó để hai người hoặc 105 00:05:04,210 --> 00:05:09,040 thậm chí 1.000 người có thể làm việc với bạn máy chủ web cùng một lúc. 106 00:05:09,040 --> 00:05:14,880 Vì vậy, các giải pháp mà Apache sử dụng được gọi là chủ đề hoặc quá trình. 107 00:05:14,880 --> 00:05:16,770 Vì vậy, bạn có thể đã nghe nói về các điều khoản trước đây. 108 00:05:16,770 --> 00:05:22,190 Đó là OK nếu bạn có không, nhưng chỉ cần nghĩ về chủ đề hoặc các quá trình như cách cho 109 00:05:22,190 --> 00:05:26,290 một hệ điều hành hay một chương trình sử dụng hoặc một cái gì đó như thế hoặc một máy chủ web 110 00:05:26,290 --> 00:05:28,810 để loại thực hiện nhiều việc cùng một lúc. 111 00:05:28,810 --> 00:05:31,760 Vì vậy, bạn có thể đã nghe thuật ngữ như chủ đề thực hiện. 112 00:05:31,760 --> 00:05:34,140 Vì vậy, nó giống như bạn loại đa nhiệm. 113 00:05:34,140 --> 00:05:37,710 >> Và nếu bạn đã nhìn thấy trên hộp của bạn máy tính xách tay, hoặc một cái gì đó như thế, 114 00:05:37,710 --> 00:05:43,040 đa lõi, những gì bạn có thể làm là bạn có thể chạy hai chủ đề khác nhau trên khác nhau 115 00:05:43,040 --> 00:05:46,700 các bộ phận của CPU để họ có thể thực sự xảy ra cùng một lúc. 116 00:05:46,700 --> 00:05:48,100 Vì vậy, đây thực sự là mạnh mẽ. 117 00:05:48,100 --> 00:05:52,270 Và đây là loại Apache giải pháp cho vấn đề này. 118 00:05:52,270 --> 00:05:57,900 >> Như vậy là có loại giống như bất kỳ vấn đề với cách tiếp cận này mặc dù? 119 00:05:57,900 --> 00:05:59,870 Vì vậy, tôi đoán tôi loại đã viết chúng ở đó. 120 00:05:59,870 --> 00:06:03,440 Nhưng cả hai loại sử dụng rất nhiều bộ nhớ. 121 00:06:03,440 --> 00:06:07,490 Nó rất tốn kém để tạo ra một chủ đề hoặc một quá trình. 122 00:06:07,490 --> 00:06:11,750 >> Và một phần của lý do là chỉ giống như khi bạn đang chạy một chương trình C 123 00:06:11,750 --> 00:06:15,090 như chính bạn và sau đó các cuộc gọi chức năng khác, có 124 00:06:15,090 --> 00:06:16,520 một số loại stack. 125 00:06:16,520 --> 00:06:19,910 Vì vậy, chủ đề này cũng đòi hỏi một hoàn toàn riêng chồng mà 126 00:06:19,910 --> 00:06:21,220 có thể khá lớn. 127 00:06:21,220 --> 00:06:25,170 Và nếu bạn có thể tưởng tượng có tấn người sử dụng trên trang web của bạn, bạn sẽ phải 128 00:06:25,170 --> 00:06:26,280 rất nhiều chủ đề khác nhau. 129 00:06:26,280 --> 00:06:28,230 Đó là rất nhiều ngăn xếp để quản lý và duy trì. 130 00:06:28,230 --> 00:06:31,280 Vì vậy, nó tiêu thụ bộ nhớ lớn. 131 00:06:31,280 --> 00:06:35,650 >> Và sau đó, cũng có thể, chúng ta hãy nói rằng bạn chỉ có một CPU, hoặc chúng ta hãy nói rằng bạn có 132 00:06:35,650 --> 00:06:38,460 nhiều chủ đề hơn bạn có những multicores. 133 00:06:38,460 --> 00:06:38,730 Phải không? 134 00:06:38,730 --> 00:06:43,280 Vì vậy, hãy nói rằng bạn đã có 10 chủ đề và bạn chỉ có năm CPU. 135 00:06:43,280 --> 00:06:46,260 Bạn loại phải làm điều này, nơi bạn chuyển đổi giữa hiện tại 136 00:06:46,260 --> 00:06:49,090 một trong đó là chạy vì bạn không thể chạy tất cả 10 cùng một lúc. 137 00:06:49,090 --> 00:06:50,980 Và đó được gọi là một chuyển ngữ cảnh. 138 00:06:50,980 --> 00:06:54,260 Và thời hạn mà thực sự đã có một vài bối cảnh khác nhau, nhưng chúng ta hãy chỉ 139 00:06:54,260 --> 00:06:56,620 nghĩ về nó như chuyển đổi giữa hai chủ đề. 140 00:06:56,620 --> 00:06:59,730 Đó có thể là khá tốn kém vì về cơ bản những gì bạn phải làm là bạn 141 00:06:59,730 --> 00:07:03,340 phải dừng lại những gì bạn đang làm, tiết kiệm trạng thái mà thread đang chạy, và 142 00:07:03,340 --> 00:07:05,440 sau đó chuyển sang một nơi khác. 143 00:07:05,440 --> 00:07:09,420 >> Vì vậy, tất cả mọi người không loại xem động lực của lý do tại sao chủ đề và 144 00:07:09,420 --> 00:07:12,030 quá trình có thể là một ít cồng kềnh? 145 00:07:12,030 --> 00:07:13,840 Và bạn đã có một câu hỏi? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Mát mẻ. 148 00:07:15,070 --> 00:07:18,090 Ai có bất cứ câu hỏi? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Vì vậy, nếu chúng ta đi một bước lại một giây, có loại giống như một 151 00:07:26,720 --> 00:07:30,350 quan sát chúng tôi có thể làm cho khoảng rất nhiều các ứng dụng web. 152 00:07:30,350 --> 00:07:34,810 Và đó là thực sự là rất nhiều trong số họ thực sự không làm điều đó rất hữu ích 153 00:07:34,810 --> 00:07:37,140 làm việc bên trong của một chủ đề. 154 00:07:37,140 --> 00:07:41,170 Vì vậy, có ai bắt đầu P thiết lập bảy ở tất cả? 155 00:07:41,170 --> 00:07:45,650 Vì vậy, bạn muốn để có thể mô tả một số bộ phận? 156 00:07:45,650 --> 00:07:47,850 Bạn đã làm việc trên đăng nhập hoặc một cái gì đó như thế? 157 00:07:47,850 --> 00:07:49,330 >> ĐỐI TƯỢNG: số 158 00:07:49,330 --> 00:07:49,780 >> KEVIN Schmid: OK. 159 00:07:49,780 --> 00:07:50,150 Không sao đâu. 160 00:07:50,150 --> 00:07:50,900 Xin lôi. 161 00:07:50,900 --> 00:07:55,790 Nhưng về cơ bản, trong tập P, bạn sẽ được thực hiện rất nhiều loại 162 00:07:55,790 --> 00:07:59,760 truy vấn đến một cơ sở dữ liệu để có được một số thông tin từ cơ sở dữ liệu. 163 00:07:59,760 --> 00:08:03,330 Và những gì mã của bạn sẽ được làm, những gì mà quá trình Apache hoặc 164 00:08:03,330 --> 00:08:06,030 Apache chủ đề sẽ được làm trong khi nó có liên hệ với các 165 00:08:06,030 --> 00:08:08,990 cơ sở dữ liệu là nó loại sẽ ngồi đó và nó sẽ là 166 00:08:08,990 --> 00:08:12,130 chờ đợi cho các cơ sở dữ liệu để trả lời. 167 00:08:12,130 --> 00:08:16,290 >> Bây giờ mà có thể không âm thanh như một lớn đối phó vì cơ sở dữ liệu trên của bạn 168 00:08:16,290 --> 00:08:18,240 Thiết bị CS50, phải không? 169 00:08:18,240 --> 00:08:22,930 Nhưng có một số loại mạng độ trễ có bởi vì bây giờ các trang web 170 00:08:22,930 --> 00:08:26,830 máy chủ có cấp theo yêu cầu riêng của mình để cơ sở dữ liệu để giao tiếp với 171 00:08:26,830 --> 00:08:29,520 cơ sở dữ liệu và sau đó nhận được rằng thông tin trở lại. 172 00:08:29,520 --> 00:08:33,190 Vì vậy bây giờ nó giống như cũng chờ đợi tôi, tôi sẽ đi được một cái gì đó từ 173 00:08:33,190 --> 00:08:35,770 cơ sở dữ liệu và sau đó có một rất nhiều chờ đợi xảy ra. 174 00:08:35,770 --> 00:08:36,870 Điều đó có ý nghĩa? 175 00:08:36,870 --> 00:08:38,580 >> Và cho một số điều nó không phải là xấu. 176 00:08:38,580 --> 00:08:41,950 Nếu nó chỉ có, ví dụ, bộ nhớ truy cập, đó là không thích 177 00:08:41,950 --> 00:08:44,100 khủng khiếp I / O độ trễ. 178 00:08:44,100 --> 00:08:47,110 Và khi tôi nói, I / O độ trễ, những gì tôi đề cập đến là giống như bất kỳ loại như 179 00:08:47,110 --> 00:08:48,290 đầu vào đầu ra. 180 00:08:48,290 --> 00:08:52,950 Tuy nhiên, để truy cập vào một tập tin trên đĩa, như nếu tôi muốn phục vụ tĩnh HTML 181 00:08:52,950 --> 00:08:57,850 tập tin mà là trên trang web của tôi hoặc một cái gì đó như thế, tôi loại phải 182 00:08:57,850 --> 00:09:02,310 dừng lại một chút, đọc tập tin đó từ đĩa, và sau đó trong 183 00:09:02,310 --> 00:09:04,400 quá trình mà tôi đang chờ đợi. 184 00:09:04,400 --> 00:09:06,700 Tôi không làm công việc hữu ích. 185 00:09:06,700 --> 00:09:11,270 >> Đây không phải là thực sự của tất cả mọi thứ, nhưng nó là phổ biến trong các ứng dụng như P bộ 186 00:09:11,270 --> 00:09:13,960 bảy và rất nhiều ứng dụng rằng bạn không 187 00:09:13,960 --> 00:09:15,440 thực sự làm nhiều suy nghĩ. 188 00:09:15,440 --> 00:09:19,090 Và khi tôi nói suy nghĩ, tôi có nghĩa như công việc tính toán. 189 00:09:19,090 --> 00:09:23,270 Vì vậy, việc tính toán có thể là một cái gì đó như, nói, bạn muốn 190 00:09:23,270 --> 00:09:26,590 viết một máy chủ web mà chỉ tính số Fibonacci thứ n. 191 00:09:26,590 --> 00:09:29,300 Điều đó không có âm thanh như một đặc biệt máy chủ web thú vị. 192 00:09:29,300 --> 00:09:34,220 Như tôi không mong chờ trang web đó được Facebook tiếp theo, nhưng đó là một số 193 00:09:34,220 --> 00:09:35,610 loại công việc tính toán. 194 00:09:35,610 --> 00:09:39,570 >> Và bạn có thể tưởng tượng thay thế mà với một số loại khác thú vị 195 00:09:39,570 --> 00:09:43,070 công việc tính toán. 196 00:09:43,070 --> 00:09:46,050 Hãy nói rằng bạn đang viết một cái gì đó đó tính toán mức độ 197 00:09:46,050 --> 00:09:49,170 tách biệt giữa hai người hoặc một cái gì đó như thế. 198 00:09:49,170 --> 00:09:51,860 Vì vậy, điều đó không liên quan đến một số loại tính toán, phải không? 199 00:09:51,860 --> 00:09:56,630 Và thậm chí sau đó, để làm điều đó bạn vẫn có làm rất nhiều chờ đợi cho có thể 200 00:09:56,630 --> 00:09:59,550 bạn phải truy vấn một cơ sở dữ liệu để tìm lên người là bạn bè với những người hoặc 201 00:09:59,550 --> 00:10:00,600 một cái gì đó như thế. 202 00:10:00,600 --> 00:10:03,510 Do đó là loại khái niệm công tác tính toán. 203 00:10:03,510 --> 00:10:05,260 Điều đó có ý nghĩa? 204 00:10:05,260 --> 00:10:08,258 Không ai có bất kỳ câu hỏi? 205 00:10:08,258 --> 00:10:11,960 >> Oh và tôi đoán tôi đặt máy chủ trò chuyện có bởi vì các máy chủ trò chuyện là loại 206 00:10:11,960 --> 00:10:13,240 một ví dụ tốt về điều này. 207 00:10:13,240 --> 00:10:15,250 Một máy chủ chat không có làm nhiều suy nghĩ. 208 00:10:15,250 --> 00:10:18,350 Nó chỉ có chờ đợi để mọi người gửi tin nhắn và sau đó khi 209 00:10:18,350 --> 00:10:19,800 họ, gửi cho họ. 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Như vậy chỉ cần tóm tắt lại một lần nữa, Apache và các máy chủ web tương tự như thế ngã ba một 213 00:10:28,180 --> 00:10:31,470 rất nhiều chủ đề và các quá trình đó có thể được loại lãng phí. 214 00:10:31,470 --> 00:10:37,530 Vì vậy, tôi đoán câu hỏi mà có thể đến từ đó là chúng ta cần phải có 215 00:10:37,530 --> 00:10:39,610 nhiều chủ đề và các quy trình? 216 00:10:39,610 --> 00:10:41,890 Những gì nếu chúng ta chỉ có một? 217 00:10:41,890 --> 00:10:45,710 >> Vì vậy, hãy loại vẽ một bức tranh của điều này sẽ như thế nào. 218 00:10:45,710 --> 00:10:47,810 Vì vậy, hãy sử dụng chỉ có một thread. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Vì vậy, chỉ cần tưởng tượng này với một chủ đề. 221 00:10:52,790 --> 00:10:56,600 >> Chúng ta hãy giả sử chúng tôi đã không thực sự làm mà nhiều hữu ích - và khi tôi nói 222 00:10:56,600 --> 00:10:59,450 hữu ích, tôi có nghĩa là công việc tính toán - 223 00:10:59,450 --> 00:11:01,130 trong những nhiều chủ đề trước. 224 00:11:01,130 --> 00:11:04,180 Vì vậy, hãy loại củng cố tất cả mọi thứ vào một sợi. 225 00:11:04,180 --> 00:11:07,780 Vì vậy, nếu chúng ta có một sợi loại mà chỉ đi xung quanh trong vòng lặp và 226 00:11:07,780 --> 00:11:10,880 liên tục kiểm tra đã làm một cái gì đó mới xảy ra. 227 00:11:10,880 --> 00:11:15,130 Vì vậy, ví dụ, một cái gì đó mới xảy ra có thể có nghĩa là tôi có một cái gì đó trở lại từ 228 00:11:15,130 --> 00:11:19,310 cơ sở dữ liệu, hoặc ai đó gửi tôi một yêu cầu HTTP mới. 229 00:11:19,310 --> 00:11:22,290 Vì vậy, đó là những loại sự kiện điều đó xảy ra, phải không? 230 00:11:22,290 --> 00:11:26,130 >> Và sau đó những gì tôi có thể làm gì khi những người mới sự việc xảy ra là trong cùng một chủ đề này 231 00:11:26,130 --> 00:11:30,120 thực hiện, chủ đề này duy nhất thực hiện, tôi có thể gọi một số mã 232 00:11:30,120 --> 00:11:32,410 sẽ xử lý mà điều đặc biệt. 233 00:11:32,410 --> 00:11:36,640 Ví dụ, nếu tôi có một cái gì đó trở lại từ cơ sở dữ liệu, tôi có thể chạy của tôi 234 00:11:36,640 --> 00:11:40,960 một phần nhỏ tính toán của nó mà thực sự chỉ cần chuẩn bị các điều 235 00:11:40,960 --> 00:11:42,620 gửi lại cho người sử dụng. 236 00:11:42,620 --> 00:11:46,710 Vì vậy, không có loại ý nghĩa? 237 00:11:46,710 --> 00:11:49,940 >> Nhưng những gì đang thực sự ý nghĩa của điều này? 238 00:11:49,940 --> 00:11:50,660 Phải không? 239 00:11:50,660 --> 00:11:53,730 Bởi vì chúng tôi đã viết rất nhiều mã - 240 00:11:53,730 --> 00:11:58,330 và tôi chỉ cần đi để nhảy về phía trước trong các slide nếu đó là OK. 241 00:11:58,330 --> 00:12:00,930 Vì vậy, nếu bạn không nhớ, tôi chỉ sẽ lùi lại một bước. 242 00:12:00,930 --> 00:12:03,410 Vì vậy, loại điều là được gọi là một vòng lặp sự kiện. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Và đó là loại cơ bản Ý tưởng đằng sau Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Vì vậy, những gì Node.js thực sự làm như một trang web máy chủ là có một chủ đề duy nhất 246 00:12:11,240 --> 00:12:14,850 mà về cơ bản là đi xung quanh trong một vòng lặp như một trong khi một loại dưới 247 00:12:14,850 --> 00:12:18,510 mui xe của Node.js đó là liên tục kiểm tra, chúng tôi nhận được đã điều mới? 248 00:12:18,510 --> 00:12:22,720 Và sau đó nó sẽ chạy bộ xử lý mà bạn thiết lập. 249 00:12:22,720 --> 00:12:26,720 Nhưng một câu hỏi hay để hỏi là, làm thế nào chúng ta có thể thực hiện điều này 250 00:12:26,720 --> 00:12:28,090 với những thứ hiện tại? 251 00:12:28,090 --> 00:12:32,440 >> Vì vậy, tôi đặt một dòng mã C ở đây là về cơ bản trông giống như nó mở 252 00:12:32,440 --> 00:12:33,060 nộp, phải không? 253 00:12:33,060 --> 00:12:36,090 Tôi Cô ấy chỉ xuất hiện với một album. 254 00:12:36,090 --> 00:12:39,600 Vì vậy, tôi đã phải mở cho cô một tập tin mới. 255 00:12:39,600 --> 00:12:43,810 Vì vậy, cách mã C của chúng tôi cho các hoạt động - 256 00:12:43,810 --> 00:12:47,890 và tôi đoán là lý do tôi đã chọn các tập tin đã bởi vì đây là loại mức độ 257 00:12:47,890 --> 00:12:52,000 các công việc I / O mà chúng tôi đã thực hiện trong C trong một cảm giác rằng có đầu vào đầu ra. 258 00:12:52,000 --> 00:12:55,070 Vì vậy, chúng ta gọi mã này mà không e này mở. 259 00:12:55,070 --> 00:12:59,370 Và sau đó trên dòng tiếp theo của chúng tôi chương trình, chúng ta có thể làm việc với f. 260 00:12:59,370 --> 00:13:02,710 >> Vì vậy, đây sẽ là một ví dụ về một cái gì đó đó là như đồng bộ hoặc 261 00:13:02,710 --> 00:13:06,850 ngăn chặn bởi vì trên dòng đầu tiên có chúng tôi đang chờ đợi cho đến khi chúng tôi 262 00:13:06,850 --> 00:13:08,110 được mở tập tin. 263 00:13:08,110 --> 00:13:12,260 Vì vậy, trên dòng thứ hai, chúng tôi biết rằng chúng tôi có thể làm việc với e, nhưng điều này có nghĩa là 264 00:13:12,260 --> 00:13:16,240 dòng thứ hai có thể không thực sự chạy cho đến khi dòng đầu tiên được thực hiện. 265 00:13:16,240 --> 00:13:17,760 Điều đó có ý nghĩa? 266 00:13:17,760 --> 00:13:20,890 >> Vì vậy, đây sẽ là xấu để đặt trong một xử lý sự kiện. 267 00:13:20,890 --> 00:13:23,920 Và lý do cho điều đó là loại chờ đợi, phải không? 268 00:13:23,920 --> 00:13:26,500 Vì vậy, điều này sẽ trở lại chúng ta trở lại để điều tương tự. 269 00:13:26,500 --> 00:13:29,470 Và bây giờ chúng tôi thậm chí không có lợi ích của nhiều chủ đề hay 270 00:13:29,470 --> 00:13:32,390 quá trình bởi vì chúng tôi có một thread trong Node.js. 271 00:13:32,390 --> 00:13:35,496 Điều đó có ý nghĩa với tất cả mọi người? 272 00:13:35,496 --> 00:13:35,990 >> ĐỐI TƯỢNG: Chờ. 273 00:13:35,990 --> 00:13:36,980 Vì vậy, việc thay thế là gì? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN Schmid: Oh, vậy có. 275 00:13:37,840 --> 00:13:39,560 Vì vậy, tôi sẽ nhận được để người vào thay. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Vì vậy, nếu chúng ta có một cái gì đó trông như thế này? 278 00:13:42,960 --> 00:13:45,730 Vì vậy, nếu bây giờ tôi chỉnh sửa f mở một chút? 279 00:13:45,730 --> 00:13:48,370 Vì vậy, tôi đi qua trong cùng một hai đối số như trước. 280 00:13:48,370 --> 00:13:52,610 Tôi vẫn yêu những bài hát mới rằng cô đã cho ra đời. 281 00:13:52,610 --> 00:13:57,260 Nhưng tôi đang đi qua một điều thứ ba được biến này được gọi là mã. 282 00:13:57,260 --> 00:14:02,280 >> Nhưng là những gì đang thực sự trong bối cảnh này? 283 00:14:02,280 --> 00:14:05,360 Là nó giống như một biến C thường xuyên? 284 00:14:05,360 --> 00:14:06,740 Đó là một chức năng, phải không? 285 00:14:06,740 --> 00:14:09,450 Và đó có thể là một chút lạ vì Tôi thực sự như bây giờ đi qua một 286 00:14:09,450 --> 00:14:12,320 hoạt động vào chức năng khác. 287 00:14:12,320 --> 00:14:14,400 >> Vì vậy, một vài điều cần lưu ý về việc này. 288 00:14:14,400 --> 00:14:17,145 Một, tôi không thực sự kêu gọi chức năng mã. 289 00:14:17,145 --> 00:14:20,650 Vì vậy, bạn không nhìn thấy mã với dấu ngoặc trái, dấu ngoặc phải. 290 00:14:20,650 --> 00:14:23,010 Tôi chỉ đi qua trong mã. 291 00:14:23,010 --> 00:14:26,990 Và trong C, điều này sẽ thực sự làm được cung cấp cho tôi một con trỏ với thực tế 292 00:14:26,990 --> 00:14:29,740 mã, và sau đó điều này có thể chạy nó. 293 00:14:29,740 --> 00:14:33,350 Nhưng chỉ cần nghĩ về nó như bạn đi qua các mã để chạy khi 294 00:14:33,350 --> 00:14:35,150 tập tin đó được mở ra. 295 00:14:35,150 --> 00:14:41,430 >> Nhưng điều này có nghĩa là bây giờ phần còn lại của chương trình của tôi có thể làm 296 00:14:41,430 --> 00:14:47,050 công cụ khác, có thể tiếp tục làm khác thứ trong khi chúng ta, không thực sự chờ đợi, nhưng 297 00:14:47,050 --> 00:14:50,890 chỉ có ở mặt sau của đầu của chúng tôi khi của tập tin mở, chạy mà 298 00:14:50,890 --> 00:14:52,130 mã ở đầu trang. 299 00:14:52,130 --> 00:14:53,390 Điều đó có ý nghĩa? 300 00:14:53,390 --> 00:14:58,060 >> Và bây giờ ý tưởng đằng sau Node.js là mã trong các công cụ làm với f 301 00:14:58,060 --> 00:15:04,590 một phần nên được khá ngắn và đơn giản và đơn giản và không thực sự được 302 00:15:04,590 --> 00:15:06,160 rất tính toán chuyên sâu. 303 00:15:06,160 --> 00:15:09,390 Nó có thể có để mở một tập tin, nhưng mà cũng nên được khá nhanh chóng 304 00:15:09,390 --> 00:15:14,710 bởi vì nó chỉ nên nói làm e khác mở và sau đó gọi mã khác này. 305 00:15:14,710 --> 00:15:19,100 >> Vì vậy, chỉ để được hoàn toàn rõ ràng, f mở mà không được hát Katy Perry mới 306 00:15:19,100 --> 00:15:23,060 done mp3, đó là sẽ khá nhiều trở lại ngay lập tức. 307 00:15:23,060 --> 00:15:27,820 Và sau đó chúng tôi chỉ có thể tiếp tục làm công cụ khác bởi vì tất cả những gì bây giờ f 308 00:15:27,820 --> 00:15:33,410 mở cuộc gọi, không có gì nói về cơ bản mã mở f cơ bản mở tập tin này 309 00:15:33,410 --> 00:15:36,020 và khi bạn đang thực hiện mở này file hoặc khi bạn nhận được nó trở lại, 310 00:15:36,020 --> 00:15:37,480 sau đó chạy mã. 311 00:15:37,480 --> 00:15:39,540 Nhưng nó không thực sự chạy mã. 312 00:15:39,540 --> 00:15:41,815 Và bạn đã có một câu hỏi? 313 00:15:41,815 --> 00:15:46,180 >> ĐỐI TƯỢNG: Bạn đã cho thấy một vài lần rằng việc thêm tính toán 314 00:15:46,180 --> 00:15:50,545 đang tích cực loại phá vỡ Hệ thống điều khiển [không nghe được]. 315 00:15:50,545 --> 00:15:51,795 [Nghe được]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN Schmid: Đó là một câu hỏi lớn. 318 00:15:55,290 --> 00:15:59,280 Vì vậy, tôi thực sự có một ví dụ về cách bạn có thể tích hợp tính toán 319 00:15:59,280 --> 00:16:01,090 đang tập trung trong một chút. 320 00:16:01,090 --> 00:16:03,620 Vì vậy, khi chúng tôi đến được với các ví dụ mã, Tôi chắc chắn sẽ kéo một. 321 00:16:03,620 --> 00:16:04,700 Là OK? 322 00:16:04,700 --> 00:16:05,950 Cảm ơn bạn. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Tên của bạn là gì? 325 00:16:08,750 --> 00:16:10,620 >> ĐỐI TƯỢNG: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN Schmid: Aaron sẽ trả về một rất điểm tốt, đó là nếu tôi đã có 327 00:16:14,830 --> 00:16:18,560 một số mã tính toán mạnh trong các công cụ làm với e phần, phần còn lại của 328 00:16:18,560 --> 00:16:22,880 chương trình của tôi không thể chạy và không thể nghe yêu cầu mới hoặc bất cứ điều gì cho đến khi tất cả 329 00:16:22,880 --> 00:16:24,270 thứ đã xong. 330 00:16:24,270 --> 00:16:27,390 Vì vậy, nếu tôi viết mã Node nói chung trừ khi chúng ta làm điều gì đó như tôi sẽ 331 00:16:27,390 --> 00:16:33,060 cho thấy sau khi chúng ta nhìn vào ví dụ mã, tôi có thể chắc chắn rằng 332 00:16:33,060 --> 00:16:36,060 mã của tôi không tie lên vòng lặp sự kiện này. 333 00:16:36,060 --> 00:16:38,120 Điều đó có ý nghĩa? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Mát mẻ. 336 00:16:40,040 --> 00:16:47,090 >> Vì vậy, Node.js cung cấp khuôn khổ này mà bạn có thể xây dựng các sự kiện hướng 337 00:16:47,090 --> 00:16:48,210 máy chủ với. 338 00:16:48,210 --> 00:16:53,460 Vì vậy, nó có các loại không đồng bộ non-blocking I / O thư viện, trong khi 339 00:16:53,460 --> 00:16:56,800 các thư viện C chuẩn mà chúng tôi đã được làm việc với, như nếu bạn chỉ 340 00:16:56,800 --> 00:16:59,500 sử dụng chúng trong cùng một cách mà chúng tôi đã được sử dụng chúng với e sẽ mở ra và 341 00:16:59,500 --> 00:17:03,000 công cụ, những người đang chặn vì bạn thực sự phải chờ 342 00:17:03,000 --> 00:17:04,470 tập tin đó để mở. 343 00:17:04,470 --> 00:17:09,290 >> Nhưng Node.js cung cấp cho bạn đó và nó về cơ bản gắn vào động cơ V8 của Google 344 00:17:09,290 --> 00:17:14,030 Công cụ JavaScript đó là lý do Chrome là quá nhanh tại xử lý 345 00:17:14,030 --> 00:17:17,040 JavaScript bởi vì nó có động cơ V8 này. 346 00:17:17,040 --> 00:17:22,460 Vì vậy, tôi biết rằng âm thanh như một trong những WWDC hội nghị nhà phát triển điều 347 00:17:22,460 --> 00:17:25,390 nơi họ chỉ cần ném một bó của điều số thư cho bộ vi xử lý 348 00:17:25,390 --> 00:17:26,910 và nói rằng đây là rất mát mẻ. 349 00:17:26,910 --> 00:17:34,200 Nhưng nó là mát mẻ mà họ đã làm này vì JavaScript - 350 00:17:34,200 --> 00:17:37,010 hoặc có thể nếu bạn không quen thuộc với JavaScript chưa bởi vì chúng tôi đã không có 351 00:17:37,010 --> 00:17:38,180 các bài giảng về nó - 352 00:17:38,180 --> 00:17:40,770 nhưng JavaScript là một giải thích ngôn ngữ. 353 00:17:40,770 --> 00:17:41,970 >> Và đây là một điểm quan trọng. 354 00:17:41,970 --> 00:17:45,790 Vì vậy, điều quan trọng cho web của chúng tôi là các máy chủ được nhanh chóng, đúng không? 355 00:17:45,790 --> 00:17:49,970 Và nếu chúng ta chỉ cần chạy JavaScript mã đã được giải thích chỉ với 356 00:17:49,970 --> 00:17:52,130 bất kỳ thông dịch viên cũ nó có thể được làm chậm. 357 00:17:52,130 --> 00:17:55,980 Vì vậy, lợi ích từ việc này Node thông dịch viên động cơ V8 siêu nhanh. 358 00:17:55,980 --> 00:17:59,580 Và tôi không biết nếu họ đặt tên cho nó vì cái tát V8 ở trán 359 00:17:59,580 --> 00:18:01,110 điều, nhưng OK. 360 00:18:01,110 --> 00:18:07,070 >> Vì vậy, tôi đã chuẩn bị một số ví dụ tại URL này. 361 00:18:07,070 --> 00:18:10,490 Sau buổi hội thảo, tôi loại đi nói về cách bạn có thể nhận được Node bộ 362 00:18:10,490 --> 00:18:13,570 lên, nhưng bây giờ, tôi chỉ muốn loại đi bộ qua một số ví dụ mã. 363 00:18:13,570 --> 00:18:17,250 Vì vậy, nếu bạn muốn theo cùng, tất cả các Mã nguồn có sẵn ở đó. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Vì vậy, tôi sẽ để lại URL này cho một chút. 366 00:18:22,280 --> 00:18:24,440 Và sau đó tôi chỉ cần đi đến chuyển vào thiết bị đầu cuối. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Là tất cả mọi người tốt với URL này? 369 00:18:34,400 --> 00:18:37,990 Vì vậy, tôi sẽ chuyển sang để thiết bị đầu cuối của tôi ở đây. 370 00:18:37,990 --> 00:18:42,030 >> Vì vậy, đây là đoạn code mà Tôi có ngày hôm nay. 371 00:18:42,030 --> 00:18:43,960 Tại sao chúng ta không bắt đầu với simpler.js nộp? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Điều khác là tất cả điều này đang có được viết bằng 374 00:18:52,100 --> 00:18:56,660 Mà JavaScript bạn có thể hoặc có thể không được quen thuộc. 375 00:18:56,660 --> 00:19:00,170 Tôi đoán một vài điều là rất nhiều mã JavaScript là loại 376 00:19:00,170 --> 00:19:04,000 cú pháp và cấu trúc rất giống với C, vì vậy bạn có thể loại nhặt nó lên như 377 00:19:04,000 --> 00:19:05,020 bạn đi cùng. 378 00:19:05,020 --> 00:19:08,750 Tôi đã cố gắng để viết rất nhiều bắt đầu từ mã cho điều này trong một cách đó là 379 00:19:08,750 --> 00:19:11,230 tương tự như C để nó nhiều hơn một chút có thể đọc được. 380 00:19:11,230 --> 00:19:15,980 Nhưng khi chúng tôi tiến bộ, tôi sẽ chứng minh một số bổ sung 381 00:19:15,980 --> 00:19:18,980 tính năng của JavaScript là loại mát mẻ. 382 00:19:18,980 --> 00:19:21,510 >> Nhưng hãy nhìn vào chương trình mẫu này. 383 00:19:21,510 --> 00:19:24,820 Tôi đoán mọi việc cắt đó. 384 00:19:24,820 --> 00:19:28,500 Tôi chỉ cần đi để sửa chữa thực sự nhanh nếu đó là OK hay không. 385 00:19:28,500 --> 00:19:31,400 Tôi không biết điều này sẽ làm. 386 00:19:31,400 --> 00:19:34,660 Là một chút tốt hơn? 387 00:19:34,660 --> 00:19:36,510 Bạn sẽ nhìn thấy var và các công cụ? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Vì vậy, dòng đầu tiên là như JavaScript phiên bản của một biến 390 00:19:44,120 --> 00:19:44,800 kê khai. 391 00:19:44,800 --> 00:19:49,870 Vì vậy, chỉ để làm nổi bật những gì sẽ này trông giống như trong C. Vì vậy, đây là giống như 392 00:19:49,870 --> 00:19:52,620 chỉ số tôi nói bằng ba hoặc một cái gì đó như thế. 393 00:19:52,620 --> 00:19:55,740 Vì vậy, tôi đã không xác định loại. 394 00:19:55,740 --> 00:20:00,780 JavaScript không có các loại, nhưng nó rất kiểu động trong tự nhiên, vì vậy 395 00:20:00,780 --> 00:20:02,580 không cung cấp bất kỳ loại của các loại trên nó. 396 00:20:02,580 --> 00:20:03,670 Vì vậy, nó chỉ có var. 397 00:20:03,670 --> 00:20:05,320 Điều đó giống như biến. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Và tôi gọi biến HTTP này. 400 00:20:08,340 --> 00:20:12,480 Và về phía bên tay phải của tôi, tôi có biểu mà tôi muốn đưa vào HTTP. 401 00:20:12,480 --> 00:20:14,960 Và điều này cho biết yêu cầu HTTP. 402 00:20:14,960 --> 00:20:18,500 Vì vậy, đây là loại tương tự như bao gồm. 403 00:20:18,500 --> 00:20:22,940 Đó là một chút giống như mạnh mẽ hơn bao gồm trong ý nghĩa là bao gồm 404 00:20:22,940 --> 00:20:26,100 sẽ chỉ cần sao chép và dán các tiêu đề nộp cho các nguyên mẫu chức năng hoặc 405 00:20:26,100 --> 00:20:27,930 bất cứ điều gì với các định nghĩa kiểu. 406 00:20:27,930 --> 00:20:30,590 Nhưng đòi hỏi phải được thực sự đi để có được chúng tôi mã. 407 00:20:30,590 --> 00:20:33,280 >> Vì vậy, bạn có thể nghĩ về nó như nhập khẩu một số mã. 408 00:20:33,280 --> 00:20:37,960 Vì vậy, ở đâu đó trong các mô-đun Node.js hệ thống hoặc bất cứ điều gì, họ có tất cả điều này 409 00:20:37,960 --> 00:20:40,790 Mã máy chủ HTTP vì vậy tôi chỉ lấy nó cho riêng tôi 410 00:20:40,790 --> 00:20:43,130 sử dụng cá nhân trong chương trình này. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Vì vậy, sau đó tôi có chức năng này mà tôi đã viết. 413 00:20:46,930 --> 00:20:50,330 Và thông báo tôi không có chỉ định kiểu trả về hoặc kiểu của 414 00:20:50,330 --> 00:20:51,140 lập luận một lần nữa. 415 00:20:51,140 --> 00:20:54,440 Vì vậy, loại lỏng gõ vào mà loại cảm giác. 416 00:20:54,440 --> 00:20:57,290 Hai đối số mà phải mất trong, các yêu cầu và đáp ứng. 417 00:20:57,290 --> 00:21:02,080 Vì vậy, đó là khái niệm giống như quen thuộc từ các hình ảnh mà chúng tôi đã 418 00:21:02,080 --> 00:21:05,280 trên màn hình trước khi vì chúng tôi nhận được yêu cầu này, chúng ta 419 00:21:05,280 --> 00:21:06,410 có từ người sử dụng. 420 00:21:06,410 --> 00:21:09,170 Và sau đó chúng tôi có một phản ứng chúng ta có thể viết những điều để. 421 00:21:09,170 --> 00:21:15,060 >> Vì vậy, dòng đầu tiên của điều này res.writeHead 200 và sau đó điều này 422 00:21:15,060 --> 00:21:17,070 loại nội dung văn bản đơn giản. 423 00:21:17,070 --> 00:21:19,300 Vì vậy, hãy mảnh này ngoài một chút. 424 00:21:19,300 --> 00:21:22,340 Vì vậy, hãy chỉ tập trung vào res.write cho một ít. 425 00:21:22,340 --> 00:21:28,420 Vì vậy, về cơ bản là viết, và viết đầu, chỉ là cách để loại viết ra 426 00:21:28,420 --> 00:21:29,960 điều cần đáp ứng. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Vì vậy, ghi đầu, nếu ai nhớ từ các bài giảng HTTP, làm các bạn 429 00:21:36,230 --> 00:21:39,940 nhớ tiêu đề tại đầu điều HTTP? 430 00:21:39,940 --> 00:21:43,580 Vì vậy, tại sao tôi không chỉ bản demo tiêu đề thực sự nhanh chóng. 431 00:21:43,580 --> 00:21:44,640 Đó sẽ là hữu ích không? 432 00:21:44,640 --> 00:21:45,500 Hoặc nên chúng tôi chỉ loại - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Chắc chắn. 435 00:21:46,740 --> 00:21:52,340 >> Vì vậy, khi trình duyệt của bạn đi vào google.com hay như thế, 436 00:21:52,340 --> 00:21:54,250 có thực sự là nhiều hơn một chút - 437 00:21:54,250 --> 00:21:55,380 điều này giống như một bí mật - 438 00:21:55,380 --> 00:21:58,340 có như thêm một chút thông tin mà đi qua các đường ống hơn là chỉ 439 00:21:58,340 --> 00:22:00,180 tìm kiếm ít và tất cả mọi thứ. 440 00:22:00,180 --> 00:22:03,550 Vì vậy, để cho bạn thấy điều này, tôi sẽ sử dụng một chương trình gọi là Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Vì vậy, đây là một cái gì đó mà bạn có thể chạy ở dòng lệnh Mac OSX của bạn hoặc trong 443 00:22:08,020 --> 00:22:09,830 thiết bị hoặc bất cứ điều gì. 444 00:22:09,830 --> 00:22:17,050 Và do đó, nếu tôi Curl HTTP google.com, Tôi sẽ xem HTML. 445 00:22:17,050 --> 00:22:21,230 Và điều này là, trong sự công bằng, chỉ cần HTML loại cho bạn 446 00:22:21,230 --> 00:22:24,695 chuyển hướng đến www nếu trình duyệt của bạn không tự động xử lý các 447 00:22:24,695 --> 00:22:27,110 chuyển hướng. 448 00:22:27,110 --> 00:22:33,390 >> Vì vậy, đây chỉ là HTML, nhưng tôi sẽ để thêm vào Curl dấu gạch nối này gắn cờ. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Và điều này sẽ chỉ cho tôi tiêu đề. 451 00:22:35,600 --> 00:22:40,640 Vì vậy, đây cũng là thông tin mà đi kèm thông qua khi tôi nhận được phản ứng này. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Vì vậy, ở đầu trang, bạn thấy điều này HTTP 301 di chuyển vĩnh viễn. 454 00:22:45,320 --> 00:22:49,470 Và đây là loại quan trọng vì này đề cập đến các mã trạng thái. 455 00:22:49,470 --> 00:22:53,750 Vì vậy, ở đây là 301 mã trạng thái, đó là cơ bản chỉ là một số nguyên 456 00:22:53,750 --> 00:22:57,750 mà nói với các trình duyệt hoặc bất cứ ai là đọc sách này, nếu bạn giả vờ rằng 457 00:22:57,750 --> 00:23:01,460 bạn là một trình duyệt và bạn đang nhìn thấy điều này, về cơ bản bây giờ nếu bạn nhìn vào 458 00:23:01,460 --> 00:23:04,960 và bạn 301 thấy, bạn biết tôi có làm điều gì đó đặc biệt dựa trên 459 00:23:04,960 --> 00:23:08,810 301, hoặc một cái gì đó đặc biệt đã xảy ra dựa trên 301. 460 00:23:08,810 --> 00:23:12,640 Vì vậy, nó nói chuyển vĩnh viễn. 461 00:23:12,640 --> 00:23:17,700 >> Và sau đó, về cơ bản, chúng tôi có một loạt các cặp giá trị quan trọng. 462 00:23:17,700 --> 00:23:22,100 Vì vậy chúng tôi có được vị trí là www.google.com. 463 00:23:22,100 --> 00:23:25,190 Và sau đó loại của tất cả các công cụ khác này, nhưng về cơ bản, những gì vị trí là 464 00:23:25,190 --> 00:23:29,662 nói là vị trí mới là tại www.google.com. 465 00:23:29,662 --> 00:23:33,800 Vì vậy, bây giờ nếu bạn đi đến google.com, bạn sẽ loại xem loại trình duyệt của chớp 466 00:23:33,800 --> 00:23:38,770 trong một giây và sau đó chuyển hướng bạn quay lại ngay để www.google.com. 467 00:23:38,770 --> 00:23:41,840 Vì vậy, các câu trả lời có thể chứa các tiêu đề. 468 00:23:41,840 --> 00:23:43,330 >> Và một vài điều cần chỉ ra. 469 00:23:43,330 --> 00:23:46,890 Vì vậy, hãy nói rằng chúng tôi đã thực sự thành công trong truy cập vào một trang web. 470 00:23:46,890 --> 00:23:49,040 Vì vậy, hãy để tôi đi đến - 471 00:23:49,040 --> 00:23:51,080 một trang web tốt là gì? 472 00:23:51,080 --> 00:23:53,285 Tôi xấu tại tư duy tốt các trang web ngay tại chỗ. 473 00:23:53,285 --> 00:23:53,640 >> ĐỐI TƯỢNG: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN Schmid: OK. 475 00:23:54,160 --> 00:23:56,040 Chúng ta hãy làm Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Vì vậy, ở đây tôi đã được di chuyển. 477 00:23:58,680 --> 00:23:59,240 Oh chờ đợi. 478 00:23:59,240 --> 00:24:00,160 Là tôi? 479 00:24:00,160 --> 00:24:00,890 Vâng, tôi là. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Vì vậy, tôi phải làm www. 482 00:24:03,005 --> 00:24:06,006 Vì vậy, tôi sẽ làm www. 483 00:24:06,006 --> 00:24:09,680 Và bạn có thể thấy, đây là tất cả các HTML trình duyệt sẽ xử lý 484 00:24:09,680 --> 00:24:10,910 cho Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Nhưng nếu tôi tiếp tục di chuyển lên đây, những gì tôi sẽ thấy ở đầu - 486 00:24:14,055 --> 00:24:17,800 wow, có rất nhiều HTML trên Wikipedia - 487 00:24:17,800 --> 00:24:22,550 nhưng những gì tôi có thể nhìn thấy ở phía trên đây là đang 200 tình trạng này như trái ngược với các 488 00:24:22,550 --> 00:24:24,570 301 mà tôi đã thấy trước đó. 489 00:24:24,570 --> 00:24:27,100 Và nhận thấy rằng nó có một tốt đẹp thân thiện OK bên cạnh nó. 490 00:24:27,100 --> 00:24:29,470 Vì vậy, điều này giống như mã trạng thái tốt. 491 00:24:29,470 --> 00:24:31,160 >> Điều đó có 200 số trông quen thuộc? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Có bởi vì khi tôi đã làm simpler.js, Tôi đã viết một 200 đó. 494 00:24:39,880 --> 00:24:43,290 Vì vậy, về cơ bản nói cho các trình duyệt hoặc bất cứ ai đang cố gắng để có được 495 00:24:43,290 --> 00:24:45,440 này mà họ đã thành công. 496 00:24:45,440 --> 00:24:49,040 Hoặc giống như chúng tôi đã thành công quá. 497 00:24:49,040 --> 00:24:54,320 >> Và có loại cú pháp đặc biệt trong Javascript tuyên bố một 498 00:24:54,320 --> 00:24:59,870 bản đồ của các phím như loại nội dung và các giá trị như đồng bằng văn bản. 499 00:24:59,870 --> 00:25:03,780 Vì vậy, nếu bạn nhìn vào các phản ứng mà chúng tôi đã trở lại từ Wikipedia trước, - 500 00:25:03,780 --> 00:25:06,200 Tôi sẽ cố gắng di chuyển lên nhanh hơn một chút - 501 00:25:06,200 --> 00:25:09,900 bạn có các phím như máy chủ và các giá trị Apache. 502 00:25:09,900 --> 00:25:12,120 Vì vậy, bạn đã có khóa và giá trị. 503 00:25:12,120 --> 00:25:15,930 Và bạn có thể chỉ định này trong Node những gì để gửi lại. 504 00:25:15,930 --> 00:25:19,380 >> Vì vậy, đây thực sự là loại, trong một số cách, và trong một số cách nó không 505 00:25:19,380 --> 00:25:23,170 thực sự, nhưng đó là một cấp thấp hơn chút hơn so với mã PHP mà bạn có thể 506 00:25:23,170 --> 00:25:26,980 viết cho P thiết lập bảy vì PHP và Apache loại chăm sóc của một số 507 00:25:26,980 --> 00:25:28,150 những điều này cho bạn. 508 00:25:28,150 --> 00:25:32,520 Trong PHP, bạn có thể ghi đè lên mặc định hành vi bằng cách viết tiêu đề của riêng bạn. 509 00:25:32,520 --> 00:25:35,520 Nhưng với mục đích này, chúng tôi nhận để viết ra tiêu đề của chúng ta. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Vì vậy, hiện dòng đó có ý nghĩa để tất cả mọi người, dòng ghi đầu? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Tuyệt vời. 514 00:25:42,280 --> 00:25:45,870 >> Vì vậy, sau đó những gì tôi làm tôi kết thúc phản ứng là bằng cách nói hello thế giới. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Nhưng đó chỉ là một chức năng được gọi là yêu cầu xử lý. 517 00:25:49,920 --> 00:25:53,510 Vì vậy, bây giờ tôi thực sự phải loại làm một cái gì đó với chức năng này, phải không? 518 00:25:53,510 --> 00:25:59,170 >> Vì vậy, đây là những gì tôi làm là có được này dòng mà không var máy chủ bình đẳng 519 00:25:59,170 --> 00:26:03,530 HTTP.create máy chủ, và sau đó tôi vượt qua trong xử lý yêu cầu. 520 00:26:03,530 --> 00:26:06,080 Vì vậy, đây là loại Node cách tạo ra một máy chủ. 521 00:26:06,080 --> 00:26:08,790 Và thông báo rằng tôi đang đi qua trong xử lý yêu cầu. 522 00:26:08,790 --> 00:26:12,290 Vì vậy, đây là nói sự createServer chức năng mà tôi muốn bạn để làm cho tôi một 523 00:26:12,290 --> 00:26:16,270 máy chủ, và khi máy chủ nhận được một phản ứng, tôi cần bạn gọi này 524 00:26:16,270 --> 00:26:18,680 yêu cầu chức năng xử lý. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Vì vậy, dòng khá nhiều kết thúc ngay lập tức. 527 00:26:22,290 --> 00:26:28,780 Vì vậy, các dòng máy chủ var được thực hiện ngay sau khi bạn làm điều đó khá nhiều. 528 00:26:28,780 --> 00:26:31,770 Ý tôi là, nó đã thiết lập một số nội bộ nhà nước để biết rằng bạn sẽ phải 529 00:26:31,770 --> 00:26:35,400 gọi đó là chức năng yêu cầu xử lý, nhưng nó sẽ không ngồi đó và 530 00:26:35,400 --> 00:26:37,730 nói có người sử dụng gửi tôi yêu cầu chưa? 531 00:26:37,730 --> 00:26:39,270 Người sử dụng đã gửi cho tôi một yêu cầu chưa? 532 00:26:39,270 --> 00:26:40,780 Vì vậy, nó không chặn. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Vì vậy, điều này sẽ làm điều đó về cơ bản là tại các cửa hàng một con trỏ đến mã này, 535 00:26:46,120 --> 00:26:49,670 này chức năng xử lý yêu cầu, và sau đó sẽ chạy mã mà khi ai đó 536 00:26:49,670 --> 00:26:52,170 làm cho một yêu cầu. 537 00:26:52,170 --> 00:26:54,120 Và sau đó chúng tôi làm server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> Các năm 1337 có hơi tùy tiện. 540 00:26:59,960 --> 00:27:02,285 Tôi không có lý do đặc biệt để chọn số đó. 541 00:27:02,285 --> 00:27:03,860 Đó là hoàn toàn ngẫu nhiên. 542 00:27:03,860 --> 00:27:07,010 Nhưng đó chỉ định cổng. 543 00:27:07,010 --> 00:27:10,640 Vì vậy, hầu hết các máy chủ web, bạn sẽ thấy rằng họ sử dụng cổng 80 vì đó là loại 544 00:27:10,640 --> 00:27:11,810 giống như quy ước. 545 00:27:11,810 --> 00:27:16,170 Vì vậy, nếu tôi đi đến một cái gì đó như, Tôi không biết, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 và tôi đặt dấu hai chấm 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, bạn không thể thấy điều đó. 548 00:27:18,610 --> 00:27:19,370 Tôi xin lỗi. 549 00:27:19,370 --> 00:27:21,820 Nhưng nếu tôi làm Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Tôi sẽ viết nó ở đây chỉ để rõ ràng trên máy ảnh. 551 00:27:24,810 --> 00:27:29,150 Nhưng nếu tôi thực hiện việc này vào trình duyệt với một dấu hai chấm 80, chỉ định đi đến 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org tại cổng 80. 553 00:27:31,430 --> 00:27:36,200 Vì vậy, nó giống như làm thế nào Hoa Kỳ có nhiều cổng giống như nơi mà bạn có thể gửi 554 00:27:36,200 --> 00:27:37,440 điều cần loại. 555 00:27:37,440 --> 00:27:40,730 Vì vậy, nó giống như đi đặc biệt này đặt trên máy chủ này. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Vì vậy tôi chỉ chọn 1337. 558 00:27:45,730 --> 00:27:47,910 Có cả một loạt các con số bạn có thể chọn. 559 00:27:47,910 --> 00:27:50,390 Đó không phải là hoàn toàn đặc biệt. 560 00:27:50,390 --> 00:27:54,560 >> Nhưng những gì tôi sẽ làm gì bây giờ là tôi sẽ chạy Node. 561 00:27:54,560 --> 00:27:59,730 Hãy để tôi thực sự nhập mà một cặp vợ chồng đường xuống để bạn có thể nhìn thấy nó. 562 00:27:59,730 --> 00:28:03,130 Tôi sẽ làm Node, và tôi sẽ chạy simpler.js. 563 00:28:03,130 --> 00:28:06,880 Và chúng tôi sẽ nói về cách để có được Nút thiết lập trong một chút. 564 00:28:06,880 --> 00:28:09,350 Nhưng bây giờ nó chỉ chạy máy chủ. 565 00:28:09,350 --> 00:28:14,360 >> Vì vậy, một điều chúng ta có thể thử mà không được thể là thú vị là chúng ta có thể thực sự 566 00:28:14,360 --> 00:28:16,300 cố gắng để truy cập nó trong Curl. 567 00:28:16,300 --> 00:28:20,680 Vì vậy, tôi có thể làm Curl, và tôi máy là chủ của địa phương. 568 00:28:20,680 --> 00:28:24,600 Bạn cũng sẽ thấy điều này bằng văn bản như thế này đôi khi. 569 00:28:24,600 --> 00:28:29,810 Máy chủ và 127.0.0.1 địa phương là loại giống như máy tính ở nhà của bạn. 570 00:28:29,810 --> 00:28:33,180 Vì vậy, nó giống như nói chuyện với máy tính của riêng bạn. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Và sau đó tôi có thể nói 1337. 573 00:28:36,030 --> 00:28:39,630 Vì vậy, nếu tôi chạy dòng mã này, nó nói hello thế giới. 574 00:28:39,630 --> 00:28:44,050 Và nếu tôi muốn nhìn thấy những thứ đó mà có loại nội dung văn bản gốc hoặc 575 00:28:44,050 --> 00:28:46,560 bất cứ điều gì, tôi thậm chí có thể đặt ở đây. 576 00:28:46,560 --> 00:28:48,810 Và nhận thấy rằng nó nói OK. 577 00:28:48,810 --> 00:28:50,810 Và tôi có đồng bằng văn bản. 578 00:28:50,810 --> 00:28:53,140 Và sau đó có loại của tất cả các khác này thứ mà Node sẽ thêm vào 579 00:28:53,140 --> 00:28:54,440 có cho tôi. 580 00:28:54,440 --> 00:28:55,700 Đó không phải là siêu quan trọng. 581 00:28:55,700 --> 00:28:58,230 >> Ý tôi là, có một số loại kỹ thuật các khía cạnh của lúc đó là loại 582 00:28:58,230 --> 00:29:02,280 mát mẻ để nói về, nhưng chỉ để hiển thị bạn, tôi cũng có quyền 583 00:29:02,280 --> 00:29:03,070 thay đổi các xung quanh. 584 00:29:03,070 --> 00:29:06,280 Vì vậy, tôi chỉ có thể thêm một bó các công cụ như thế. 585 00:29:06,280 --> 00:29:11,780 Và sau đó bây giờ, nếu tôi nhìn vào tôi đầu ra, nó sẽ được điều đó. 586 00:29:11,780 --> 00:29:19,740 Vì vậy, các tiêu đề có nghĩa là những thứ nhất định để trình duyệt và những thứ như thế. 587 00:29:19,740 --> 00:29:23,040 >> Và tiêu đề cơ bản có thể nói với một trình duyệt làm thế nào để đáp ứng một cái gì đó. 588 00:29:23,040 --> 00:29:26,280 Nếu bạn đã từng nghe nói về các tập tin cookie trước, hoặc nếu bạn đã từng khó chịu 589 00:29:26,280 --> 00:29:29,330 bởi một trang web thiết lập các tập tin cookie, hoặc bật cookie hoặc khối 590 00:29:29,330 --> 00:29:30,320 một cái gì đó như thế. 591 00:29:30,320 --> 00:29:33,040 Bạn thực sự có thể thiết lập các tập tin cookie trong các tiêu đề. 592 00:29:33,040 --> 00:29:36,990 Vì vậy, họ cho một trình duyệt như thế nào để hành vi trong một số trường hợp. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Vì vậy, đó là simpler.js. 595 00:29:40,310 --> 00:29:42,780 Không ai có bất kỳ câu hỏi trên tập tin mã nguồn? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 OK. 598 00:29:45,610 --> 00:29:46,490 Mát mẻ. 599 00:29:46,490 --> 00:29:50,780 >> Vì vậy, hãy loại bỏ các r từ đó và nhìn vào simple.js. 600 00:29:50,780 --> 00:29:53,010 Vì vậy, đây là khá nhiều cùng một chương trình. 601 00:29:53,010 --> 00:29:56,030 Tôi chỉ viết nó một chút khác nhau bởi vì tôi muốn sắp xếp của nổi bật 602 00:29:56,030 --> 00:29:57,850 một số tính năng của JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> Vì vậy, nhận thấy rằng xử lý yêu cầu chức năng đã hoàn toàn biến mất. 604 00:30:03,880 --> 00:30:05,800 Oh vâng, bạn đã có một câu hỏi? 605 00:30:05,800 --> 00:30:08,200 >> ĐỐI TƯỢNG: Vâng, các đối số được thông qua với 606 00:30:08,200 --> 00:30:10,120 chức năng, chúng là gì? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN Schmid: Vì vậy, những người đang có JavaScript đối tượng. 608 00:30:12,050 --> 00:30:15,230 Trong tài liệu Node.js, nó về cơ bản những gì phương pháp 609 00:30:15,230 --> 00:30:15,910 có sẵn trên chúng. 610 00:30:15,910 --> 00:30:19,602 Chúng tôi chỉ xảy ra để có quyền truy cập vào Phương pháp này được gọi là ghi đầu và kết thúc 611 00:30:19,602 --> 00:30:20,730 và các công cụ như thế. 612 00:30:20,730 --> 00:30:22,590 Nhưng có cả một bó nhiều phương pháp. 613 00:30:22,590 --> 00:30:27,670 >> Và ví dụ, như một trong số họ đặc biệt là về rec, bạn có thể làm 614 00:30:27,670 --> 00:30:34,540 một cái gì đó như rec.method mà sẽ nói cho bạn biết đó là một HTTP được hoặc 615 00:30:34,540 --> 00:30:36,780 Bài yêu cầu HTTP và những điều như thế. 616 00:30:36,780 --> 00:30:39,100 Do đó, có tất cả các loại khác nhau tài sản, nhưng chúng cả hai 617 00:30:39,100 --> 00:30:42,560 JavaScript đối tượng, và họ chỉ có chức năng gắn liền với họ rằng bạn 618 00:30:42,560 --> 00:30:43,850 có thể viết những điều để. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Vì vậy, nhận thấy rằng xử lý yêu cầu là hoàn toàn biến mất. 621 00:30:49,030 --> 00:30:52,650 Nhưng mã mà tôi đã có trong yêu cầu xử lý vẫn còn đó. 622 00:30:52,650 --> 00:30:56,520 Tôi vẫn còn có res.writeHead này và tôi vẫn còn có res.end này. 623 00:30:56,520 --> 00:31:00,270 Và điều này là một ví dụ trong JavaScript là ý tưởng về một 624 00:31:00,270 --> 00:31:01,460 chức năng ẩn danh. 625 00:31:01,460 --> 00:31:04,180 và vô danh giống như một tên phù hợp cho nó vì nó theo nghĩa đen không 626 00:31:04,180 --> 00:31:05,180 có một cái tên. 627 00:31:05,180 --> 00:31:07,900 Không có yêu cầu chức năng xử lý trong đó. 628 00:31:07,900 --> 00:31:10,110 >> Không có tên, nhưng nó vẫn là tham gia một cuộc tranh cãi. 629 00:31:10,110 --> 00:31:12,250 Vì vậy, tôi vẫn có rec và độ phân giải. 630 00:31:12,250 --> 00:31:16,180 Và tôi vẫn còn có các mã. 631 00:31:16,180 --> 00:31:18,930 Đây là hoàn toàn tốt đẹp Mã JavaScript. 632 00:31:18,930 --> 00:31:22,540 Vì vậy, tôi có thể tuyên bố một chức năng mà không cần cho rõ ràng nó một cái tên. 633 00:31:22,540 --> 00:31:24,250 Đó là một chút bối rối lúc đầu tiên. 634 00:31:24,250 --> 00:31:26,230 Có một số điều hữu ích như mà bạn có thể làm với 635 00:31:26,230 --> 00:31:28,450 các chức năng ẩn danh. 636 00:31:28,450 --> 00:31:32,100 Không ai có bất kỳ câu hỏi về điều này, hoặc là nó OK chỉ để, bây giờ, 637 00:31:32,100 --> 00:31:34,130 loại chỉ chấp nhận rằng nó sẽ làm điều tương tự? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Vâng? 640 00:31:37,125 --> 00:31:38,680 >> ĐỐI TƯỢNG: là chức năng đầu tiên lớp trong JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN Schmid: Họ là đầu tiên lớp trong JavaScript. 642 00:31:41,020 --> 00:31:45,490 Và chỉ biết rằng những khái niệm của đi qua trong một chức năng vô danh như 643 00:31:45,490 --> 00:31:49,600 này áp dụng đối với JavaScript mà bạn có thể viết trong dự án cuối cùng của bạn cho 644 00:31:49,600 --> 00:31:51,260 trình duyệt web quá. 645 00:31:51,260 --> 00:31:56,700 Vì vậy, ví dụ, trong JavaScript trong Trình duyệt của bạn, nó cũng phần nào sự kiện 646 00:31:56,700 --> 00:32:00,680 hướng theo ý nghĩa là những gì bạn sẽ thấy có là khi người dùng nhấp chuột này 647 00:32:00,680 --> 00:32:02,640 nút, tôi muốn bạn để chạy mã này. 648 00:32:02,640 --> 00:32:07,070 >> Vì vậy, đó là cùng một loại ý tưởng của phía khách hàng khi một click chuột hoặc họ 649 00:32:07,070 --> 00:32:09,870 chuột qua một số hình ảnh trên của bạn trang web, chạy mã này. 650 00:32:09,870 --> 00:32:11,350 Có thể áp dụng cho các máy chủ. 651 00:32:11,350 --> 00:32:16,380 Vì vậy, đó là loại giống như các thú vị lý do tại sao JavaScript là một thực sự 652 00:32:16,380 --> 00:32:19,810 phù hợp hoặc một số người nghĩ rằng đó là một ngôn ngữ thích hợp cho các loại hình 653 00:32:19,810 --> 00:32:22,530 máy chủ điều khiển sự kiện bởi vì bạn có các chức năng ẩn danh. 654 00:32:22,530 --> 00:32:26,150 Bạn có toàn bộ ý tưởng mã không đồng bộ này. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Ai có bất cứ câu hỏi? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Vì vậy, đó là simple.js. 659 00:32:33,440 --> 00:32:38,070 Vì vậy, chúng ta hãy nhìn vào một trong hơn hoặc một vài chi tiết. 660 00:32:38,070 --> 00:32:42,040 Vì vậy, đây là sleep.js. 661 00:32:42,040 --> 00:32:47,160 Vì vậy, bất cứ ai quen thuộc với chức năng C ngủ? 662 00:32:47,160 --> 00:32:50,936 Từ có lẽ một trong những bài giảng trước hoặc một cái gì đó như thế? 663 00:32:50,936 --> 00:32:54,650 >> Vì vậy, về cơ bản bạn có thể vượt qua trong tôi nghĩ rằng một số giây hoặc nếu bạn đang sử dụng U 664 00:32:54,650 --> 00:32:57,080 ngủ một số mili giây hoặc nano giây. 665 00:32:57,080 --> 00:33:00,450 Và về cơ bản chương trình sẽ chỉ dừng lại chạy cho rằng số lượng thời gian. 666 00:33:00,450 --> 00:33:01,280 Phải không? 667 00:33:01,280 --> 00:33:06,970 Và sau đó nó sẽ thức dậy cuối cùng và sau đó nó sẽ chỉ tiếp tục chạy 668 00:33:06,970 --> 00:33:08,340 chương trình. 669 00:33:08,340 --> 00:33:12,740 >> Vì vậy, máy chủ này loại cung cấp cho ấn tượng của giấc ngủ. 670 00:33:12,740 --> 00:33:17,580 Vì vậy, nhận thấy rằng chúng tôi có cùng một res.writeHead 200 với tiêu đề như 671 00:33:17,580 --> 00:33:22,130 trước, nhưng sau đó chúng tôi đang gọi điện thoại này chức năng gọi là bộ thời gian chờ. 672 00:33:22,130 --> 00:33:26,170 Thiết lập thời gian chờ cũng có sẵn trong trình duyệt web của bạn Google Chrome 673 00:33:26,170 --> 00:33:28,000 hoặc Safari hoặc bất cứ điều gì. 674 00:33:28,000 --> 00:33:31,720 Và về cơ bản những gì nó làm ở đây là nó dùng trong một hàm. 675 00:33:31,720 --> 00:33:33,360 Thông báo, một lần nữa, nó là một chức năng ẩn danh. 676 00:33:33,360 --> 00:33:36,310 Vì vậy, đó là loại mát mẻ bởi vì chúng tôi sử dụng một chức năng vô danh trong một 677 00:33:36,310 --> 00:33:38,950 chức năng ẩn danh mà có thể là một chút lạ. 678 00:33:38,950 --> 00:33:42,270 >> Nhưng nó dùng chức năng đó, mà là về cơ bản nói đến - và cách này 679 00:33:42,270 --> 00:33:47,430 công trình là 5.000 mili giây, tôi muốn bạn thực hiện chức năng đó mà 680 00:33:47,430 --> 00:33:50,830 chỉ kết thúc các phản ứng và viết hey. 681 00:33:50,830 --> 00:33:56,730 Vì vậy, đây cho ấn tượng giống như ngủ, nhưng cách này thực sự 682 00:33:56,730 --> 00:33:59,780 hoạt động là chúng tôi sẽ chạy qua dòng này rất nhanh chóng. 683 00:33:59,780 --> 00:34:01,190 Chúng ta chỉ cần viết một cái gì đó. 684 00:34:01,190 --> 00:34:03,780 Và sau đó chúng tôi cũng sẽ chạy qua dòng này rất nhanh chóng. 685 00:34:03,780 --> 00:34:08,620 Vì vậy, chúng tôi không thực sự đi đợi năm giây. 686 00:34:08,620 --> 00:34:11,370 Chúng ta chỉ cần đi để chạy mã này ngay lập tức. 687 00:34:11,370 --> 00:34:14,219 >> Và sau đó có, một lần nữa, điều này ít vòng lặp sự kiện mà bây giờ có điều này 688 00:34:14,219 --> 00:34:17,570 đăng ký mà về cơ bản chỉ là liên tục đi xung quanh trong một vòng tròn 689 00:34:17,570 --> 00:34:21,620 và nhìn vào đồng hồ trong một đơn Chủ đề và câu nói, có năm giây 690 00:34:21,620 --> 00:34:22,360 thông qua chưa? 691 00:34:22,360 --> 00:34:26,409 Và sau đó khi nó thấy rằng thứ hai tay đã di chuyển như năm giây hoặc 692 00:34:26,409 --> 00:34:29,190 bất cứ điều gì, sau đó nó tỉnh dậy và nói: oh, những gì tôi phải làm gì? 693 00:34:29,190 --> 00:34:30,350 Oh tôi phải chạy mã này. 694 00:34:30,350 --> 00:34:33,110 Và sau đó nó sẽ chạy res.end hey. 695 00:34:33,110 --> 00:34:35,360 >> Vì vậy, một lần nữa, chúng ta sẽ không bao giờ chờ đợi ở đây. 696 00:34:35,360 --> 00:34:38,590 Vì vậy, nó không phải là mã này bên trong chức năng này sẽ mất năm 697 00:34:38,590 --> 00:34:39,900 giây để chạy. 698 00:34:39,900 --> 00:34:43,090 Mã này sẽ chạy khá nhiều ngay lập tức, ít nhất là so với 699 00:34:43,090 --> 00:34:46,139 năm giây mà chúng tôi đã nói chuyện về sớm trước. 700 00:34:46,139 --> 00:34:52,100 >> Vì vậy, chỉ để thấy điều này trong hành động, Tôi có thể làm Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 Và đã làm tôi rối lên một cái gì đó? 702 00:34:55,159 --> 00:34:56,310 Có thể. 703 00:34:56,310 --> 00:34:57,410 Xin lôi. 704 00:34:57,410 --> 00:34:59,530 Hãy xem những gì chúng tôi có thể làm để sửa lỗi này. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 OK. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Vì vậy, chắc chắn sử dụng Node.js. 709 00:35:17,464 --> 00:35:19,440 Tôi chỉ đùa thôi. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Chỉ cần một giây. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 OK. 714 00:35:27,900 --> 00:35:29,130 Tôi biết nó là gì. 715 00:35:29,130 --> 00:35:34,440 >> Vì vậy, vấn đề là trong tab khác của tôi ở đây, tôi đã chạy Node đã có trên 716 00:35:34,440 --> 00:35:36,590 cùng địa chỉ, 1337. 717 00:35:36,590 --> 00:35:43,370 Vì vậy, các lỗi này ném, nếu chúng ta nhìn nó thực sự chặt chẽ, là địa chỉ trong 718 00:35:43,370 --> 00:35:45,180 sử dụng, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Vì vậy, tôi đã được sử dụng ở đây năm 1337. 720 00:35:47,970 --> 00:35:52,210 Vì vậy, nếu tôi đóng cửa này ra, và sau đó tôi bây giờ cố gắng chạy này, hy vọng, tất cả mọi thứ 721 00:35:52,210 --> 00:35:53,210 sẽ tốt đẹp. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Vì vậy, bạn chỉ có thể có một điều loại lắng nghe trên một cổng cùng một lúc. 724 00:35:57,020 --> 00:35:59,660 Một giải pháp khác sẽ được cho tôi chỉ cần chỉnh sửa chương trình và thực hiện 725 00:35:59,660 --> 00:36:02,370 nó giống như một cái gì đó hoặc 1338 như thế. 726 00:36:02,370 --> 00:36:04,100 >> Nhưng bây giờ giấc ngủ đang chạy. 727 00:36:04,100 --> 00:36:06,400 Vì vậy, chúng ta hãy thực sự cố gắng nó ra trong trình duyệt thời gian này bởi vì đó là một 728 00:36:06,400 --> 00:36:09,080 ít không đúng lắm để xem nó trong một thiết bị đầu cuối. 729 00:36:09,080 --> 00:36:13,560 Vì vậy, tôi chỉ cần đi để đi đến đó 127 địa chỉ một lần nữa tại 1337. 730 00:36:13,560 --> 00:36:14,850 Và nếu bạn có thể nhìn thấy nó - 731 00:36:14,850 --> 00:36:18,050 Tôi không biết nếu bạn có thể - nhưng tôi trình duyệt của tham gia một rất, rất dài 732 00:36:18,050 --> 00:36:20,600 thời gian để tải hoặc như năm giây. 733 00:36:20,600 --> 00:36:23,460 >> Và sau đó sau đó, nó cuối cùng kết thúc phản ứng. 734 00:36:23,460 --> 00:36:29,070 Và bạn không thể nhìn thấy nó bởi vì điều được di chuyển hơn một chút, nhưng nếu tôi làm 735 00:36:29,070 --> 00:36:32,500 này nhỏ hơn một chút, bạn có thể thấy nó nói hey. 736 00:36:32,500 --> 00:36:35,130 Vì vậy, tôi có hey, nhưng sau năm giây. 737 00:36:35,130 --> 00:36:38,510 Và nó có thể là một chút sạch hơn để xem nó ở đây trên các thiết bị đầu cuối, vì vậy tôi 738 00:36:38,510 --> 00:36:40,980 sẽ làm một - 739 00:36:40,980 --> 00:36:43,540 chúng ta hãy làm ở đây - 740 00:36:43,540 --> 00:36:48,370 chúng ta hãy làm Curl địa chỉ một lần nữa với năm 1337. 741 00:36:48,370 --> 00:36:50,820 Và tôi chỉ cần loại phải ngồi ở đây trong năm giây. 742 00:36:50,820 --> 00:36:53,760 Nhưng nhận thấy rằng các máy chủ có thể chấp nhận câu trả lời mới. 743 00:36:53,760 --> 00:36:54,940 Vì vậy, nó in hey. 744 00:36:54,940 --> 00:36:58,720 >> Và để giới thiệu này, về cơ bản những gì Tôi có thể làm trong tab khác này - 745 00:36:58,720 --> 00:37:02,640 vì vậy hãy nói rằng tôi làm điều này trong một tab khác, Tôi sẽ làm Curl và cùng 746 00:37:02,640 --> 00:37:03,780 điều một lần nữa. 747 00:37:03,780 --> 00:37:06,600 Và tôi sẽ cố gắng để đá những kẻ ra cùng một lúc. 748 00:37:06,600 --> 00:37:08,260 Vì vậy, tôi sẽ làm điều này, và tôi sẽ chạy đua trên đây và tôi 749 00:37:08,260 --> 00:37:09,650 sẽ làm điều đó một lần nữa. 750 00:37:09,650 --> 00:37:14,030 >> Và chúng ta hãy làm cho nó để bạn có thể thấy cả hai. 751 00:37:14,030 --> 00:37:20,250 Đó là một trong in hey và một trong đó in hey tất cả các con đường ở - 752 00:37:20,250 --> 00:37:22,550 chúng ta hãy làm thí nghiệm đó một lần nữa. 753 00:37:22,550 --> 00:37:25,100 Trên thực tế, chúng ta hãy sử dụng này lừa, nếu đó là OK. 754 00:37:25,100 --> 00:37:30,520 >> Vì vậy, tôi sẽ sử dụng một điều vỏ cho phép tôi về cơ bản chạy hai bản sao 755 00:37:30,520 --> 00:37:32,630 của chương trình này song song. 756 00:37:32,630 --> 00:37:36,070 Vì vậy, nó sẽ chạy chương trình đầu tiên và chương trình thứ hai song song. 757 00:37:36,070 --> 00:37:39,060 Vì vậy, bây giờ nếu tôi nhấn Enter, nó sẽ để thực hiện yêu cầu đó khá nhiều 758 00:37:39,060 --> 00:37:40,570 ngay lập tức cùng một lúc. 759 00:37:40,570 --> 00:37:42,620 Vì vậy, hãy cho một shot. 760 00:37:42,620 --> 00:37:44,950 >> Vì vậy, bây giờ thấy nó nói hai quá trình. 761 00:37:44,950 --> 00:37:50,630 Và nếu bạn tò mò, mà 27.000 số về cơ bản là quá trình ID. 762 00:37:50,630 --> 00:37:52,940 Và sau đó thông báo, họ in hey cùng một lúc. 763 00:37:52,940 --> 00:37:56,820 Nó không giống như chúng tôi đã phải chờ năm giây cho một và sau đó sau đó, 764 00:37:56,820 --> 00:37:59,640 năm giây sau đó có lần thứ hai. 765 00:37:59,640 --> 00:38:03,300 Vì vậy, đó là loại, trong một số cách, nó không thực sự chứng minh, nhưng nó 766 00:38:03,300 --> 00:38:07,390 bằng chứng trực quan mà nó không chỉ là như chờ đợi năm giây và ngăn chặn 767 00:38:07,390 --> 00:38:08,960 toàn bộ chủ đề. 768 00:38:08,960 --> 00:38:10,720 OK mát mẻ. 769 00:38:10,720 --> 00:38:17,850 >> Vì vậy, Aaron hỏi một câu hỏi trước đó là, tốt những gì nếu chúng ta làm điều gì đó - 770 00:38:17,850 --> 00:38:18,735 Vâng? 771 00:38:18,735 --> 00:38:19,051 >> ĐỐI TƯỢNG: Chờ. 772 00:38:19,051 --> 00:38:21,585 Làm thế nào là khác nhau từ printf đệm, mặc dù? 773 00:38:21,585 --> 00:38:23,010 Không nó sẽ tự động làm điều đó? 774 00:38:23,010 --> 00:38:25,390 Tại sao chúng ta phải lo lắng về nó? 775 00:38:25,390 --> 00:38:26,555 >> Kevin Schmid: Oh, có thể bạn nói rằng một lần nữa? 776 00:38:26,555 --> 00:38:29,510 >> ĐỐI TƯỢNG: Không thích printf đệm làm điều chính xác giống nhau không? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN Schmid: Các bộ đệm printf? 778 00:38:31,280 --> 00:38:32,753 >> ĐỐI TƯỢNG: Vâng. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Không phải trong một trong những câu đố họ nói về làm thế nào nếu bạn phải printf 781 00:38:40,609 --> 00:38:42,899 một cái gì đó và sau đó có nó tạm dừng một thứ hai, và sau đó bạn có nó vòng mười 782 00:38:42,899 --> 00:38:46,530 Đôi khi, nó sẽ đợi mười giây và sau đó printf tất cả mọi thứ lại với nhau? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN Schmid: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> ĐỐI TƯỢNG: Có làm như vậy điều đó trong trường hợp này? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN Schmid: Vậy câu hỏi là về cơ bản là một trong những câu đố cũ 786 00:38:52,630 --> 00:38:57,200 hoặc một cái gì đó, có một câu hỏi mà về cơ bản nếu bạn nói in f 10 787 00:38:57,200 --> 00:39:01,490 mọi thứ ở một thời gian và sau đó ngủ như trong quá trình in ấn những người ra, 788 00:39:01,490 --> 00:39:04,850 vào cuối vì lý do nào, nó sẽ chỉ đổ tất cả những người ra trên màn hình. 789 00:39:04,850 --> 00:39:06,740 Do đó, có hai loại khác nhau khái niệm ở đây. 790 00:39:06,740 --> 00:39:10,400 >> Vì vậy, tôi đoán có một điều rằng, trong này trường hợp, chúng tôi đang làm việc với hai khác nhau 791 00:39:10,400 --> 00:39:13,510 loại người hỏi máy chủ cho những thứ cùng một lúc. 792 00:39:13,510 --> 00:39:17,455 Và lý do mà các loại printf của chờ đợi như thế và bãi tất cả ra ngoài 793 00:39:17,455 --> 00:39:21,760 cùng một lúc là có liên quan nhiều hơn đến cách printf loại - 794 00:39:21,760 --> 00:39:25,100 do đó, cách printf thực sự thực hiện là nó về cơ bản đã 795 00:39:25,100 --> 00:39:28,850 nói chuyện với các hệ điều hành để viết những công cụ để giao diện điều khiển. 796 00:39:28,850 --> 00:39:33,460 Vì vậy, nó không muốn làm tất cả điều đó thứ ngay lập tức khi bạn nói printf 797 00:39:33,460 --> 00:39:36,260 một số chuỗi bởi vì đó có thể có tốn kém nếu nó phải 798 00:39:36,260 --> 00:39:37,340 làm điều đó mỗi lần. 799 00:39:37,340 --> 00:39:41,530 >> Vì vậy, nếu bạn làm printf hey, chương trình của bạn có thể không thực sự in mà 800 00:39:41,530 --> 00:39:43,040 ngay lập tức để giao diện điều khiển. 801 00:39:43,040 --> 00:39:46,080 Nó có thể nói, OK, tôi đã viết nó. 802 00:39:46,080 --> 00:39:49,570 Và sau đó loại chờ đợi cho bạn để cung cấp cho nó nhiều hơn một chút trước khi thực sự 803 00:39:49,570 --> 00:39:51,380 viết nó ra để giao diện điều khiển. 804 00:39:51,380 --> 00:39:54,040 >> Vì vậy, lý do mà đó là trường hợp - 805 00:39:54,040 --> 00:39:56,450 và đó là loại không liên quan đến giấc ngủ - 806 00:39:56,450 --> 00:40:00,060 là giấc ngủ là loại chỉ tiêm ở đó để chứng minh 807 00:40:00,060 --> 00:40:02,480 thực tế là nó không viết nó đồng bộ. 808 00:40:02,480 --> 00:40:06,210 Nhưng lý do cho điều đó chỉ là hiệu suất để bạn không cần phải 809 00:40:06,210 --> 00:40:08,920 làm cho nhiều địa chỉ liên lạc để hệ điều hành. 810 00:40:08,920 --> 00:40:12,300 >> Nhưng ở đây, những gì chúng tôi đang thực sự cố gắng để làm với điều ngủ đây chỉ là chương trình 811 00:40:12,300 --> 00:40:17,730 khi chúng tôi có hai người ghé thăm trang web này, nó sẽ không đưa 812 00:40:17,730 --> 00:40:22,310 chúng trong một đường, nơi nó sẽ nói Tôi có để giúp bạn, và sau đó khi tôi 813 00:40:22,310 --> 00:40:25,350 hoàn toàn hoàn thành giúp bạn sau này năm giây, sau đó tôi sẽ 814 00:40:25,350 --> 00:40:26,750 chuyển sang người kế tiếp. 815 00:40:26,750 --> 00:40:29,515 Vì vậy, yêu cầu người đầu tiên của không tie lên rằng vòng lặp sự kiện 816 00:40:29,515 --> 00:40:31,610 nếu có ý nghĩa. 817 00:40:31,610 --> 00:40:34,980 >> Nhưng đây thực sự là một ví dụ của cái gì đó sẽ buộc 818 00:40:34,980 --> 00:40:36,090 các vòng lặp sự kiện. 819 00:40:36,090 --> 00:40:39,130 Vì vậy, đây là một chức năng khủng khiếp để tính toán mức Fibonacci thứ n. 820 00:40:39,130 --> 00:40:43,510 Đó là nghĩa đen cách tồi tệ hơn bạn có thể tính số Fibonacci thứ n. 821 00:40:43,510 --> 00:40:48,480 Và điều này thực sự chỉ để thừa nhận này đến từ đâu, nơi 822 00:40:48,480 --> 00:40:49,330 có thực sự - 823 00:40:49,330 --> 00:40:53,230 Ý tôi là, bạn có thể cố gắng đi tìm nó - nhưng có như một blog rất dài 824 00:40:53,230 --> 00:40:54,130 đăng bài mà ai đó đã viết. 825 00:40:54,130 --> 00:40:55,660 Nó giống như một trong những điều Reddit. 826 00:40:55,660 --> 00:40:59,650 Nhưng ai đó chỉ trích Node.js, và họ đã sử dụng điều này như là một ví dụ. 827 00:40:59,650 --> 00:41:03,700 Vì vậy, tôi loại muốn chỉ cho bạn thấy hai quan điểm khác nhau chỉ để có được 828 00:41:03,700 --> 00:41:07,320 một sự hiểu biết chung về các khái niệm sau hai điều này. 829 00:41:07,320 --> 00:41:13,050 >> Nhưng điều này được chọn là chỉ là một khủng khiếp, tính toán khủng khiếp không hiệu quả 830 00:41:13,050 --> 00:41:15,940 cách chuyên sâu để tính toán số Fibonacci thứ n. 831 00:41:15,940 --> 00:41:21,180 Vì vậy, cũng giống như một mặt lưu ý, tại sao nó khủng khiếp như trong một cách nào? 832 00:41:21,180 --> 00:41:23,210 Vâng? 833 00:41:23,210 --> 00:41:25,130 >> ĐỐI TƯỢNG: Giả sử bạn bắt đầu với 1.000. 834 00:41:25,130 --> 00:41:27,050 1000 chia tách thành 999 và 998. 835 00:41:27,050 --> 00:41:28,970 Mỗi này chia tách thành hai điều. 836 00:41:28,970 --> 00:41:30,890 Mỗi này chia tách thành hai điều. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN Schmid: Đúng vậy. 838 00:41:31,355 --> 00:41:32,400 >> ĐỐI TƯỢNG: Tất cả các con đường xuống. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN Schmid: Chính xác. 840 00:41:32,840 --> 00:41:37,330 Vì vậy chỉ cần lặp lại cho máy ảnh, nếu tôi gọi fib trên như 1.000 hoặc một cái gì đó 841 00:41:37,330 --> 00:41:41,810 như thế, rõ ràng là không ít hơn hoặc bằng một vì vậy tôi sẽ 842 00:41:41,810 --> 00:41:46,040 đi đến khác trường hợp này, và sau đó tôi sẽ gọi fib 999 cộng với fib 998. 843 00:41:46,040 --> 00:41:50,290 Và sau đó khá nhiều tất cả điều đó công việc mà fib 999 không là 844 00:41:50,290 --> 00:41:52,950 loại ở cấp độ này. 845 00:41:52,950 --> 00:41:55,620 Nếu bạn đi xuống, nó thậm chí còn dư thừa hơn hơn thế, nhưng nếu bạn chỉ 846 00:41:55,620 --> 00:42:01,390 nghĩ tính toán fib 998 được chúng tôi khá gần với fib 999. 847 00:42:01,390 --> 00:42:05,860 Vì vậy, chúng tôi thực sự cần được nhiều hơn một chút thông minh về cách chúng tôi loại tái sử dụng 848 00:42:05,860 --> 00:42:07,580 này, nhưng chúng tôi không tái sử dụng những điều này ở tất cả. 849 00:42:07,580 --> 00:42:11,860 Vì vậy, bạn có thể tưởng tượng khổng lồ này, cây khổng lồ đó chỉ là khủng khiếp. 850 00:42:11,860 --> 00:42:12,940 >> Nhưng dù sao, OK. 851 00:42:12,940 --> 00:42:14,040 Vì vậy, đó là lời nói dối. 852 00:42:14,040 --> 00:42:15,530 Nó chỉ mất một thời gian để chạy. 853 00:42:15,530 --> 00:42:16,510 Vâng? 854 00:42:16,510 --> 00:42:17,760 >> ĐỐI TƯỢNG: [nghe được]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN Schmid: Oh, có thể bạn nhắc lại câu hỏi? 857 00:42:22,481 --> 00:42:23,731 >> ĐỐI TƯỢNG: [nghe được]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN Schmid: Oh vì vậy đây là chỉ cần mã đó sẽ là loại trên 860 00:42:33,990 --> 00:42:34,850 phía máy chủ. 861 00:42:34,850 --> 00:42:38,100 Vì vậy, đây sẽ không được tìm thấy trong trình duyệt hoặc bất cứ điều gì. 862 00:42:38,100 --> 00:42:42,160 Đó là cơ bản những gì chúng tôi có là khi người sử dụng ở đây khá nhiều làm cho 863 00:42:42,160 --> 00:42:45,300 yêu cầu của họ một lần nữa, khi chúng ta loại tạo một yêu cầu, chúng tôi sẽ gọi 864 00:42:45,300 --> 00:42:47,040 chức năng này ở phía máy chủ. 865 00:42:47,040 --> 00:42:50,480 Và sau đó chúng tôi sẽ có được kết quả trở lại từ gọi là chức năng. 866 00:42:50,480 --> 00:42:52,460 Và sau đó chúng tôi sẽ chỉ cần in nó cho người dùng. 867 00:42:52,460 --> 00:42:54,580 Vì vậy, người dùng không thực sự giải quyết với chức năng này quá nhiều. 868 00:42:54,580 --> 00:42:57,270 >> Là câu hỏi? 869 00:42:57,270 --> 00:42:58,470 Điều đó có ý nghĩa? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Mát mẻ. 872 00:43:00,930 --> 00:43:04,240 >> Vì vậy, một lần nữa, chúng tôi làm toàn bộ res.writeHead này điều mà chúng tôi in ra 873 00:43:04,240 --> 00:43:05,150 tiêu đề. 874 00:43:05,150 --> 00:43:09,730 Và sau đó tôi sẽ phản ứng bằng cách làm con số kỳ diệu là fib 45. 875 00:43:09,730 --> 00:43:12,100 Vì vậy, chúng ta hãy chỉ chạy máy chủ này. 876 00:43:12,100 --> 00:43:15,190 Vì vậy, tôi sẽ làm một fib.js. Node 877 00:43:15,190 --> 00:43:17,340 Vì vậy bây giờ máy chủ fib của tôi đang chạy. 878 00:43:17,340 --> 00:43:21,790 >> Và sau đó ở đây, tôi sẽ để làm một trong những. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Vì vậy, tôi chỉ muốn nói, Curl. 881 00:43:24,960 --> 00:43:32,226 Vì vậy, nó sẽ mất một thời gian ngắn nhưng hy vọng nó sẽ sớm kết thúc và 882 00:43:32,226 --> 00:43:35,660 nó sẽ in ra 45 mà Fibonacci số. 883 00:43:35,660 --> 00:43:36,910 >> ĐỐI TƯỢNG: [nghe được]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN Schmid: Nó sẽ được thực hiện khá sớm. 886 00:43:42,050 --> 00:43:43,780 Vì vậy, nó phải mất 5-6 giây. 887 00:43:43,780 --> 00:43:48,570 Tôi không biết đó chỉ là động cơ V8 siêu nhanh, nhưng trong mọi trường hợp, đây là một 888 00:43:48,570 --> 00:43:52,700 ví dụ rất ngắn và cố không thanh nha của một không tầm thường 889 00:43:52,700 --> 00:43:54,200 tính toán. 890 00:43:54,200 --> 00:43:56,700 Vì vậy, sau một thời gian, nó không có được điều này. 891 00:43:56,700 --> 00:44:02,130 >> Nhưng bây giờ, nếu tôi làm điều đó cùng một loại thí nghiệm như trước khi mà tôi làm 892 00:44:02,130 --> 00:44:04,010 hai yêu cầu cùng một lúc? 893 00:44:04,010 --> 00:44:06,990 Vì vậy, ở đây tôi sẽ đến một Curl trên địa chỉ đó, và tôi sẽ 894 00:44:06,990 --> 00:44:08,260 để làm khác Curl. 895 00:44:08,260 --> 00:44:12,070 Và hãy nhớ, khi chúng tôi đã làm điều này cho ngủ máy chủ, khi chúng tôi về cơ bản đã có nó 896 00:44:12,070 --> 00:44:15,320 sau năm giây, họ khá nhiều cả hai trở lại ngay 897 00:44:15,320 --> 00:44:16,380 khoảng thời gian đó. 898 00:44:16,380 --> 00:44:18,650 Vì vậy, nó không được đặc biệt gắn lên. 899 00:44:18,650 --> 00:44:20,290 >> Nhưng chúng ta hãy thử nó ngay bây giờ. 900 00:44:20,290 --> 00:44:22,370 OK, vì vậy chúng tôi có hai quá trình của chúng tôi. 901 00:44:22,370 --> 00:44:24,210 Nhớ đó là những quá trình ID. 902 00:44:24,210 --> 00:44:25,900 Điều này là có được một chút vụng về trong khi chúng tôi đứng. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Vì vậy, hãy cứ ở lại và chờ đợi. 905 00:44:35,360 --> 00:44:37,090 >> Vì vậy, một trong số họ nên đến trở lại sau như - 906 00:44:37,090 --> 00:44:39,190 OK, vì vậy một trong trở lại. 907 00:44:39,190 --> 00:44:43,570 Nhưng sau đó tại sao không phải là thứ hai một trở lại chỉ được nêu ra? 908 00:44:43,570 --> 00:44:44,389 Vâng? 909 00:44:44,389 --> 00:44:49,280 >> ĐỐI TƯỢNG: Các máy chủ không thể làm bất cứ điều gì trong khi nó tính toán rằng số lượng lớn. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN Schmid: Đúng vậy. 911 00:44:51,620 --> 00:44:55,395 Vì vậy, câu trả lời là chỉ có máy chủ thực sự không thể làm bất cứ điều gì trong khi 912 00:44:55,395 --> 00:44:57,460 nó tính toán con số Fibonacci. 913 00:44:57,460 --> 00:44:59,360 Vì vậy, bây giờ tôi chỉ có hai thứ tôi trở lại. 914 00:44:59,360 --> 00:45:03,210 Nhưng tôi đoán chỉ để suy nghĩ về mã nhiều hơn một chút, làm thế nào nó làm việc 915 00:45:03,210 --> 00:45:05,030 và tất cả mọi thứ. 916 00:45:05,030 --> 00:45:11,750 >> Vì vậy, chức năng này ở đây là mã mà Tôi đã nói với máy chủ này để chạy khi nó 917 00:45:11,750 --> 00:45:14,100 nhận được yêu cầu mới đến. 918 00:45:14,100 --> 00:45:17,940 Vì vậy, nó chỉ sẽ chạy qua này toàn bộ mã, và sau đó nó sẽ đi 919 00:45:17,940 --> 00:45:21,120 sao cho vòng lặp sự kiện và sau đó tiếp tục kiểm tra các sự kiện mới. 920 00:45:21,120 --> 00:45:23,670 Vì vậy, về cơ bản những gì chúng tôi đã xảy ra là máy chủ là 921 00:45:23,670 --> 00:45:25,080 lắng nghe những điều mới. 922 00:45:25,080 --> 00:45:28,070 Người đầu tiên yêu cầu 45 là gì. 923 00:45:28,070 --> 00:45:30,490 Chúng tôi chạy mã này sẽ được tính toán. 924 00:45:30,490 --> 00:45:33,420 Mã này có khoảng năm đến sáu giây để chạy. 925 00:45:33,420 --> 00:45:36,990 Sau đó chúng tôi quay trở lại vòng lặp sự kiện và kiểm tra các yêu cầu mới. 926 00:45:36,990 --> 00:45:42,700 >> Vì vậy, đây là một ví dụ như thế nào, nếu bạn có những điều được gọi là tính toán 927 00:45:42,700 --> 00:45:48,140 ràng buộc, hoặc sử dụng rất nhiều tính toán, không quyền lực, nhưng như thế là 928 00:45:48,140 --> 00:45:50,260 tính toán chuyên sâu - 929 00:45:50,260 --> 00:45:54,080 Tôi đoán một điều để nói về việc này là mà chức năng này được làm hoàn toàn, 930 00:45:54,080 --> 00:45:56,310 đối với hầu hết các phần, khá hữu ích ngay làm việc. 931 00:45:56,310 --> 00:45:59,970 Toàn bộ thời gian gọi lại chức năng được chạy, nó đã được khá 932 00:45:59,970 --> 00:46:03,670 nhiều dành phần lớn thời gian của mình chỉ tính toán con số đó thứ n Fibonacci. 933 00:46:03,670 --> 00:46:05,930 >> Nhưng chúng tôi chỉ có một thread để đối phó với. 934 00:46:05,930 --> 00:46:10,270 Trong mô hình Apache, khi hai người thực hiện các yêu cầu để có được fib 45, chúng tôi 935 00:46:10,270 --> 00:46:11,610 sẽ có hai chủ đề khác nhau. 936 00:46:11,610 --> 00:46:15,060 Và sau đó công việc của hệ điều hành đã có, hoặc cấp độ người dùng 937 00:46:15,060 --> 00:46:18,660 mã quản lý các chủ đề, sẽ đã được để cắt đó lên trên 938 00:46:18,660 --> 00:46:23,060 CPU, hoặc thậm chí nếu bạn có nhiều CPU, phân phối chúng đều trên khắp các CPU 939 00:46:23,060 --> 00:46:26,130 để cả hai đều kết thúc khoảng cùng một lúc. 940 00:46:26,130 --> 00:46:31,120 >> Vì vậy, chỉ để cho bạn thấy làm thế nào chúng ta có thể sắp xếp của - và điều này không phải là sự hoàn hảo 941 00:46:31,120 --> 00:46:34,280 giải pháp, nhưng loại như thế nào chúng ta có thể làm cho một trở lại đây và làm 942 00:46:34,280 --> 00:46:35,880 tốt hơn một chút. 943 00:46:35,880 --> 00:46:41,540 Vì vậy, những gì tôi có ở đây một chương trình gọi là Fib C. Và điều này về cơ bản sử dụng 944 00:46:41,540 --> 00:46:45,690 một một trong những mô-đun được gọi là Node Quá trình trẻ em Module. 945 00:46:45,690 --> 00:46:49,210 Vì vậy, tôi đã bao gồm rằng vào loại hàng đầu giống như tôi sẽ làm một bảng bao gồm 946 00:46:49,210 --> 00:46:51,230 process.h trẻ em hoặc một cái gì đó. 947 00:46:51,230 --> 00:46:56,210 Bây giờ tôi có quyền truy cập vào biến CP này trong đó có tất cả các chức năng của tôi. 948 00:46:56,210 --> 00:47:01,810 >> Vì vậy, bây giờ những gì tôi đang làm trong phản ứng này xử lý là tôi đang chạy chương trình này 949 00:47:01,810 --> 00:47:04,100 dot giảm fib 45. 950 00:47:04,100 --> 00:47:06,820 Vì vậy, những gì tôi đã làm - và tôi chỉ cần đi bước ra khỏi chương trình này cho một 951 00:47:06,820 --> 00:47:07,620 chút - 952 00:47:07,620 --> 00:47:11,060 là tôi đã viết một chương trình C về cơ bản tính toán 953 00:47:11,060 --> 00:47:12,630 số Fibonacci thứ n. 954 00:47:12,630 --> 00:47:15,960 Vì vậy, đây chỉ là một chương trình tôi đã viết trong C mà tính này. 955 00:47:15,960 --> 00:47:19,040 Tôi có thể biên dịch nó, và tôi có thể chạy nó ở dòng lệnh. 956 00:47:19,040 --> 00:47:22,150 Và nó sẽ tính toán Số 45 Fibonacci. 957 00:47:22,150 --> 00:47:24,510 >> Vì vậy, nhận thấy nó chỉ mất khá nhiều như lâu dài. 958 00:47:24,510 --> 00:47:28,240 Tôi có thể có thể đã sử dụng dấu gạch ngang 03 tối ưu hóa nó hay như thế, 959 00:47:28,240 --> 00:47:31,050 nhưng tôi chỉ cần làm như thường xuyên cài đặt trình biên dịch. 960 00:47:31,050 --> 00:47:33,260 Và nó in nó ra. 961 00:47:33,260 --> 00:47:36,830 >> Nhưng bây giờ, những gì tôi loại làm gì? 962 00:47:36,830 --> 00:47:39,800 Oh xin lỗi, tập tin sai. 963 00:47:39,800 --> 00:47:42,800 Vì vậy, tôi làm những thứ tương tự với tiêu đề như trước. 964 00:47:42,800 --> 00:47:45,780 Sau đó, tôi làm cp.exec này. 965 00:47:45,780 --> 00:47:49,460 Vì vậy, điều này sẽ làm điều đó là của sẽ chạy chương trình này. 966 00:47:49,460 --> 00:47:51,960 Tuy nhiên, cách làm việc này là nó sẽ không phải chờ đợi 967 00:47:51,960 --> 00:47:53,400 chương trình để kết thúc. 968 00:47:53,400 --> 00:47:56,000 Chỉ về cơ bản nó nói thực hiện chương trình này. 969 00:47:56,000 --> 00:47:58,700 Vì vậy, về cơ bản loại này vào lệnh loại kịp thời. 970 00:47:58,700 --> 00:48:02,350 >> Và sau đó, khi bạn đang thực hiện với nó, chạy chức năng này. 971 00:48:02,350 --> 00:48:04,800 Vì vậy, bây giờ chúng tôi loại được điều này toàn phục hồi điều của 972 00:48:04,800 --> 00:48:06,750 như chúng tôi không chờ đợi. 973 00:48:06,750 --> 00:48:08,530 Điều đó có loại có ý nghĩa? 974 00:48:08,530 --> 00:48:08,990 Vâng? 975 00:48:08,990 --> 00:48:11,060 >> ĐỐI TƯỢNG: [nghe được]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN Schmid: Vì vậy, đây sẽ thực sự mở ra một quy trình mới để làm điều đó. 977 00:48:13,610 --> 00:48:19,310 Vì vậy, đây thực sự là, trong một số cách, ác, không phải là siêu ác, nhưng nó là 978 00:48:19,310 --> 00:48:22,990 quan trọng để nói rằng đây là loại sẽ trở lại, một mặt, Apache 979 00:48:22,990 --> 00:48:26,450 mô hình mà chúng tôi làm chủ đề và quy trình cho mỗi yêu cầu hoặc 980 00:48:26,450 --> 00:48:29,280 quy trình cho mỗi yêu cầu. 981 00:48:29,280 --> 00:48:32,090 Vì vậy, đây là loại tương tự những gì Apache không. 982 00:48:32,090 --> 00:48:35,110 Trong một số trường hợp, nó sẽ chỉ sử dụng một mới sợi, mà là nhiều hơn một chút ánh sáng 983 00:48:35,110 --> 00:48:39,040 trọng lượng hơn một quá trình, nhưng Apache có thể kết thúc forking một quá trình mới 984 00:48:39,040 --> 00:48:43,370 đó là loại gì chúng tôi làm ở đây ngầm bằng cách làm dấu chấm dấu gạch chéo fib 45. 985 00:48:43,370 --> 00:48:48,690 >> Và sau đó trong trường hợp đó, chúng tôi loại chịu các chi phí tương tự của các quá trình. 986 00:48:48,690 --> 00:48:50,710 Vì vậy, đây chỉ là một điều bạn có thể làm. 987 00:48:50,710 --> 00:48:52,600 Nhưng chỉ để hiển thị loại này đang chạy. 988 00:48:52,600 --> 00:48:57,120 Và nói chuyện này chỉ là thực sự nhằm mục đích trình bày các loại chương trình như một 989 00:48:57,120 --> 00:49:00,710 cách để thể hiện quan điểm khác nhau về làm thế nào để thiết kế các máy chủ như thế. 990 00:49:00,710 --> 00:49:08,300 Vì vậy, đây đang chạy, và sau đó nếu như họ làm này một lần nữa, tôi có hai quá trình ID. 991 00:49:08,300 --> 00:49:10,320 >> Chúng ta hãy chỉ nói về điều cần chỉ ra. 992 00:49:10,320 --> 00:49:11,980 Vì vậy, nhận thấy rằng họ đang từng bước. 993 00:49:11,980 --> 00:49:12,700 Đó là mát mẻ. 994 00:49:12,700 --> 00:49:15,140 Bởi vì nó là 27.122 trước. 995 00:49:15,140 --> 00:49:18,580 Nhưng thông báo bây giờ, họ đã trở lại tại một khoảng thời gian tương tự. 996 00:49:18,580 --> 00:49:23,960 >> Và bây giờ, một câu hỏi hay để hỏi về tại sao là các trường hợp là, có công việc 997 00:49:23,960 --> 00:49:27,590 là ngay bây giờ để loại làm những việc này loại chơi công bằng với nhau 998 00:49:27,590 --> 00:49:31,350 khác, hai trường hợp này của dot dấu gạch chéo fib 45 mà tôi chạy 999 00:49:31,350 --> 00:49:32,880 hoặc Node chạy? 1000 00:49:32,880 --> 00:49:36,940 Ai loại làm cho nó công bằng khi họ cả được loại cân thời gian chạy? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> ĐỐI TƯỢNG: [nghe được]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN Schmid: Vâng. 1004 00:49:44,620 --> 00:49:49,740 Vì vậy, về cơ bản, khi tôi làm dấu chấm dấu gạch chéo fib 45 hay như thế, bây giờ nó 1005 00:49:49,740 --> 00:49:53,750 loại đến hệ điều hành xử lý thời gian chạy của chương trình đó. 1006 00:49:53,750 --> 00:49:56,920 Và bây giờ nó có thể lên lịch cho chúng trên các CPU khác nhau hoặc nó 1007 00:49:56,920 --> 00:49:58,330 có thể lên lịch cho chúng. 1008 00:49:58,330 --> 00:50:01,870 Nó có thể cắt thời gian một trong đó CPU được hay rằng họ nhận được 1009 00:50:01,870 --> 00:50:03,330 để chạy trên một CPU. 1010 00:50:03,330 --> 00:50:05,620 Vì vậy, đó là ý tưởng đằng sau đó. 1011 00:50:05,620 --> 00:50:07,220 Điều đó có ý nghĩa với tất cả mọi người? 1012 00:50:07,220 --> 00:50:10,950 Vì vậy bây giờ Node là không thực sự chơi một một phần trong phân chia các nhiệm vụ. 1013 00:50:10,950 --> 00:50:12,200 OK. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Vì vậy, đó là gần như nó cho ví dụ. 1016 00:50:17,840 --> 00:50:23,370 Tôi chỉ muốn thể hiện điều thêm một bởi vì rất nhiều này cho đến nay đã được 1017 00:50:23,370 --> 00:50:27,350 không hoàn toàn siêu thực tế trong một số trường hợp. 1018 00:50:27,350 --> 00:50:30,970 Tôi có thể tưởng tượng về nhà sau này nói chuyện và một cái gì đó và nói như thế nào, 1019 00:50:30,970 --> 00:50:35,710 tôi cũng loại ra khỏi cuộc nói chuyện đó mà Tôi có thể làm cho một máy chủ Fibonacci 1020 00:50:35,710 --> 00:50:37,360 dự án cuối cùng của tôi. 1021 00:50:37,360 --> 00:50:40,770 Vì vậy, đây chỉ là loại một ví dụ nữa mà hy vọng sẽ được - 1022 00:50:40,770 --> 00:50:44,620 có thể không, nhưng có lẽ - nhiều hơn một chút loại có liên quan đến các dự án cuối cùng và 1023 00:50:44,620 --> 00:50:46,440 suy nghĩ trước cho những việc như thế. 1024 00:50:46,440 --> 00:50:48,870 >> Vì vậy, đây là chat.js. 1025 00:50:48,870 --> 00:50:52,290 Vì vậy, đây là loại giống như một số mẫu mã phía máy chủ mà bạn có thể sử dụng để 1026 00:50:52,290 --> 00:50:55,700 thiết lập một máy chủ trò chuyện nhỏ như bạn có thể đã nhìn thấy trên 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat hoặc bất cứ điều gì. 1028 00:50:56,630 --> 00:50:59,990 Vì vậy, tôi không nói rằng điều này giống như Facebook Trò chuyện, nhưng đây là loại 1029 00:50:59,990 --> 00:51:06,230 như một tốt - có thể không tốt, nhưng có lẽ tốt - điểm bắt đầu cho một cuộc trò chuyện 1030 00:51:06,230 --> 00:51:08,560 máy chủ cho website của bạn cho một dự án cuối cùng. 1031 00:51:08,560 --> 00:51:11,040 Vì vậy, chúng ta hãy nhìn vào những gì nó đang làm. 1032 00:51:11,040 --> 00:51:15,500 >> Vì vậy, chúng tôi đang nhận được điều đặc biệt này ở đầu, điều này var SIO 1033 00:51:15,500 --> 00:51:17,050 bằng yêu cầu Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Vì vậy, đây là một điều mà nó không thực sự đi kèm với 1035 00:51:20,280 --> 00:51:22,300 Nút nhưng bạn có thể cài đặt nó. 1036 00:51:22,300 --> 00:51:23,480 Đó là một mô-đun Node. 1037 00:51:23,480 --> 00:51:25,670 Vì vậy, nó chỉ giống như một số mở rộng Node. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO thực sự là thực sự loại mát mẻ. 1039 00:51:29,220 --> 00:51:32,550 Đây là một khái niệm trừu tượng mà về cơ bản những gì nó là là nó cho phép bạn 1040 00:51:32,550 --> 00:51:35,770 có dòng này của truyền thông giữa một trang web 1041 00:51:35,770 --> 00:51:39,430 trình duyệt và máy chủ web. 1042 00:51:39,430 --> 00:51:45,250 Vì vậy, phần lớn cho đến nay, chúng tôi đã có những rất nhanh một hoặc hai giây 1043 00:51:45,250 --> 00:51:48,790 thông tin liên lạc thứ hai giữa một trang web trình duyệt và máy chủ web. 1044 00:51:48,790 --> 00:51:53,310 Vì vậy, nó là cơ bản đi đến google.com, get các công cụ, gửi nó trở lại, và sau đó 1045 00:51:53,310 --> 00:51:53,770 chúng tôi đang thực hiện. 1046 00:51:53,770 --> 00:51:56,560 Chúng tôi sẽ không bao giờ nói chuyện một lần nữa cho đến khi sử dụng các loại trong một cái gì đó khác. 1047 00:51:56,560 --> 00:52:01,090 >> Nhưng những gì Socket.IO và loại tương tự điều - và SocketIO thực sự là một 1048 00:52:01,090 --> 00:52:03,940 trong những điều mà được xây dựng trên như WebSocket được sắp xếp của có sẵn 1049 00:52:03,940 --> 00:52:06,440 như một phần của HTML5 - 1050 00:52:06,440 --> 00:52:09,620 cho phép bạn có điều này đối thoại tiếp tục. 1051 00:52:09,620 --> 00:52:13,990 Và điều này là rất hữu ích trong một máy chủ trò chuyện là điều mà vì nó là 1052 00:52:13,990 --> 00:52:17,390 loại giống như một cuộc đối thoại liên tục trong một số cách bởi vì nếu bạn đang trò chuyện 1053 00:52:17,390 --> 00:52:21,540 với ai đó, bạn có thể chỉ cần gửi một tin xuống các đường ống, và sau đó là 1054 00:52:21,540 --> 00:52:23,940 máy chủ có thể gửi tin nhắn xuống đường ống để người khác bạn 1055 00:52:23,940 --> 00:52:24,520 trò chuyện với. 1056 00:52:24,520 --> 00:52:26,903 Và sau đó bạn có thể có này trao đổi như thế. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Vì vậy, đó là loại gì SocketIO là tốt cho. 1059 00:52:32,850 --> 00:52:38,400 Lý do mà SocketIO sử dụng WebSockets như một điều là trong 1060 00:52:38,400 --> 00:52:43,980 Ngoài WebSockets chỉ đơn giản cũ, nó cũng thực hiện một số thủ thuật cơ bản 1061 00:52:43,980 --> 00:52:45,610 làm cho nó tương thích trình duyệt. 1062 00:52:45,610 --> 00:52:50,040 Vì vậy, các trình duyệt như Internet Explorer tiếc là không hỗ trợ WebSockets 1063 00:52:50,040 --> 00:52:50,810 phải ra khỏi hộp. 1064 00:52:50,810 --> 00:52:55,290 Vì vậy, nó sử dụng một số loại khác mát mẻ gọn gàng việc với Adobe Flash cho phép 1065 00:52:55,290 --> 00:52:57,170 bạn có hỗ trợ qua trình duyệt. 1066 00:52:57,170 --> 00:52:58,800 Vì vậy, đó là thực sự hữu ích. 1067 00:52:58,800 --> 00:53:02,440 >> Và trên thực tế, tôi biết tôi là loại chạy trên thời gian ở đây, nhưng CS50 1068 00:53:02,440 --> 00:53:08,490 Thảo luận, có bao giờ bạn nhìn thấy một cái gì đó như thế, tôi không biết, trống vậy và như vậy là 1069 00:53:08,490 --> 00:53:11,030 trả lời bài viết này hoặc một cái gì đó như vậy, tính năng này? 1070 00:53:11,030 --> 00:53:12,250 Đó là SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Vì vậy, khi ai đó bắt đầu gõ vào thảo luận về hộp để làm cho bài trả lời hoặc 1072 00:53:15,580 --> 00:53:20,040 một cái gì đó, trình duyệt của bạn là gì gọi SocketIO phát ra một số loại 1073 00:53:20,040 --> 00:53:22,660 sự kiện nói rằng ai đó là trả lời bài viết này. 1074 00:53:22,660 --> 00:53:26,110 >> Sau đó các máy chủ nói, OK, những gì tôi phải làm gì? 1075 00:53:26,110 --> 00:53:29,270 Vâng bây giờ tôi phải nói với những kẻ khác người đang ở trên CS50 Thảo luận tìm kiếm 1076 00:53:29,270 --> 00:53:31,170 ở bài này mà ai đó trả lời. 1077 00:53:31,170 --> 00:53:34,190 Vì vậy, đó là loại gì SocketIO là tốt cho, loại này tiếp tục 1078 00:53:34,190 --> 00:53:35,930 dòng đối thoại. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Vì vậy, những gì tôi có ở đây - và chúng tôi chỉ sẽ bỏ qua các mảng kết nối 1081 00:53:40,060 --> 00:53:41,390 cho một chút - 1082 00:53:41,390 --> 00:53:43,080 những gì tôi làm là tôi nghe khác. 1083 00:53:43,080 --> 00:53:46,880 Vì vậy, đó chỉ là cách Socket.IO được nói chúng ta hãy lắng nghe trên cổng này. 1084 00:53:46,880 --> 00:53:50,060 Và sau đó tôi làm điều này trên kết nối. 1085 00:53:50,060 --> 00:53:53,360 Vì vậy, đó chỉ là về cơ bản socket IO cách nói, khi chúng tôi nhận được 1086 00:53:53,360 --> 00:53:55,840 kết nối, tôi muốn bạn để chạy mã này. 1087 00:53:55,840 --> 00:53:59,870 >> Và nhận thấy rằng thay vì có rec và độ phân giải thông qua trong đó tôi có Socket. 1088 00:53:59,870 --> 00:54:03,260 Và ý tưởng socket này về cơ bản này điều mà bạn có thể viết và đọc 1089 00:54:03,260 --> 00:54:05,750 từ đó có người sử dụng của thông điệp có thể. 1090 00:54:05,750 --> 00:54:10,700 Và những thông điệp mà bạn muốn gửi có thể đi qua socket đó. 1091 00:54:10,700 --> 00:54:12,140 Điều đó có ý nghĩa? 1092 00:54:12,140 --> 00:54:14,490 Vì vậy, nó là cái gì trường này. 1093 00:54:14,490 --> 00:54:17,820 >> Vì vậy, những gì tôi làm tôi gọi là Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Và sinh ra các mất khá nhiều hai đối số. 1095 00:54:20,330 --> 00:54:24,100 Tham số đầu tiên là một chuỗi chỉ đại diện cho các loại 1096 00:54:24,100 --> 00:54:25,270 điều bạn đang phát. 1097 00:54:25,270 --> 00:54:28,120 Vì vậy, đối với trường hợp này, tôi đã sử dụng chuỗi tin nhắn mới này. 1098 00:54:28,120 --> 00:54:32,670 Và đó chỉ là về cơ bản nói rằng loại điều này, những gì tôi 1099 00:54:32,670 --> 00:54:34,750 gửi, là một thông điệp mới. 1100 00:54:34,750 --> 00:54:38,460 Vì vậy, bạn có thể nghe với nhiều loại cụ thể như tin nhắn mới hoặc bất cứ điều gì 1101 00:54:38,460 --> 00:54:39,960 bằng cách sử dụng dấu chấm trên. 1102 00:54:39,960 --> 00:54:44,570 >> Vì vậy, kết nối và sử dụng gửi ở đó, nếu bạn nhìn vào nơi mà chúng ta gọi là dấu chấm trên, 1103 00:54:44,570 --> 00:54:48,150 đó là những chuỗi khác đại diện loại thông điệp người dùng. 1104 00:54:48,150 --> 00:54:52,060 Vì vậy, nó về cơ bản bạn có thể có sinh ra các này một trong các loại tin nhắn, và 1105 00:54:52,060 --> 00:54:55,520 sau đó làm một cái gì đó để đáp ứng với một trong những loại tin nhắn 1106 00:54:55,520 --> 00:54:57,640 >> Vì vậy, tôi phát ra thông điệp mới này. 1107 00:54:57,640 --> 00:55:00,540 Chúng ta sẽ bỏ qua connections.push trong một giây. 1108 00:55:00,540 --> 00:55:03,360 Nhưng sau đó tôi nói, Socket.on người dùng gửi. 1109 00:55:03,360 --> 00:55:07,540 Vì vậy, bây giờ nó loại thích khi người sử dụng gửi cho tôi một tin nhắn, tôi muốn 1110 00:55:07,540 --> 00:55:09,240 bạn chạy mã này. 1111 00:55:09,240 --> 00:55:12,080 Và nhận thấy rằng có chức năng ẩn danh đang trong biến này 1112 00:55:12,080 --> 00:55:16,300 gọi là dữ liệu đó là cơ bản đi có tin nhắn của người dùng. 1113 00:55:16,300 --> 00:55:20,700 >> Loại vì vậy bây giờ chúng ta hãy nói về các mảng kết nối. 1114 00:55:20,700 --> 00:55:24,590 Vì vậy, đây được thiết kế cho một khách hàng trò chuyện nơi tất cả mọi người về cơ bản là loại trong 1115 00:55:24,590 --> 00:55:25,950 cùng một phòng chat. 1116 00:55:25,950 --> 00:55:29,640 Vì vậy, về cơ bản, những gì chúng ta cần phải giữ xung quanh là một số mảng cơ bản 1117 00:55:29,640 --> 00:55:33,170 đại diện cho tất cả mọi người trò chuyện trong một số cách, nếu có ý nghĩa. 1118 00:55:33,170 --> 00:55:33,340 Phải không? 1119 00:55:33,340 --> 00:55:37,190 Bởi vì chúng tôi cần phải biết ai những kẻ là vì vậy chúng tôi có thể gửi các tin nhắn 1120 00:55:37,190 --> 00:55:39,140 mà người khác gửi cho chúng tôi. 1121 00:55:39,140 --> 00:55:44,440 >> Vì vậy, những gì mã này không khi người dùng là gửi một thông điệp - đó là loại 1122 00:55:44,440 --> 00:55:45,300 sự kiện - 1123 00:55:45,300 --> 00:55:47,120 chúng ta sẽ chạy mã này. 1124 00:55:47,120 --> 00:55:51,240 Và những gì chúng tôi làm, chúng tôi chạy qua đây là mảng mà chúng tôi đã được gọi là kết nối. 1125 00:55:51,240 --> 00:55:54,390 Và khá nhiều cho mỗi kết nối ngoại trừ một trong đó là của chúng ta, đó là 1126 00:55:54,390 --> 00:55:59,520 những mã này cho biết, chúng tôi gửi một mới tin nhắn với thông điệp đính kèm 1127 00:55:59,520 --> 00:56:01,210 thông tin. 1128 00:56:01,210 --> 00:56:04,880 >> Vì vậy, nếu bạn nhận thấy ở đây, những gì tôi đã làm khi người sử dụng thực sự làm cho một mới 1129 00:56:04,880 --> 00:56:08,560 kết nối là tôi đã bổ sung thêm các Phương pháp JavaScript.push, đây là 1130 00:56:08,560 --> 00:56:12,100 về cơ bản chỉ nói như thêm mà cắm như một giá trị vào 1131 00:56:12,100 --> 00:56:13,900 kết nối của chúng tôi mảng. 1132 00:56:13,900 --> 00:56:20,560 Vì vậy, bây giờ khi mã này chạy, nó sẽ gửi những điều đặc biệt cho những 1133 00:56:20,560 --> 00:56:22,020 kết nối. 1134 00:56:22,020 --> 00:56:26,980 Vì vậy, đây có thể là một điểm khởi đầu tốt để làm một máy chủ trò chuyện 1135 00:56:26,980 --> 00:56:28,250 hoặc một cái gì đó tương tự. 1136 00:56:28,250 --> 00:56:33,315 >> Và các loại điều thú vị là các mã mà bạn nhìn thấy ở đây cho như trên và 1137 00:56:33,315 --> 00:56:36,390 phát ra và các công cụ như thế là cùng loại mã JavaScript mà bạn sẽ 1138 00:56:36,390 --> 00:56:39,260 viết trong trình duyệt để tương tác với máy chủ. 1139 00:56:39,260 --> 00:56:42,480 Vì vậy, đó là lý do tại sao SocketIO là loại gọn gàng và hữu ích trong việc theo cách đó. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh và chỉ một điều nữa thật nhanh. 1142 00:56:49,250 --> 00:56:55,970 Có một dự án cuối cùng CS50 năm ngoái về cơ bản thực hiện một cuộc trò chuyện 1143 00:56:55,970 --> 00:56:57,840 máy chủ trong Node.js. 1144 00:56:57,840 --> 00:57:01,350 Tôi nghĩ đó là Harvardchats.org nhưng tôi không - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Tôi không chắc chắn những gì các URL, nhưng Tôi có thể gửi đó ra sau đó. 1147 00:57:06,190 --> 00:57:09,260 Nhưng nó loại mát gì bạn có thể làm với Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Vì vậy, tôi hy vọng, nói chung, các bạn có một cảm giác tốt về những gì Node.js rất hữu ích 1149 00:57:14,680 --> 00:57:17,870 và làm thế nào bạn có thể có thể áp dụng cho dự án cuối cùng của bạn. 1150 00:57:17,870 --> 00:57:21,050 Tôi sẽ gửi ra một số chi tiết tài nguyên cùng với điều này. 1151 00:57:21,050 --> 00:57:23,170 Và cảm ơn các bạn đã đến. 1152 00:57:23,170 --> 00:57:23,610 Cảm ơn bạn. 1153 00:57:23,610 --> 00:57:27,168 >> [Vỗ tay]