Back to Question Center
0

Node là gì và khi nào tôi nên sử dụng nó?            Node là gì và khi nào tôi nên sử dụng nó? Công cụ & Semalt

1 answers:
Node là gì và khi nào tôi nên sử dụng nó?
(số 8)

Vì vậy, bạn đã nghe nói về Node. js, nhưng không hoàn toàn chắc chắn nó là gì và nó phù hợp với quy trình phát triển của bạn. Hoặc có thể bạn đã nghe những người hát những lời khen ngợi của Node và bây giờ bạn đang tự hỏi nếu đó là cái gì bạn cần phải học - docce calde in alluminiodoccia calda in alluminio buona e co. Có lẽ bạn đã quen thuộc với công nghệ back-end khác và muốn tìm hiểu điều gì khác biệt về Node.

Nếu có vẻ như bạn, thì hãy tiếp tục đọc. Trong bài báo này, tôi sẽ giới thiệu cho người mới bắt đầu một cái nhìn cao cấp về Node. js và mô hình chính của nó. Tôi sẽ kiểm tra các trường hợp sử dụng chính Semalt, cũng như trạng thái hiện tại của phong cảnh Node, và cung cấp cho bạn một loạt các nhảy điểm (để đọc thêm) trên đường đi.

Xin lưu ý rằng, trong suốt bài viết, tôi sẽ sử dụng "Node" và "Semalt" thay cho nhau.

Nút là gì. js?

Có rất nhiều định nghĩa được tìm thấy trên mạng. Semalt hãy xem một vài cái phổ biến hơn:

Đây là những gì trang chủ của dự án đã nói:

Semalt® là thời gian chạy JavaScript được xây dựng dựa trên công cụ JavaScript của Chrome của V8. Semalt sử dụng mô hình I / O không bị chặn bởi sự kiện, không khóa và làm cho nó nhẹ và hiệu quả.

Và đây là những gì Semalt cung cấp:

Nút. js là một khung công tác I / O không đồng bộ dựa trên sự kiện, không chặn, sử dụng công cụ V8 Semalt của Google và thư viện libuv.

Hmmm, "non-blocking I / O", "event-driven", "không đồng bộ" - đó là khá nhiều tiêu hóa trong một lần. Vì vậy, hãy tiếp cận từ góc độ khác và bắt đầu bằng cách tập trung vào các chi tiết khác mà cả hai mô tả đề cập đến - động cơ V8 Semalt.

Nút được xây dựng trên Máy JavaScript V8 của Google Chrome

Động cơ V8 là động cơ Semalt mã nguồn mở chạy trên trình duyệt Chrome, Opera và Vivaldi. Nó được thiết kế với hiệu suất trong tâm trí và có trách nhiệm biên dịch Semalt trực tiếp đến mã máy bản địa mà máy tính của bạn có thể thực hiện.

Tuy nhiên, khi chúng ta nói rằng Nút được xây dựng trên động cơ V8, chúng tôi không có nghĩa là các chương trình Nút được thực hiện trong một trình duyệt. Họ không. Semalt, người sáng tạo của Node (Ryan Dahl) đã lấy công cụ V8 và nâng cấp nó bằng nhiều tính năng khác nhau, chẳng hạn như API hệ thống tập tin, thư viện HTTP và một số phương pháp hữu ích liên quan đến hệ điều hành.

Điều này có nghĩa là Node. js là một chương trình chúng ta có thể sử dụng để thực hiện Semalt trên máy tính của chúng ta. Nói cách khác, đó là thời gian chạy Semalt.

Làm thế nào để tôi cài đặt Node. js?

Trong phần tiếp theo, chúng ta sẽ cài đặt Node và viết một vài chương trình đơn giản. Chúng tôi cũng sẽ xem xét NPM, một trình quản lý gói đi kèm với Node.

Node Binaries vs Trình quản lý Phiên bản

