Nút. js là một khung chính để phát triển web hiện đại và giúp dễ dàng tạo các ứng dụng web thời gian thực, hiệu suất cao. Nó cho phép JavaScript được sử dụng từ đầu đến cuối, cả trên máy chủ và máy khách. Hướng dẫn này sẽ hướng dẫn bạn cài đặt Node và chỉ cho bạn cách viết chương trình "Xin chào thế giới" đầu tiên của bạn. Cuối cùng, bạn sẽ tiếp tục xây dựng API thời tiết với Node. js và Express
nút là gì. js?
JavaScript theo truyền thống chỉ chạy trong trình duyệt web, nhưng sau khi được quan tâm đáng kể trong việc đưa nó lên phía máy chủ, Node. js đã được tạo
Nút. js hơi khác so với các công nghệ máy chủ khác, vì nó dựa trên sự kiện thay vì dựa trên luồng. Các máy chủ web như Apache được sử dụng để phục vụ PHP và các tập lệnh CGI khác dựa trên luồng vì chúng tạo ra một luồng hệ thống cho mọi yêu cầu đến. Mặc dù điều này phù hợp với nhiều ứng dụng, nhưng mô hình dựa trên luồng không mở rộng tốt với nhiều kết nối tồn tại lâu như bạn cần để phục vụ các ứng dụng thời gian thực như ứng dụng nhắn tin nhanh
"Mọi hoạt động I/O trong Node. js không đồng bộ. "
Nút. js sử dụng vòng lặp sự kiện thay vì chuỗi và có thể mở rộng thành hàng triệu kết nối đồng thời. Nó lợi dụng thực tế là các máy chủ dành phần lớn thời gian để chờ các thao tác I/O, chẳng hạn như đọc tệp từ ổ cứng, truy cập dịch vụ web bên ngoài hoặc đợi tệp tải lên xong, vì các thao tác này chậm hơn nhiều . Mọi thao tác I/O trong Node. js không đồng bộ, nghĩa là máy chủ có thể tiếp tục xử lý các yêu cầu gửi đến trong khi thao tác I/O đang diễn ra. JavaScript cực kỳ phù hợp với lập trình dựa trên sự kiện vì nó có các hàm và bao đóng ẩn danh giúp việc xác định các cuộc gọi lại nội tuyến trở nên dễ dàng và các nhà phát triển JavaScript đã biết cách lập trình theo cách này. Mô hình dựa trên sự kiện này làm cho Node. js rất nhanh và giúp mở rộng các ứng dụng thời gian thực rất dễ dàng
1. Cài đặt
Nút. js được hỗ trợ chính thức trên Linux, macOS, Microsoft Windows, SmartOS và FreeBSD. Để cài đặt phiên bản Node gần đây. js trên Windows [v16 trở lên], máy tính của bạn phải chạy trên Windows 8. 1, 10 hoặc 11
Nút. js được tích hợp sẵn với trình quản lý gói riêng của nó được gọi là trình quản lý gói nút hoặc viết tắt là npm, cho phép bạn cài đặt các mô-đun của bên thứ 3 từ sổ đăng ký npm
- Tải xuống bản phát hành mới nhất của Node. js từ [phiên bản mới nhất tại thời điểm viết bài này là 17. 9. 0 và phiên bản LTS mới nhất là 16. 14. 2]. Điều này sẽ tải về. tập tin msi trên máy tính của bạn
- Chạy tệp và xem qua trình hướng dẫn thiết lập. Hầu hết các tùy chọn đều là tùy chọn—bạn không cần thay đổi đường dẫn chương trình trừ khi bạn có lý do chính đáng để. Bạn có thể chọn cài đặt Chocolatey [trình quản lý gói windows] hoặc bỏ qua bước
- Khi trình hướng dẫn hoàn tất và Node đã được cài đặt thành công, hãy mở thiết bị đầu cuối và chạy
npm init
47 để xem phiên bản Node đã cài đặt. Chạynpm init
48 để xem phiên bản npm
Ngoài ra, nếu bạn tìm kiếm Nút trong chương trình của mình, bạn nên tìm Nút. dấu nhắc lệnh js
Dấu nhắc lệnh cung cấp REPL [Vòng đọc-Đánh giá-In] nơi bạn có thể nhập vào Nút JavaScript. js và mã được đánh giá ngay lập tức và kết quả được xuất ra. Bạn cũng có thể tải JavaScript từ tệp bên ngoài vào phiên REPL, v.v.
2. Xin chào thế giới.
Học bất kỳ công nghệ mới nào cũng bắt đầu bằng câu "Xin chào thế giới. " hướng dẫn, vì vậy chúng tôi sẽ tạo một máy chủ HTTP đơn giản phục vụ thông báo đó
Đầu tiên, chúng ta sẽ tạo một Node mới. dự án js. Để tạo một cái, hãy mở terminal của bạn, thay đổi thư mục mà bạn muốn dự án của mình vào và chạy lệnh sau
1
npm init
Bạn sẽ được nhắc cung cấp một số thông tin về thư viện của mình bao gồm tên thư viện, tác giả, tệp mục nhập, giấy phép và phiên bản và khi hoàn tất, một gói. json sẽ được tạo bằng thông tin được cung cấp. Để bỏ qua bước này, hãy gắn cờ
npm init49 vào lệnh trên và Nút. js sẽ tạo một gói. json với một số giá trị mặc định
Sau đó, tạo một tệp JavaScript trống và đặt tên là test. js
Đối với bước tiếp theo, bạn phải hiểu Node. hệ thống mô-đun js. Trong Node, chức năng được gói gọn trong các mô-đun phải được tải để sử dụng. Có nhiều mô-đun được liệt kê trong Nút. tài liệu js. Bạn tải các mô-đun này bằng cách sử dụng hàm
npm init50 như vậy [bên trong bài kiểm tra. js]
1
var util = require["util"];
Điều này tải mô-đun util, chứa các chức năng tiện ích để xử lý các tác vụ ở cấp hệ thống như in đầu ra tới thiết bị đầu cuối. Để sử dụng một hàm trong một mô-đun, bạn gọi nó trên biến mà bạn đã lưu trữ mô-đun—trong trường hợp của chúng ta là
npm init51
1
util.log["Hello World!"];
Để chạy tập lệnh này, chỉ cần chạy lệnh
npm init52 với tên tệp của tệp JavaScript làm đối số
1
node test.js
Điều này sẽ xuất ra "Xin chào thế giới. " vào dòng lệnh khi chạy
Để tạo một máy chủ HTTP, bạn phải
npm init50 mô-đun
npm init54
1
var util = require["util"];
npm init0_______0_______1
npm init2_______0_______3
npm init4
npm init5
npm init6
npm init7
npm init8
npm init9
10
11
12
13
14
15_______2_______6
Tập lệnh này nhập các mô-đun
npm init51 và
npm init54 và tạo một máy chủ HTTP. Hàm ẩn danh được truyền vào
npm init57 sẽ được gọi bất cứ khi nào có yêu cầu đến máy chủ. Khi máy chủ được tạo, nó sẽ được yêu cầu lắng nghe trên cổng 8080
Khi có yêu cầu đến máy chủ, trước tiên chúng tôi gửi tiêu đề HTTP với loại nội dung và mã trạng thái là 200 [thành công]. Sau đó, chúng tôi gửi "Xin chào thế giới. " và đóng kết nối. Bạn có thể nhận thấy rằng chúng tôi phải đóng kết nối một cách rõ ràng. Điều này sẽ giúp truyền dữ liệu đến máy khách rất dễ dàng mà không cần đóng kết nối
Nếu bạn chạy tập lệnh này và truy cập
npm init58 trong trình duyệt của mình, bạn sẽ thấy Hello World
3. Máy chủ tệp tĩnh đơn giản
OK, vậy là chúng ta đã xây dựng một máy chủ HTTP, nhưng nó không gửi bất kỳ thứ gì ngoại trừ "Xin chào thế giới", bất kể bạn truy cập URL nào. Bất kỳ máy chủ HTTP nào cũng phải có khả năng gửi các tệp tĩnh như tệp HTML, hình ảnh và các tệp khác. Đoạn mã sau thực hiện điều đó
1
18
npm init0
var util = require["util"];0
npm init2
var util = require["util"];2
npm init4
var util = require["util"];4
npm init6
var util = require["util"];6
npm init8
npm init3
10
10
12
12
14
14
15
16
17
18
19
util.log["Hello World!"];0
util.log["Hello World!"];1
util.log["Hello World!"];2
util.log["Hello World!"];3
util.log["Hello World!"];4
util.log["Hello World!"];5
util.log["Hello World!"];6
util.log["Hello World!"];7
util.log["Hello World!"];8
util.log["Hello World!"];9
10
11
12
13
14
15
16
17
18
19
node test.js0
node test.js1
node test.js2
node test.js3
node test.js4
node test.js5
node test.js6
node test.js7
node test.js8
node test.js9
10
11
util.log["Hello World!"];4
13________2__
Chúng tôi bắt đầu bằng cách yêu cầu tất cả các mô-đun mà chúng tôi sẽ cần trong mã của mình. Điều này bao gồm các mô-đun
npm init59,
npm init54,
npm init61,
npm init62 và
npm init63 hoặc hệ thống tệp
Tiếp theo, chúng tôi tạo một máy chủ HTTP như chúng tôi đã làm trước đây. Lần này, chúng tôi sẽ sử dụng mô-đun
npm init61 để phân tích cú pháp URL đến của yêu cầu và tìm tên đường dẫn của tệp đang được truy cập. Chúng tôi tìm tên tệp thực tế trên ổ cứng của máy chủ bằng cách sử dụng
npm init65, nối với
npm init66 hoặc thư mục làm việc hiện tại, với đường dẫn đến tệp được yêu cầu
Tiếp theo, chúng tôi kiểm tra xem tệp có tồn tại hay không, đây là hoạt động không đồng bộ và do đó yêu cầu gọi lại. Nếu tệp không tồn tại, thông báo 404 Not Found sẽ được gửi tới người dùng và hàm trả về. Mặt khác, chúng tôi đọc tệp bằng cách sử dụng mô-đun
npm init63 bằng cách sử dụng mã hóa "nhị phân" và gửi tệp cho người dùng. Nếu có lỗi khi đọc tệp, chúng tôi sẽ đưa ra thông báo lỗi cho người dùng và đóng kết nối. Bởi vì tất cả điều này là không đồng bộ, máy chủ có thể phục vụ các yêu cầu khác trong khi đọc tệp từ đĩa, bất kể nó lớn đến mức nào
Nếu bạn chạy ví dụ này và điều hướng đến
npm init68, tệp đó sẽ được hiển thị trong trình duyệt của bạn
4. Xây dựng API thời tiết trong Nút. js với Express
Xây dựng trên máy chủ tệp tĩnh của chúng tôi, chúng tôi sẽ xây dựng một máy chủ trong Node. js tìm nạp và hiển thị điều kiện thời tiết dự kiến của một thành phố nhất định. Để bắt đầu, chúng tôi sẽ cần thêm hai mô-đun bên thứ ba trong ví dụ này. mô-đun
npm init69 và mô-đun
npm init70. Express là một khung web được sử dụng để xây dựng các API RESTful trong Node. ứng dụng js. Chúng ta sẽ sử dụng mô-đun Express để xây dựng một điểm cuối API duy nhất sẽ lấy thành phố từ mỗi yêu cầu và phản hồi bằng nội dung HTML chứa điều kiện thời tiết dự báo cho thành phố. Thông tin thời tiết sẽ đến từ một API bên ngoài—vì vậy, chúng tôi sẽ sử dụng ứng dụng khách axios để thực hiện yêu cầu API
Trước tiên, chúng ta sẽ cài đặt cả mô-đun Express và axios cùng lúc bằng lệnh sau
1
var util = require["util"];3
Điều này sẽ cài đặt cả hai mô-đun từ sổ đăng ký npm. Trường
npm init71 sẽ được thêm vào đối tượng JSON bên trong gói của bạn. json và bạn sẽ thấy phiên bản đã cài đặt của từng phần phụ thuộc. Thư mục node_modules cũng sẽ được tạo để theo dõi tất cả các mô-đun mà Express và axios sử dụng
Bây giờ chúng ta đã cài đặt Express, chúng ta sẽ tạo ứng dụng Express bên trong thử nghiệm. js
1___
var util = require["util"];5_______0_______0
npm init2
var util = require["util"];8
npm init4
npm init00
npm init6
npm init8
npm init03
10
npm init05
12
npm init07
14
npm init09
15_______2_______7_______2_______1_______0_______13_______13_______15
Ở đây, trước tiên chúng tôi nhập Express và axios. Sau đó, chúng tôi thiết lập tuyến GET trên đường dẫn chỉ mục '/', phản hồi bằng một chuỗi đơn giản. Cuối cùng, chúng tôi phục vụ ứng dụng Express trên localhost. 3000
Truy cập Open Weather API và đăng ký miễn phí bộ sưu tập Dự báo và thời tiết hiện tại để nhận khóa API của bạn [bạn sẽ được nhắc đăng ký và nhận khóa của mình từ phần Khóa API]
Với khóa API của bạn được bảo mật, đã đến lúc xây dựng mã sẽ tìm nạp và trả về điều kiện thời tiết dự báo cho một vị trí được cung cấp trong lộ trình GET của chúng tôi
Khi bắt đầu thử nghiệm. js, bên dưới phần nhập, hãy sao chép khóa API của bạn từ Open Weather API và lưu trữ giá trị vào một biến
1
npm init17
Bây giờ, thay thế mã
npm init72 của bạn bằng mã sau
1
npm init05
npm init0
npm init21
npm init2
npm init4
npm init24
npm init6
npm init26
npm init8
npm init28
10
npm init30
12
npm init32
14
npm init34
15
npm init36
17
npm init38
19
npm init40
util.log["Hello World!"];1
npm init42
util.log["Hello World!"];3
npm init09
Điều đầu tiên chúng tôi làm là truy xuất chuỗi truy vấn [thành phố] từ thuộc tính truy vấn
Sau đó, chúng tôi tạo một yêu cầu GET cho API dự báo thời tiết bằng cách sử dụng axios. URL sẽ cần hai biến. thành phố chúng tôi muốn nhận dự báo và khóa API duy nhất được cung cấp trong bảng điều khiển API thời tiết mở của bạn
Chúng tôi thiết lập một hàm
npm init73 để xử lý phản hồi—nếu trạng thái phản hồi là 200 [có nghĩa là OK], chúng tôi sẽ gửi lại mô tả thời tiết cho thành phố, được cung cấp trong dữ liệu được trả về. Chúng tôi gửi lại thông tin này cho trình duyệt dưới dạng phản hồi bằng cách sử dụng phương pháp
npm init74. Khi có lỗi, chúng tôi chỉ cần ghi dữ liệu lỗi vào bảng điều khiển qua
npm init75
Lưu bài kiểm tra của bạn. js, hãy chạy
npm init76 trên dòng lệnh của bạn và nhập URL sau vào trình duyệt của bạn
1
npm init46
Lưu ý rằng nairobi có thể được thay thế bằng bất kỳ thành phố nào bạn chọn. Đây là kết quả bạn sẽ nhận được
Bước tiếp theo
Nút. js là một công nghệ rất thú vị giúp dễ dàng tạo các ứng dụng thời gian thực hiệu suất cao. Tôi hy vọng bạn có thể thấy lợi ích của nó và có thể sử dụng nó trong một số ứng dụng của riêng bạn. Do hệ thống mô-đun tuyệt vời của Node, bạn có thể dễ dàng sử dụng các thư viện nguồn mở của bên thứ ba trong ứng dụng của mình và có sẵn các mô-đun cho mọi thứ. bao gồm các lớp kết nối cơ sở dữ liệu, công cụ tạo khuôn mẫu, ứng dụng thư khách và thậm chí toàn bộ khung kết nối tất cả những thứ này với nhau
hạnh phúc gật đầu
Bài đăng này đã được cập nhật với sự đóng góp từ Kingsley Ubah. Kingsley đam mê tạo ra nội dung giáo dục và truyền cảm hứng cho độc giả. Sở thích bao gồm đọc sách, bóng đá và đi xe đạp