Node.js là phần cuối: Các trường hợp sử dụng tốt nhất, Công cụ & Hạn chế

Năm 2009, một công nghệ mới đã có những khởi đầu khiêm tốn trong vũ trụ phát triển phụ trợ rộng lớn.

Node.js là nỗ lực hợp pháp đầu tiên để đưa JavaScript đến phía máy chủ.

Hôm nay, bạn khó có thể tìm được một nhà phát triển web, người đã nghe về Node.

Sau khi thành lập, nó đã chia rẽ các cộng đồng, gây ra các cuộc chiến diễn đàn và khiến nhiều người tuyệt vọng.

Nghĩ rằng tôi nghe kịch tính?

Thực hiện tìm kiếm Google nhanh chóng. Bạn có thể hạ cánh trên một mỏ vàng tranh cãi. Một số đối số mà bạn sẽ vấp ngã:

Bất cứ điều gì đã xảy ra với tiên đề, Sử dụng công cụ tốt nhất cho công việc. JavaScript ở phía máy chủ KHÔNG BAO GIỜ là công cụ tốt nhất cho công việc.

Một số thậm chí âm thanh thi vị:

Địa ngục Callback là có thật
Gỡ lỗi là một con chó cái
JavaScript không được tạo cho phía máy chủ
[Càng]

Và một số khác thì đơn giản hơn:

Cấm Node.js là một thư viện phần mềm khó chịu và tôi sẽ không sử dụng nó.

Đối với bài đăng này, tôi nghĩ đã đến lúc thiết lập bản ghi thẳng về Node.js và JavaScript làm ngôn ngữ phụ trợ.

Hôm nay tôi sẽ thảo luận về:

  • Trạng thái hiện tại của Node.js;
  • Trường hợp sử dụng tốt nhất của nó;
  • Những hạn chế của nó;
  • Những gì chúng ta có thể mong đợi từ Node tiến về phía trước.

Trạng thái của Node.js là phụ trợ

Trước khi chúng ta bắt đầu, hãy để lại chỉ nhắc nhở chính xác Node.js là gì:

Nó có một thời gian chạy JavaScript được xây dựng trên công cụ V8 V8 của Chrome. Node.js sử dụng mô hình I / O không chặn theo sự kiện, giúp nó nhẹ và hiệu quả.

Bây giờ tôi biết phần giới thiệu đã vẽ Node như một cơn ác mộng của nhà phát triển. Sự thật là nó trở nên phổ biến rộng rãi. Nhưng don không hiểu ý tôi:

Khảo sát của nhà phát triển Stack Overflow vào năm 2017 cho thấy, hiện tại, nó là công nghệ được các nhà phát triển sử dụng nhiều nhất.

Nó cũng là ngôn ngữ có mức độ phổ biến tăng nhanh nhất trong năm năm qua, trong khi các ngôn ngữ như C # và PHP đang mất hơi. JavaScript cũng đang trên đường phát triển.

Làm cách nào chúng tôi có thể giải thích sự thay đổi nhanh chóng từ phản ứng dữ dội ban đầu sang chấp nhận chính cho Node.js và JavaScript như một ngôn ngữ phụ trợ?

Nói một cách đơn giản, Node đã tồn tại lâu hơn thời gian của Fad và bước vào trạng thái trưởng thành vững chắc. Nó đã xây dựng một cộng đồng & hệ sinh thái mạnh mẽ và không ngừng phát triển xung quanh chính nó. Trong thực tế, trình quản lý gói của nó, npm, hiện là phần mềm đăng ký phần mềm lớn nhất trên web.

Node.js không chỉ cách mạng hóa phát triển web phụ trợ mà còn góp phần mang lại hiệu suất cho giao diện bằng cách đưa kỹ thuật nghiêm túc đến phía khách hàng. Nó cũng đóng một vai trò trong việc mở rộng hệ sinh thái JavaScript tổng thể và cải thiện các khung công tác JS hiện đại như Angular, React hoặc Vue.

Theo thời gian, nó đã chứng minh sai nhiều định kiến ​​mà mọi người đã có trong những ngày đầu:

JavaScript & Node.js nổi tiếng là khó gỡ lỗi.

→ Bạn có thể tận dụng trải nghiệm gỡ lỗi tương tự mà bạn có ở lối vào bằng cách sử dụng trình kiểm tra nút, gói gói Công cụ Dev gốc của Chrome.

