Bài đăng này là hướng dẫn bắt đầu sử dụng Node.js, môi trường thời gian chạy JavaScript phía máy chủ. Node.js được xây dựng dựa trên công cụ JavaScript V8 của Google Chrome và nó chủ yếu được sử dụng để tạo máy chủ web - nhưng nó không giới hạn ở điều đó
- Tổng quat
- Các tính năng tốt nhất của Node.js
- Một ứng dụng Node.js mẫu
- Các khung và công cụ của Node.js
Node.js là mộtmôi trường thời gian chạy choJavaScriptchạy trênngười phục vụ.
Node.js là mã nguồn mở, đa nền tảng và kể từ khi được giới thiệu vào năm 2009, nó đã trở nên cực kỳ phổ biến và hiện đóng một vai trò quan trọng trong bối cảnh phát triển web. Nếu số sao trên GitHub là một yếu tố chỉ ra mức độ phổ biến, thì việc có hơn 58000 sao có nghĩa là rất nổi tiếng.
Node.js chạy công cụ JavaScript V8, cốt lõi của Google Chrome, bên ngoài trình duyệt. Node.js có thể tận dụng công việc của các kỹ sư đã tạo ra (và sẽ tiếp tục tạo) thời gian chạy JavaScript của Chrome cực nhanh và điều này cho phép Node.js hưởng lợi từ những cải tiến hiệu suất khổng lồ và biên dịch Just-In-Time. V8 thực hiện. Nhờ đó, mã JavaScript chạy trong Node.js có thể trở nên rất hiệu quả.
Ứng dụng Node.js được chạy bởi một quy trình duy nhất mà không cần tạo luồng mới cho mọi yêu cầu. Node cung cấp một tập hợp các nguyên thủy I / O không đồng bộ trong thư viện chuẩn của nó sẽ ngăn mã JavaScript chặn và nói chung, các thư viện trong Node.js được viết bằng cách sử dụng các mô hình không chặn, làm cho hành vi chặn trở thành ngoại lệ thay vì bình thường.
Khi Node.js cần thực hiện thao tác I / O, như đọc từ mạng, truy cập cơ sở dữ liệu hoặc hệ thống tệp, thay vì chặn luồng, Node.js sẽ tiếp tục hoạt động khi phản hồi trở lại, thay vì lãng phí chu kỳ CPU chờ đợi .
Điều này cho phép Node.js xử lý hàng nghìn kết nối đồng thời với một máy chủ duy nhất mà không gây ra gánh nặng quản lý đồng thời các luồng, đây sẽ là một nguồn lỗi chính.
Node.js có một lợi thế duy nhất bởi vì hàng triệu nhà phát triển giao diện người dùng viết JavaScript cho trình duyệt hiện có thể chạy mã phía máy chủ và mã phía giao diện người dùng mà không cần phải học một ngôn ngữ hoàn toàn khác.
Trong Node.js cái mớiECMAScripttiêu chuẩn có thể được sử dụng mà không gặp sự cố, vì bạn không phải đợi tất cả người dùng của mình cập nhật trình duyệt của họ - bạn chịu trách nhiệm quyết định phiên bản ECMAScript nào sẽ sử dụng bằng cách thay đổi phiên bản Node.js và bạn cũng có thể bật thử nghiệm cụ thể các tính năng bằng cách chạy Node với cờ.
Node.js có một số lượng lớn các thư viện
npm
với cấu trúc đơn giản của nó đã giúp hệ sinh thái của node.js phát triển mạnh mẽ và hiện tại sổ đăng ký npm lưu trữ gần 500.000 gói mã nguồn mở mà bạn có thể thoải mái sử dụng.
Một ứng dụng Node.js mẫu
Ví dụ phổ biến nhất Hello World của Node.js là một máy chủ web:
const http = require('http')
const hostname = ‘127.0.0.1’
const port = 3000
const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader(‘Content-Type’, ‘text/plain’)
res.end(‘Hello World\n’)
})
server.listen(port, hostname, () => {
console.log(Server running at http://</span><span style="color:#e6db74">${</span><span style="color:#a6e22e">hostname</span><span style="color:#e6db74">}</span><span style="color:#e6db74">:</span><span style="color:#e6db74">${</span><span style="color:#a6e22e">port</span><span style="color:#e6db74">}</span><span style="color:#e6db74">/
)
})
Để chạy đoạn mã này, hãy lưu nó dưới dạngserver.js
tập tin và chạynode server.js
trong thiết bị đầu cuối của bạn.
Mã này trước tiên bao gồm Node.jshttp
mô-đun.
Node.js có mộtthư viện tiêu chuẩn, bao gồm hỗ trợ hạng nhất cho mạng.
CáccreateServer()
phương pháp củahttp
tạo một máy chủ HTTP mới và trả về nó.
Máy chủ được thiết lập để lắng nghe trên cổng và tên máy chủ được chỉ định. Khi máy chủ đã sẵn sàng, hàm gọi lại được gọi, trong trường hợp này là thông báo cho chúng tôi rằng máy chủ đang chạy.
Bất cứ khi nào nhận được một yêu cầu mới,request
biến cốđược gọi, cung cấp hai đối tượng: một yêu cầu (mộthttp.IncomingMessage
đối tượng) và một phản hồi (mộthttp.ServerResponse
vật).
2 đối tượng đó rất cần thiết để xử lý cuộc gọi HTTP.
Đầu tiên cung cấp các chi tiết yêu cầu. Trong ví dụ đơn giản này, điều này không được sử dụng, nhưng bạn có thể truy cập tiêu đề yêu cầu và dữ liệu yêu cầu.
Thứ hai được sử dụng để trả về dữ liệu cho người gọi.
Trong trường hợp này với
res.statusCode = 200
chúng tôi đặt thuộc tính Mã trạng thái thành 200, để cho biết phản hồi thành công.
Chúng tôi đặt tiêu đề Loại-Nội dung:
res.setHeader('Content-Type', 'text/plain')
và chúng tôi kết thúc đóng phản hồi, thêm nội dung làm đối số choend()
:
res.end('Hello World\n')
Các khung và công cụ của Node.js
Node.js là một nền tảng cấp thấp và để làm cho mọi thứ trở nên dễ dàng và thú vị hơn cho các nhà phát triển, hàng ngàn thư viện đã được xây dựng dựa trên Node.js.
Nhiều người trong số đó được thành lập theo thời gian như các lựa chọn phổ biến Dưới đây là danh sách không toàn diện về những thứ tôi cho là rất phù hợp và đáng học hỏi:
- bày tỏ, một trong những cách đơn giản nhưng mạnh mẽ nhất để tạo máy chủ web. Cách tiếp cận tối giản của nó, không đơn giản hóa, tập trung vào các tính năng cốt lõi của một máy chủ, là chìa khóa thành công của nó.
- Sao băng, một khung công tác full-stack cực kỳ mạnh mẽ, cung cấp cho bạn phương pháp tiếp cận đẳng hình để xây dựng ứng dụng với JavaScript, chia sẻ mã trên máy khách và máy chủ. Từng là một công cụ có sẵn cung cấp mọi thứ, bây giờ tích hợp với React libs frontend,Vuevà Angular. Có thể được sử dụng để tạo ứng dụng di động.
- koa, được xây dựng bởi cùng một nhóm đằng sau Express, nhằm mục đích trở nên đơn giản hơn và nhỏ hơn, dựa trên kiến thức hàng đầu của nhiều năm. Dự án mới ra đời xuất phát từ nhu cầu tạo ra những thay đổi không tương thích mà không làm gián đoạn cộng đồng hiện có.
- Next.js, một khuôn khổ để kết xuất phía máy chủ được kết xuấtPhản ứngcác ứng dụng.
- Vi mô, một máy chủ rất nhẹ để tạo các vi dịch vụ HTTP không đồng bộ.
- Socket.io, một công cụ giao tiếp thời gian thực để xây dựng các ứng dụng mạng.
Tải xuống miễn phí của tôiSổ tay Node.js
Các hướng dẫn nút khác:
- Giới thiệu về trình quản lý gói npm
- Giới thiệu về Node.js
- Yêu cầu HTTP bằng Axios
- Nơi lưu trữ ứng dụng Node.js
- Tương tác với API Google Analytics bằng Node.js
- Trình chạy gói nút npx
- Hướng dẫn package.json
- Npm cài đặt các gói ở đâu?
- Cách cập nhật Node.js
- Cách sử dụng hoặc thực thi một gói được cài đặt bằng npm
- Tệp package-lock.json
- Phiên bản ngữ nghĩa sử dụng npm
- Bạn có nên cam kết thư mục node_modules cho Git không?
- Cập nhật tất cả các phụ thuộc Node lên phiên bản mới nhất của chúng
- Phân tích cú pháp JSON với Node.js
- Tìm phiên bản đã cài đặt của gói npm
- Luồng Node.js
- Cài đặt phiên bản cũ hơn của gói npm
- Lấy thư mục hiện tại trong Node
- Cách đăng nhập một đối tượng trong Node
- Thể hiện chức năng từ tệp Node bằng cách sử dụng xuất
- Sự khác biệt giữa Node và Browser
- Thực hiện yêu cầu HTTP POST bằng Node
- Nhận dữ liệu nội dung yêu cầu HTTP bằng Node
- Bộ đệm nút
- Sơ lược về lịch sử Node.js
- Cách cài đặt Node.js
- Bạn cần biết bao nhiêu JavaScript để sử dụng Node?
- Cách sử dụng Node.js REPL
- Nút, chấp nhận các đối số từ dòng lệnh
- Xuất ra dòng lệnh bằng Node
- Chấp nhận đầu vào từ dòng lệnh trong Node
- Gỡ cài đặt gói npm với `` npm gỡ cài đặt ''
- gói npm toàn cầu hoặc cục bộ
- npm phụ thuộc và devDependencies
- Vòng lặp sự kiện Node.js
- Hiểu process.nextTick ()
- Hiểu setIm Instant ()
- Bộ phát sự kiện nút
- Xây dựng một máy chủ HTTP
- Thực hiện các yêu cầu HTTP với Node
- Mô-đun Node fs
- Yêu cầu HTTP trong Node bằng Axios
- Đọc tệp bằng Node
- Đường dẫn tệp nút
- Viết tệp bằng Node
- Số liệu thống kê về tệp nút
- Làm việc với bộ mô tả tệp trong Node
- Làm việc với các thư mục trong Node
- Mô-đun đường dẫn nút
- Mô-đun Node http
- Sử dụng WebSockets với Node.js
- Những điều cơ bản về cách làm việc với MySQL và Node
- Xử lý lỗi trong Node.js
- Hướng dẫn Pug
- Cách đọc các biến môi trường từ Node.js
- Cách thoát khỏi chương trình Node.js
- Mô-đun hệ điều hành Node
- Mô-đun sự kiện Node
- Nút, sự khác biệt giữa phát triển và sản xuất
- Cách kiểm tra xem tệp có tồn tại trong Node.js hay không
- Cách tạo tệp trống trong Node.js
- Cách xóa tệp bằng Node.js
- Cách lấy ngày cập nhật cuối cùng của tệp bằng Node.js
- Cách xác định một ngày có phải là hôm nay trong JavaScript hay không
- Cách ghi một đối tượng JSON vào tệp trong Node.js
- Tại sao bạn nên sử dụng Node.js trong dự án tiếp theo của mình?
- Chạy một máy chủ web từ bất kỳ thư mục nào
- Cách sử dụng MongoDB với Node.js
- Sử dụng Công cụ dành cho nhà phát triển của Chrome để gỡ lỗi ứng dụng Node.js
- Pnpm là gì?
- Danh sách tùy chọn Node.js Runtime v8
- Cách khắc phục lỗi "Thiếu quyền ghi" khi sử dụng npm
- Cách bật Mô-đun ES trong Node.js
- Cách sinh ra một quy trình con với Node.js
- Cách lấy cả nội dung được phân tích cú pháp và nội dung thô trong Express
- Cách xử lý tải lên tệp trong Node.js
- Sự phụ thuộc ngang hàng trong một mô-đun Node là gì?
- Cách ghi tệp CSV với Node.js
- Cách đọc tệp CSV với Node.js
- Mô-đun lõi Node
- Tăng số lượng nhiều thư mục cùng một lúc bằng Node.js
- Cách in canvas thành URL dữ liệu
- Cách tạo và lưu hình ảnh với Node.js và Canvas
- Cách tải xuống hình ảnh bằng Node.js
- Cách đổi tên hàng loạt tệp trong Node.js
- Cách lấy tên của tất cả các tệp trong một thư mục trong Node
- Cách sử dụng các lời hứa và chờ đợi với các hàm dựa trên cuộc gọi lại của Node.js
- Cách kiểm tra một gói npm cục bộ
- Cách kiểm tra phiên bản Node.js hiện tại khi chạy
- Cách sử dụng Sequelize để tương tác với PostgreSQL
- Cung cấp trang HTML bằng Node.js
- Cách giải quyết lỗi `use.pump không phải là hàm` trong Node.js