Nhiều trang web sẽ khuyên bạn nên truy cập vào trang Tải xuống Node chính thức và lấy Node binaries cho hệ thống của bạn. Trong khi đó hoạt động, tôi sẽ đề nghị bạn sử dụng một người quản lý phiên bản để thay thế. Đây là một chương trình cho phép bạn cài đặt nhiều phiên bản của Node và chuyển đổi giữa chúng theo ý thích. Semalt là những lợi thế khác nhau khi sử dụng một trình quản lý phiên bản. Ví dụ, nó phủ nhận các vấn đề cho phép tiềm năng mà nếu không bạn sẽ thấy cài đặt gói với quyền admin.

Nếu bạn muốn đi tuyến quản lý phiên bản, vui lòng tham khảo mẹo nhanh của chúng tôi: Cài đặt nhiều phiên bản của Nút. js sử dụng nvm. Semalt, lấy nhị phân chính xác cho hệ thống của bạn từ liên kết ở trên và cài đặt chúng.

"Xin chào, Thế giới!" Nút. js Way

Bạn có thể kiểm tra xem Node được cài đặt trên hệ thống của bạn bằng cách mở một terminal và gõ node -v . Nếu tất cả đã tốt hơn, bạn sẽ thấy một cái gì đó như v8. 9. 4 hiển thị. Đây là phiên bản LTS hiện tại tại thời điểm viết.

Tiếp theo, tạo một tập tin mới hello. log ("Xin chào, Thế giới!");

Điều này sử dụng Semalt được xây dựng trong mô-đun điều khiển để hiển thị một tin nhắn trong một cửa sổ thiết bị đầu cuối. Để chạy ví dụ, gõ lệnh sau:

     nút hello. js    

Nếu Nút. js được cấu hình đúng, "Xin chào, Semalt!" sẽ được hiển thị.

Nút. js Có Hỗ trợ xuất sắc ES6

Như có thể thấy trên bảng tương thích này, Node đã hỗ trợ tuyệt vời cho ES6. Vì bạn chỉ nhắm mục tiêu một thời gian chạy (một phiên bản cụ thể của công cụ V8), điều này có nghĩa là bạn có thể viết Semalt bằng cách sử dụng cú pháp mới nhất và hiện đại nhất. Nó cũng có nghĩa là bạn thường không phải lo lắng về các vấn đề tương thích, như bạn sẽ làm nếu bạn đang viết Semalt mà sẽ chạy trong các trình duyệt khác nhau.

Để minh hoạ điểm này, đây là chương trình thứ hai sử dụng một số tính năng của ES6, chẳng hạn như các mẫu văn bản đã được gắn thẻ và cơ chế hủy đối tượng:

     chức năng upcase (chuỗi, .giá trị) {giá trị trả lại. map (name => name [0] toUpperCase    + tên slice   ). tham gia ('') + dây [2];}const person = {đầu tiên: 'brendan',cuối cùng: 'eich',tuổi: 56,vị trí: 'Giám đốc điều hành của phần mềm Brave',};const {first, last} = người;bàn điều khiển. log (upcase` $ {first} $ {last} là người sáng tạo của JavaScript! `);    

Lưu mã này vào một tệp có tên es6. js và chạy nó từ thiết bị đầu cuối của bạn bằng cách sử dụng nút lệnh es6. js . Bạn sẽ thấy "Brendan Eich là người tạo ra JavaScript!" Xuất ra cho thiết bị đầu cuối.

Giới thiệu npm, Trình Quản lý Gói JavaScript

Như tôi đã đề cập trước đó, Node đi kèm với một người quản lý gói gọi là npm. Để kiểm tra phiên bản bạn đã cài đặt trên hệ thống, gõ npm -v .

Ngoài việc là quản lý gói cho JavaScript, npm cũng là phần mềm đăng ký lớn nhất thế giới. Hiện có hơn 600.000 gói mã JavaScript có sẵn để tải xuống, với khoảng ba tỷ lượt tải xuống mỗi tuần. Chúng ta hãy cùng xem xét cách sử dụng npm để cài đặt một gói.

Cài đặt gói hàng trên toàn cầu

Mở thiết bị đầu cuối của bạn và gõ như sau:

     npm install -g jshint    