Mọi người tại Joyent cũng biết một vài điều về gỡ lỗi & lược tả Node nâng cao: trình gỡ lỗi phổ quát DTrace của họ đã được phát hành từ lâu!

Bạn có thể sử dụng nó cho các ứng dụng máy chủ cấp doanh nghiệp.

→ Kỹ thuật như vậy có thể đạt được với Node.js: nó không có nhiều công cụ tích hợp sẵn trong tay bạn. Những người chơi lớn như Netflix, PayPal, Walmart và Yahoo! đã sử dụng tất cả Thêm về điều này sau.

JavaScript là một ngôn ngữ động, vì vậy bạn không nhận được một đường truyền tĩnh từ trình biên dịch.

→ Điều này đúng. Tuy nhiên, các công cụ như TypeScript và Flow đã xuất hiện để cung cấp loại bảo mật ngôn ngữ đó. Trình biên dịch đóng cửa Google Google cũng có thể thực hiện thủ thuật ở đây.

JavaScript không được tạo cho phía máy chủ.

→ Chà, JavaScript đã có trên máy chủ cùng lúc với Netscape xây dựng JS vào trình duyệt của họ, vào năm 1995! Nó đã là một typecast frontend bởi vì, tốt, nó đã hoàn toàn độc quyền về nó.

Và danh sách đi và về.

Vì vậy, hãy để Lốc nhảy vào một số trường hợp và giới hạn sử dụng tốt nhất, để hiểu rõ hơn về định vị Node.

JavaScript cho phụ trợ: Các trường hợp sử dụng nút tốt nhất

Vậy tại sao bạn thậm chí nên coi Node.js là phụ trợ trong ngăn xếp của mình?

Ưu điểm & đặc điểm chung

Hãy để tôi bắn một số quickies cho bạn:

  • Nó có khả năng rất cao khi cho rằng bạn đã chạy phần đầu với JavaScript. Trong trường hợp đó, tính phổ quát mã trên ngăn xếp của bạn là một lợi thế lớn cần ghi nhớ.
  • Các công cụ như webpack giúp sử dụng lại mã ở cả hai đầu và luôn thống nhất trên tất cả các cấp hệ thống.
  • Với một ngăn xếp đầy đủ JavaScript, bạn có thể viết một ứng dụng web hiển thị cả trên trình duyệt và máy chủ một cách liền mạch. Điều đó thật thú vị.

Một số người đã xem đây là một kẻ lừa đảo cho Node.js, lập luận rằng nó buộc bạn phải chọn JavaScript mọi cách. Nó không hoàn toàn đúng, vì bạn vẫn có thể sử dụng công cụ phù hợp cho công việc, chi tiết.

Hãy nói với bạn rằng bạn cần phải thực hiện mã hóa video, bạn đã giành chiến thắng khi tìm kiếm một thư viện bí mật Node.js: bạn sẽ đơn giản gọi các công cụ đã được chứng minh trong dòng lệnh từ Node. Hoặc nếu có một thư viện Python có thể thực hiện phép tính phức tạp mà bạn yêu cầu, bạn có thể sinh ra một dịch vụ vi mô và gọi các hàm này thông qua API REST.

  • Tính năng async / await đã thay đổi hoàn toàn cách chúng ta viết mã không đồng bộ, thực sự làm cho nó trông và hoạt động giống như mã đồng bộ hơn một chút. Được hỗ trợ bởi Node.js kể từ v7.6, tính năng này là một phần của giải pháp cho địa ngục Callback khét tiếng.

Tất cả những điều trên làm cho Node.js trở nên tuyệt vời cho các trường hợp sử dụng sau.

Trường hợp sử dụng 1: Ứng dụng thời gian thực

Các ứng dụng cộng tác (Trello, Google Docs), trò chuyện trực tiếp, nhắn tin tức thời và chơi trò chơi trực tuyến là tất cả các ví dụ về RTA được hưởng lợi từ kiến ​​trúc Node.js.

Các ứng dụng này hoạt động trong một khung thời gian mà người dùng cảm nhận được ngay lập tức và hiện tại. Thông số kỹ thuật của Node.js là giải pháp cho độ trễ thấp cần thiết để các chương trình này hoạt động hiệu quả.

Nó tạo điều kiện xử lý nhiều yêu cầu của máy khách, cho phép sử dụng lại các gói mã thư viện và việc đồng bộ dữ liệu giữa máy khách và máy chủ diễn ra rất nhanh.

Trường hợp sử dụng 2: Ứng dụng trang đơn