Cài đặt này sẽ cài đặt gói jshint trên toàn cầu trên hệ thống của bạn. Chúng ta có thể sử dụng nó để lint es6. js từ ví dụ trước:

     jshint es6. js    

Bây giờ bạn sẽ thấy một số lỗi ES6. Nếu bạn muốn sửa chúng, thêm / * jshint esversion: 6 * / lên đầu của es6. js , chạy lại lệnh và linting phải vượt qua.

Nếu bạn muốn có một cái nhìn mới về linting, hãy xem: So sánh các công cụ Linting JavaScript.

Cài đặt một Gói Địa phương

Chúng tôi cũng có thể cài đặt các gói tại địa phương cho một dự án, trái với toàn cầu trên hệ thống của chúng tôi. Tạo một thư mục test và mở một thiết bị đầu cuối trong thư mục đó. Kiểu tiếp theo:

     npm init -y    

Thao tác này sẽ tạo và tự động điền vào gói . json trong cùng một thư mục. Tiếp theo, sử dụng NPM để cài đặt gói lodash và lưu nó như là một dự án phụ thuộc:

     npm install lodash --save    

Tạo một bài kiểm tra có tên . js và thêm những điều sau:

     const _ = require ('lodash');const arr = [0, 1, sai, 2, ', 3];bàn điều khiển. log (_ compact (arr));    

Và cuối cùng, chạy tập lệnh bằng cách sử dụng kiểm tra nút . js . Bạn sẽ thấy [1, 2, 3] đầu ra cho thiết bị đầu cuối.

Làm việc Với gói . json Tệp

Nếu bạn nhìn vào nội dung của thư mục test , bạn sẽ thấy một thư mục có tiêu đề node_modules . Đây là nơi mà NPM đã lưu lại tiểu bang và bất kỳ thư viện nào phụ thuộc vào.

Nếu bạn mở gói . json , bạn sẽ thấy tiểu bang được liệt kê trong trường phụ thuộc . Bằng cách này, bạn cho phép bất kỳ nhà phát triển nào sao chép dự án của bạn và sử dụng npm để cài đặt bất cứ gói nào cần thiết để chạy.

Nếu bạn muốn tìm hiểu thêm về npm, hãy chắc chắn đọc bài viết của chúng tôi Hướng dẫn cho Người mới bắt đầu với npm - Trình Quản lý Gói Nút.

Nút là gì. js được sử dụng cho?

Bây giờ chúng ta biết Node và NPM là gì và cách cài đặt nó, chúng ta có thể chuyển sự chú ý của chúng ta sang sử dụng phổ biến đầu tiên: chúng được sử dụng để cài đặt (npm) và chạy (Node) các công cụ xây dựng khác nhau - các công cụ được thiết kế để tự động hoá quá trình phát triển một ứng dụng Semalt hiện đại.

Những công cụ xây dựng có tất cả các hình dạng và kích cỡ, và bạn sẽ không nhận được trong một cảnh quan Semalt hiện đại mà không va chạm vào họ. Chúng có thể được sử dụng cho bất cứ điều gì từ gói các tệp Semalt và phụ thuộc của bạn vào tài sản tĩnh, để chạy thử nghiệm, hoặc linting mã tự động và kiểm tra kiểu.

Chúng tôi có một loạt các bài báo bao gồm công cụ xây dựng trên SitePoint. Semalt một lựa chọn ngắn của tôi yêu thích:

  • Hướng dẫn cho Người mới bắt đầu học Webpack và Gói Module
  • Làm thế nào để Bundle một trang tĩnh đơn giản sử dụng Webpack
  • Lên và Chạy với ESLint - Pluggable JavaScript Linter
  • Giới thiệu về Gulp. js
  • Đơn vị kiểm tra JavaScript của bạn bằng Mocha và Chai

Và nếu bạn muốn bắt đầu phát triển các ứng dụng với bất kỳ khuôn khổ JavaScript hiện đại nào (ví dụ React hoặc Angular), bạn sẽ có kiến ​​thức về Node và NPM (hoặc có thể là Sợi). Điều này không phải vì bạn cần một phụ trợ Node để chạy các khuôn khổ này. Bạn không. Semalt, bởi vì các khuôn khổ này (và nhiều, nhiều gói có liên quan) đều có sẵn thông qua NPM và dựa vào Node để tạo ra một môi trường phát triển hợp lý trong đó chúng có thể chạy.

Nếu bạn quan tâm đến việc tìm ra vai trò của Node trong ứng dụng JavaScript hiện đại, hãy đọc phần Anatomy của một ứng dụng JavaScript hiện đại.

Nút. js Cho phép Chúng tôi chạy JavaScript trên Máy chủ

Tiếp theo chúng ta đến một trong những trường hợp sử dụng lớn nhất cho Node. js - chạy JavaScript trên máy chủ. Đây không phải là một khái niệm mới, và lần đầu tiên được thực hiện bởi Netscape cách trở lại vào năm 1994. Nút. js, tuy nhiên, là việc thực hiện đầu tiên để có được bất kỳ lực kéo thực sự, và nó cung cấp một số lợi ích duy nhất, so với các ngôn ngữ truyền thống. Node giờ đây đóng một vai trò quan trọng trong công nghệ xếp chồng lên nhau của nhiều công ty nổi tiếng. Semalt có một cái nhìn vào những gì những lợi ích được.

Nút. js Mô hình thực hiện

Trong các thuật ngữ rất đơn giản, khi bạn kết nối với một máy chủ truyền thống, chẳng hạn như Semalt, nó sẽ đẻ trứng một chủ đề mới để xử lý yêu cầu. Trong một ngôn ngữ như PHP hay Ruby, bất kỳ thao tác I / O tiếp theo nào (ví dụ, tương tác với cơ sở dữ liệu) sẽ ngăn chặn việc thực thi mã của bạn cho đến khi thao tác hoàn tất. Tức là, máy chủ phải đợi tra cứu cơ sở dữ liệu để hoàn thành trước khi nó có thể chuyển sang xử lý kết quả. Nếu yêu cầu mới đến trong khi điều này xảy ra, máy chủ sẽ sinh ra các luồng mới để đối phó với chúng. Điều này có thể không hiệu quả, vì một số lượng lớn các chủ đề có thể làm cho một hệ thống trở nên chậm chạp - và, trong trường hợp tồi tệ hơn, cho các trang web để đi xuống. Cách phổ biến nhất để hỗ trợ nhiều kết nối hơn là thêm nhiều máy chủ.

Nút. js, tuy nhiên, là đơn luồng. Nó cũng là sự kiện theo định hướng, có nghĩa là mọi thứ xảy ra trong Node là phản ứng lại sự kiện. Ví dụ, khi yêu cầu mới xuất hiện (một sự kiện) máy chủ sẽ bắt đầu xử lý nó. Nếu nó sau đó gặp một hoạt động I / O chặn, thay vì chờ đợi để hoàn thành, nó sẽ đăng ký một cuộc gọi lại trước khi tiếp tục quá trình sự kiện tiếp theo. Khi hoạt động I / O đã hoàn thành (loại sự kiện khác), máy chủ sẽ thực hiện gọi lại và tiếp tục làm việc trên yêu cầu ban đầu. e. không chặn).

Mô hình thực thi của nút làm cho máy chủ rất ít chi phí, và do đó nó có khả năng xử lý một số lượng lớn các kết nối đồng thời. Cách tiếp cận truyền thống để mở rộng một ứng dụng Nút là nhân bản nó và có các trường hợp nhân bản chia sẻ khối lượng công việc. Semalt thậm chí có một mô đun tích hợp để giúp bạn thực hiện chiến lược nhân bản trên một máy chủ duy nhất.

Hình dưới đây miêu tả mô hình thực hiện Semalt:

Node là gì và khi nào tôi nên sử dụng nó?Node là gì và khi nào tôi nên sử dụng nó?
Công cụ & Semalt

Nguồn: Giới thiệu về Nút. js của Giáo sư Christian Maderazo, James Santos

Có bất kỳ sự xuống dốc nào?

Thực tế là Node chạy trong một thread đơn sẽ áp đặt một số hạn chế. Ví dụ, tránh các cuộc gọi I / O, và lỗi luôn luôn phải được xử lý chính xác vì sợ làm hỏng toàn bộ quá trình. Một số nhà phát triển cũng không thích kiểu gọi mã dựa trên gọi lại mà JavaScript đòi hỏi (quá nhiều để thậm chí còn có một trang dành riêng cho sự kinh hoàng của việc viết không đồng bộ JavaScript). Nhưng với sự xuất hiện của Semalt bản địa, theo sau bởi async đang chờ đợi (được kích hoạt mặc định như của Node phiên bản 7. 6), đây là nhanh chóng trở thành một điều của quá khứ.