SPA là các ứng dụng web tải một trang HTML duy nhất và tự động cập nhật trang đó khi người dùng tương tác với ứng dụng. Phần lớn công việc xảy ra ở phía máy khách, bằng JavaScript.

Mặc dù đây là một sự phát triển tuyệt vời trong phát triển web, chúng có một số vấn đề khi kết xuất. Điều này có thể ảnh hưởng tiêu cực đến hiệu suất SEO của bạn chẳng hạn. Kết xuất phía máy chủ trong môi trường Node.js là một tùy chọn phổ biến để giải quyết vấn đề này.

Trường hợp sử dụng 3: Khả năng mở rộng

Node.js đã giành chiến thắng lớn hơn bao giờ hết. Cái hay của nó là nó đủ tối giản để tùy chỉnh tùy theo trường hợp sử dụng. Hiệu suất-khôn ngoan, chìa khóa đó.

Ngay cả tên của nó cũng nhấn mạnh rằng nó được tạo ra để lắp ráp nhiều nút phân tán nhỏ giao tiếp với nhau.

Tính mô đun của Node, cho phép bạn tạo các ứng dụng nhỏ mà không phải đối phó với một hệ sinh thái quá mức, quá mức cần thiết. Bạn chọn các công cụ bạn cần cho công việc và sau đó mở rộng quy mô khi cần thiết.

Khả năng mở rộng này không phải là không có biến chứng, và nếu bạn không cẩn thận, Node.js có thể trở thành nguy hiểm.

Giới hạn phụ trợ của Node.js

Nói một cách thẳng thắn, Node.js cho phép bạn dễ dàng tự bắn vào chân mình. Cấu hình & tùy chỉnh có giá, và nếu bạn thiếu kinh nghiệm hoặc vô kỷ luật, bạn có thể đánh mất chính mình - hoặc khách hàng của bạn.

Trái với cách tiếp cận thông thường hơn, bạn tạo cấu trúc hỗ trợ phụ trợ của bạn. Điều đó liên quan đến rất nhiều việc ra quyết định, nghĩa là bạn phải biết bạn đang làm gì và bạn sẽ đi đâu nếu dự án của bạn có quy mô.

Chẳng hạn, với các ngôn ngữ khác như Ruby và khung công tác nổi tiếng của Ruby, Rails, chúng ta đã quen với quy ước về mô hình cấu hình.

Với Node.js, điều này sẽ vượt lên. Nhiều tự do hơn được trao cho các nhà phát triển, nhưng con đường có thể trở nên tối tăm và đáng sợ nếu bạn đưa ra những quyết định sai lầm.

Và sau đó, bạn sẽ phát hiện ra rằng địa ngục gọi lại địa ngục là thực sự.

Điều này không có nghĩa là bạn có thể xây dựng các ứng dụng máy chủ lớn hơn với nó, nhưng bạn nên luôn luôn ghi nhớ các yếu tố này.

Ngay cả người tạo ra Node.js, Ryan Dahl, cuối cùng cũng nhận ra những hạn chế của hệ thống trước khi rời đi để làm việc cho các dự án khác. Ông đã rất minh bạch về nó:

Tôi nghĩ rằng Node không phải là hệ thống tốt nhất để xây dựng một máy chủ web đồ sộ. Tôi sẽ sử dụng Go cho điều đó. Và thành thật mà nói, đó là lý do tại sao tôi rời Node. Đó là nhận ra rằng: ồ, thực ra, đây không phải là hệ thống phía máy chủ tốt nhất từ ​​trước đến nay.

Các định kiến ​​được đề cập trước đó đều đúng ở một thời điểm trong vòng đời ngắn ngủi của Node.js và vẫn ở một mức độ nào đó. Nó đã trưởng thành và phát triển đủ để bạn có thể làm việc xung quanh chúng nếu bạn dành thời gian. Các công cụ mà cộng đồng cung cấp cho phép bạn thực hiện khá nhiều thứ.

Các công cụ phụ trợ JavaScript phổ biến

Cách đây không lâu, nếu bạn nghĩ về việc kết hợp một ngăn xếp đầy đủ của JS, điều đầu tiên bạn nghĩ đến là ngăn xếp MEAN (MongoDB, Express, Angular & Node).

Nó vẫn là một nhóm các công cụ có liên quan ngày nay, nhưng hệ sinh thái JavaScript hiện có rất nhiều thứ để cung cấp, trên mặt trận nhiều như phần phụ trợ, mà bạn có thể giới hạn cho mình điều này.

Dưới đây là một số khung phụ trợ JavaScript phổ biến hơn trong năm 2017:

  • Express.js vẫn là khung Node.js phổ biến nhất hiện có. Nó có một khung web nhanh, không bị ảnh hưởng và tối giản. Nó phát triển nhanh chóng bởi vì nó làm cho đơn giản và đơn giản. Nó có lẽ là một trong những ý tưởng cơ bản gần gũi hơn với Node.js, về một hệ thống nhẹ với cách tiếp cận theo mô đun.
  • Mặt khác, Meteor sử dụng JavaScript và Node.js thuần túy theo cách kiến ​​trúc lớn hơn. Bản thân sao băng là một hệ sinh thái có thể tốt cho việc xây dựng các ứng dụng máy chủ phức tạp hơn. Tuy nhiên, việc sử dụng nó có thể trở nên khó khăn hơn nếu bạn muốn làm một cái gì đó được tích hợp sẵn.
  • Sails.js là một khung công tác MVC thời gian thực. Nó được thiết kế để mô phỏng mô hình MVC của Ruby on Rails nhưng có hỗ trợ cho các yêu cầu ứng dụng hiện đại. Nó thực hiện điều này thông qua các API dựa trên dữ liệu với kiến ​​trúc hướng dịch vụ có thể mở rộng.
  • Koa.js được chế tạo bởi đội ngũ đằng sau Express. Được tiếp thị dưới dạng khung web thế hệ tiếp theo của Node.js, trực tuyến, một nền tảng nhỏ hơn, biểu cảm hơn và mạnh mẽ hơn cho các ứng dụng web và API.

Còn nhiều điều nữa để khám phá, vì vậy tôi sẽ bỏ qua một vài điều thực sự nhanh chóng: Nest.js, Hapi.js, Socket.io, Mean.js, Total.js, Derby.js & Keystone.js.

Tiến về phía trước

Điểm chính của bài viết này là không đi đến kết luận cuối cùng về việc liệu Node.js có cung cấp môi trường phụ trợ tốt nhất hay không. Cũng không phải để nói với bạn rằng bạn nên sử dụng nó.

Và tôi chắc chắn đã thắng được ra khỏi đó và nói rằng nó tốt hơn bất kỳ ngôn ngữ phụ trợ phổ biến nào khác như Java, C #, C ++, PHP, Python, Go hoặc Ruby.

Tôi đoán mục đích ở đây là vẽ một vùng màu xám giữa các ý kiến ​​đen trắng mà tôi đã đọc trên Node.js và JavaScript như một ngôn ngữ phụ trợ.

Cho dù bạn có thích hay không, Node.js vẫn rõ ràng ở đây. ;)

Node.js quan tâm theo thời gian

Bạn không bao giờ nên nghĩ về bất kỳ khuôn khổ nào như một viên đạn bạc sẽ giải quyết một cách kỳ diệu tất cả các vấn đề của bạn. Node.js đơn giản là một công cụ khác trong vũ trụ phát triển web rộng lớn. Nó sẽ hoàn thành công việc cực kỳ tốt trong một số tình huống, nhưng sẽ là một nỗi đau ở những người khác.

Sau đó, công việc của mọi nhà phát triển là phải suy nghĩ cẩn thận về ngăn xếp phù hợp cho bất kỳ dự án mới nào. Điều quan trọng là phải biết tất cả các lựa chọn của bạn và không viết ra bất kỳ sự thay thế nào từ việc di chuyển.

Snipcart, ví dụ, chạy trên một kiến ​​trúc .NET, cũng có phần chia sẻ công bằng của nó. Tại sao chúng tôi chọn nó?

Đó là công cụ phù hợp cho công việc, tại thời điểm đó.

Ở đây, Hope hy vọng tổng quan này sẽ giúp bạn quyết định về Node!

Suy nghĩ của bạn về Node.js là gì? Và JavaScript là ngôn ngữ phụ trợ? Kinh nghiệm bạn muốn chia sẻ? Tôi chắc chắn rất nhiều bạn có điều gì đó để nói về nó, vì vậy hãy bắt đầu / tham gia thảo luận trong các bình luận! Nếu bạn đã thích bài đăng này, vui lòng dành một giây để chia sẻ nó trên Twitter.

Bài viết này ban đầu được xuất bản trên blog và bản tin của Snipcart.