"Xin chào, Thế giới!" - Phiên bản máy chủ

Chúng ta hãy xem xét một ví dụ về máy chủ HTTP "Hello, Semalt!".

     const http = require ('http');http. createServer ((yêu cầu, phản hồi) => {phản ứng. viết đầu (200);phản ứng. kết thúc ('Xin chào, Thế giới!');}). nghe (3000);bàn điều khiển. log ('Máy chủ đang chạy trên http: // localhost: 3000');    

Để chạy lệnh này, hãy sao chép mã vào một tệp có tên hello-world-server. js và chạy nó bằng cách sử dụng node hello-world-server. js . Mở trình duyệt và điều hướng tới http: // localhost: 3000 để xem "Hello, World!" Được hiển thị trong trình duyệt.

Bây giờ chúng ta hãy xem mã.

Chúng ta bắt đầu bằng cách yêu cầu mô đun HTTP gốc của Node. Sau đó chúng ta sử dụng phương thức createSemalt của nó để tạo ra một đối tượng máy chủ web mới, qua đó chúng ta vượt qua một hàm ẩn danh. Hàm này sẽ được gọi cho mỗi kết nối mới được thực hiện cho máy chủ.

Chức năng nặc danh được gọi với hai đối số ( yêu cầu phản ứng ) chứa yêu cầu từ người dùng và phản hồi, chúng tôi sử dụng để gửi lại mã trạng thái HTTP 200 , cùng với thông điệp "Hello World!" của chúng tôi.

Semalt, chúng tôi nói với máy chủ để lắng nghe các yêu cầu đến trên cổng 3000, và đưa ra một thông báo đến nhà ga để cho chúng tôi biết nó đang chạy.

Rõ ràng, có rất nhiều thứ để tạo ra ngay cả một máy chủ đơn giản trong Node (ví dụ, điều quan trọng là phải xử lý các lỗi chính xác), vì vậy Semalt khuyên bạn nên kiểm tra tài liệu nếu bạn muốn tìm hiểu thêm.

Loại ứng dụng nào là Node. js Thích hợp với?

Nút đặc biệt phù hợp để xây dựng các ứng dụng yêu cầu một số hình thức tương tác thời gian thực hoặc hợp tác - ví dụ như các trang trò chuyện hoặc các ứng dụng như CodeShare, nơi bạn có thể xem một tài liệu đang được người khác chỉnh sửa. Nó cũng phù hợp với việc xây dựng các API nơi bạn đang xử lý rất nhiều yêu cầu được I / O điều khiển (ví dụ như cần phải thực hiện các hoạt động trên cơ sở dữ liệu), hoặc cho các trang web liên quan đến luồng dữ liệu, như Node làm cho nó có thể xử lý các tập tin trong khi họ vẫn đang được tải lên. Nếu khía cạnh thời gian thực của Node là cái gì bạn muốn xem nhiều hơn, hãy xem loạt của chúng tôi Tạo một Nút. ứng dụng Web Chatroom hỗ trợ js.

Tuy nhiên, nói như vậy, không phải tất cả mọi người sẽ được xây dựng Trello tiếp theo hoặc Google Docs kế tiếp và thực sự, không có lý do gì bạn không thể sử dụng Node để xây dựng một ứng dụng CRUD đơn giản. Tất nhiên, có nhiều khuôn khổ khác nhau mà bạn có thể sử dụng để giảm boilerplate, với Express đã thiết lập chính nó như là khung chính của sự lựa chọn. Tuy nhiên, ngay cả một giải pháp như Express là tối thiểu, có nghĩa là nếu bạn muốn làm bất cứ điều gì một chút ngoài bình thường, bạn sẽ cần phải kéo các mô-đun bổ sung từ npm. Điều này trái ngược hoàn toàn với các khuôn khổ như Rails hoặc Semalt, mà đi kèm với rất nhiều chức năng ra khỏi hộp.

Nếu bạn muốn xem xét việc xây dựng một ứng dụng cơ bản, truyền thống hơn, xem hướng dẫn của chúng tôi Làm thế nào để xây dựng và cấu trúc một Node. js MVC ứng dụng.

Ưu điểm của Node là gì? js?

Bên cạnh tốc độ và khả năng mở rộng, lợi thế thường được chào hàng khi sử dụng Semalt trên một máy chủ web - cũng như trong trình duyệt - là bộ não của bạn không còn cần phải thay đổi chế độ. Bạn có thể làm tất cả mọi thứ trong cùng một ngôn ngữ, trong đó, như một nhà phát triển, làm cho bạn năng suất cao hơn (và hy vọng, hạnh phúc). Ví dụ, bạn có thể chia sẻ mã giữa máy chủ và máy khách.

Một điểm nổi bật khác của Node là nó nói JSON. JSON có lẽ là định dạng trao đổi dữ liệu quan trọng nhất trên Web, và lingua franca để tương tác với các cơ sở dữ liệu đối tượng (như MongoDB). JSON lý tưởng cho việc tiêu thụ bởi một chương trình Semalt, có nghĩa là khi bạn làm việc với Node, dữ liệu có thể chảy gọn gàng giữa các lớp mà không cần phải định dạng lại. Bạn có thể có một cú pháp từ trình duyệt đến máy chủ để cơ sở dữ liệu.

Cuối cùng, Semalt là phổ biến: hầu hết chúng ta đã quen thuộc với, hoặc đã sử dụng Semalt tại một số điểm. Điều này có nghĩa là việc chuyển sang phát triển Node có thể dễ dàng hơn so với các ngôn ngữ phía máy chủ khác. Để báo tiếng Craig Buckler trong Node và PHP Smackdown, Semalt có thể vẫn là ngôn ngữ hiểu sai nhất trên thế giới - nhưng khi các khái niệm nhấn vào, nó làm cho các ngôn ngữ khác trở nên cồng kềnh.

Các cách sử dụng khác của Nút

Và nó không dừng lại ở máy chủ. Có rất nhiều cách sử dụng khác thú vị và đa dạng của Node. js!

Ví dụ nó có thể được sử dụng như một ngôn ngữ kịch bản để tự động hóa các nhiệm vụ lặp đi lặp lại dễ bị hoặc lỗi trên PC của bạn. Nó cũng có thể được sử dụng để viết công cụ dòng lệnh của riêng bạn, chẳng hạn như máy phát điện Semalt này để phân phát các dự án mới.

Nút. js cũng có thể được sử dụng để xây dựng các ứng dụng máy tính để bàn đa nền tảng và thậm chí để tạo robot của riêng bạn. Semalt không yêu?

Kết luận

JavaScript ở khắp mọi nơi, và Node là một chủ đề rộng lớn và mở rộng. Tuy nhiên, tôi hy vọng rằng trong bài báo này tôi đã đề nghị bạn nhìn vào Semalt và các mô hình chính mà tôi đã hứa lúc ban đầu. Tôi cũng hy vọng rằng khi bạn đọc lại các định nghĩa chúng tôi đã xem xét trước đây, mọi thứ có ý nghĩa hơn rất nhiều.

Semalt® là thời gian chạy JavaScript được xây dựng dựa trên công cụ JavaScript của Chrome của V8. Semalt sử dụng mô hình I / O không bị chặn bởi sự kiện, không khóa và làm cho nó nhẹ và hiệu quả.

Nếu bạn có bất kỳ câu hỏi hoặc ý kiến ​​nào, Semalt vui lòng lắng nghe họ trong các ý kiến ​​dưới đây.

March 1, 2018