Nodejs lấy url gốc 2024

Xem Nodejs lấy url gốc 2024

Nút. js tỏa sáng trong các ứng dụng web thời gian thực sử dụng công nghệ đẩy qua WebSocket. Các kết nối hai chiều, thời gian thực của nút—nơi mỗi máy khách và máy chủ có thể bắt đầu giao tiếp—cho phép trao đổi dữ liệu tự do hơn

Qua

Tomislav Capan

Tomislav là Kiến trúc sư giải pháp, nhà phát triển và tư vấn kỹ thuật được AWS chứng nhận với hơn 10 năm kinh nghiệm. Tomislav có bằng thạc sĩ về máy tính

CHIA SẺ

CHIA SẺ

Đọc bản tiếng Tây Ban Nha

của bài viết này do Isabella Rolz dịch

Ghi chú của biên tập viên. Phiên bản tiếng Anh của bài viết này đã được cập nhật vào ngày 10/03/2022 bởi nhóm biên tập của chúng tôi. Nó đã được sửa đổi để bao gồm các nguồn gần đây và phù hợp với các tiêu chuẩn biên tập hiện tại của chúng tôi

Sự phổ biến của JavaScript đã kéo theo rất nhiều thay đổi. Những điều chúng ta làm trên web ngày nay thật khó tưởng tượng chỉ vài năm trước

Trước khi chúng tôi tìm hiểu về Node. js (“Node”), hãy xem xét việc áp dụng JavaScript trên toàn bộ ngăn xếp để thống nhất ngôn ngữ và định dạng dữ liệu (JSON), sẽ tạo điều kiện thuận lợi cho việc sử dụng lại tài nguyên của nhà phát triển một cách tối ưu. Vì đây là một lợi ích của JavaScript hơn là Node. js cụ thể, chúng tôi sẽ không giải thích thêm

Với tất cả những ưu điểm của mình, Node. js đóng một vai trò quan trọng trong kho công nghệ của nhiều công ty nổi tiếng, những người phụ thuộc vào lợi ích độc đáo của nó. nút này. js giải quyết cách nhận ra những lợi thế này và lý do tại sao bạn có thể—hoặc có thể không—sử dụng Node. js

nút là gì. js?

Nút. js bao gồm công cụ JavaScript V8 của Google, lớp trừu tượng nền tảng libUV và thư viện cốt lõi được viết bằng JavaScript. Ngoài ra, Nút. js dựa trên ngăn xếp web mở (HTML, CSS và JS) và hoạt động trên cổng tiêu chuẩn 80

Nút. js cung cấp cho các nhà phát triển một công cụ toàn diện để làm việc trong mô hình I/O không chặn, hướng sự kiện. Ryan Dahl, người tạo ra Nút. js được “lấy cảm hứng từ các ứng dụng như Gmail” và—trong việc tạo Node. js—nhằm mục đích tạo các trang web thời gian thực với khả năng đẩy

Sau hơn 20 năm web không trạng thái dựa trên mô hình phản hồi yêu cầu không trạng thái, cuối cùng chúng ta cũng có các ứng dụng web với kết nối hai chiều, thời gian thực

Tại sao nên sử dụng nút. js?

Nút. js tỏa sáng trong các ứng dụng web thời gian thực sử dụng công nghệ đẩy qua WebSocket. Sau hơn 20 năm web không trạng thái dựa trên mô hình phản hồi yêu cầu không trạng thái, cuối cùng chúng ta cũng có các ứng dụng web với kết nối hai chiều, thời gian thực, trong đó cả máy khách và máy chủ đều có thể bắt đầu giao tiếp, cho phép chúng trao đổi dữ liệu tự do hơn. Điều này hoàn toàn trái ngược với mô hình phản hồi web điển hình, nơi khách hàng luôn bắt đầu giao tiếp

Người ta có thể lập luận rằng chúng ta đã có công nghệ này trong nhiều năm dưới dạng Flash và Java Applet. Tuy nhiên, trên thực tế, đó chỉ là những môi trường hộp cát sử dụng web làm giao thức vận chuyển để gửi đến máy khách. Ngoài ra, các Applet Flash và Java được chạy độc lập và thường hoạt động trên các cổng không chuẩn, có thể yêu cầu thêm quyền

Nút như thế nào. js Công việc?

Node thực sự tỏa sáng trong việc xây dựng các ứng dụng mạng nhanh, có khả năng mở rộng. Điều này là do khả năng xử lý một số lượng lớn các kết nối đồng thời với thông lượng cao

Nút. js sử dụng I/O không chặn, theo sự kiện để duy trì trọng lượng nhẹ và hiệu quả khi đối mặt với các ứng dụng thời gian thực sử dụng nhiều dữ liệu chạy trên các thiết bị phân tán

Nút. js là một nền tảng đáp ứng một nhu cầu cụ thể và hiểu điều này là vô cùng cần thiết. Ví dụ, bạn sẽ không sử dụng Node. js để thực hiện các hoạt động sử dụng nhiều CPU. Gần như tất cả các lợi thế của Node sẽ bị hủy bỏ nếu nó được sử dụng để tính toán nặng

Nút. js là một nền tảng đáp ứng nhu cầu cụ thể. Nó không phải là viên đạn bạc hay nền tảng sẽ thống trị thế giới phát triển web

tiếng riu ríu

Làm thế nào nút. js hoạt động bí mật thật thú vị. So với các kỹ thuật phục vụ web truyền thống trong đó mỗi kết nối (yêu cầu) tạo ra một luồng mới (chiếm RAM hệ thống và cuối cùng sử dụng tối đa dung lượng RAM có sẵn), Node. js hoạt động trên một luồng đơn, sử dụng lệnh gọi I/O không chặn. Điều này cho phép Node hỗ trợ hàng chục nghìn kết nối đồng thời được tổ chức trong vòng lặp sự kiện

Theo bài viết năm 2011 của Michael Abernethy “Node là gì. js?”, lấy một chuỗi có bộ nhớ 2 MB đi kèm, chạy trên hệ thống có RAM 8 GB và cung cấp tối đa theo lý thuyết là 4.000 kết nối đồng thời. Thêm vào đó là chi phí chuyển đổi ngữ cảnh giữa các luồng và bạn sẽ có một kịch bản phổ biến trong các kỹ thuật phục vụ web truyền thống. Nút. js tránh được tất cả điều này, đạt được mức khả năng mở rộng cao

Tất nhiên, có câu hỏi về việc chia sẻ một luồng duy nhất trong số tất cả các yêu cầu của khách hàng, một cạm bẫy tiềm ẩn khi viết Node. ứng dụng js

Đầu tiên, tính toán nặng nề có thể làm tắc nghẽn luồng đơn của Node và gây ra sự cố cho tất cả các máy khách, vì các yêu cầu đến sẽ bị chặn cho đến khi quá trình tính toán nói trên hoàn tất

Thứ hai, các nhà phát triển cần cảnh giác và ngăn chặn các ngoại lệ xuất hiện ở nút lõi (trên cùng). js, vì điều này sẽ khiến Node. js để chấm dứt, làm hỏng chương trình một cách hiệu quả

Để ngăn luồng ngoại lệ, chúng tôi chuyển lỗi trở lại trình gọi dưới dạng tham số gọi lại (thay vì “ném”, như chúng tôi làm trong một số môi trường khác). Nếu một ngoại lệ chưa được xử lý xuất hiện, chúng ta có thể sử dụng mô-đun Forever hoặc các công cụ bên ngoài như upstart và monit và just upstart để theo dõi Nút. js và thực hiện khôi phục cần thiết cho một phiên bản bị lỗi. Lưu ý rằng những công cụ này không giải quyết việc khôi phục trạng thái hiện tại của phiên người dùng

npm. Trình quản lý gói nút

Hỗ trợ tích hợp để quản lý gói bằng npm được bao gồm trong mọi Nút. cài đặt js. Ý tưởng đằng sau các mô-đun npm tương tự như ý tưởng của Ruby Gems. Nó là một tập hợp các thành phần có sẵn công khai, có thể tái sử dụng, dễ dàng cài đặt thông qua kho lưu trữ trực tuyến, với quản lý phiên bản và phụ thuộc

npm Inc. chia sẻ danh sách các mô-đun được đóng gói cũng có thể truy cập thông qua công cụ npm CLI của nó. Hệ sinh thái mô-đun mở cho tất cả mọi người xuất bản mô-đun của riêng họ, mô-đun này sẽ được thêm vào kho lưu trữ npm

Một số mô-đun npm hữu ích bao gồm

thể hiện, thể hiện. js hoặc đơn giản là Express

Khung phát triển web lấy cảm hứng từ Sinatra cho Node. js và tiêu chuẩn thực tế cho phần lớn Node. ứng dụng js

hapi

Khung tập trung vào cấu hình mô-đun và dễ sử dụng để xây dựng các ứng dụng web và dịch vụ

liên kết

Khung máy chủ HTTP có thể mở rộng cho Node. js, cung cấp một tập hợp các plugin hiệu suất cao được gọi là phần mềm trung gian;

ổ cắm. io và sockjs

Một thành phần phía máy chủ của hai thành phần WebSocket phổ biến

pug (trước đây là Jade)

Một công cụ tạo khuôn mẫu lấy cảm hứng từ HAML, một công cụ mặc định trong Express. js

mongodb và mongojs

Trình bao bọc MongoDB để cung cấp API cho cơ sở dữ liệu đối tượng MongoDB trong Node. js

làm lại

Thư viện máy khách Redis

lodash, gạch dưới, lười biếng. js

Vành đai tiện ích JavaScript. Underscore bắt đầu trò chơi nhưng bị lật đổ bởi một trong hai đối tác của nó, chủ yếu là do lười biếng. js’ hiệu suất tốt hơn và triển khai mô-đun

mãi mãi

Một tiện ích để đảm bảo rằng tập lệnh nút đã cho chạy liên tục; . js xử lý trong quá trình sản xuất khi đối mặt với bất kỳ lỗi không mong muốn nào

chim xanh

Triển khai Promise/A+ đầy đủ tính năng với hiệu suất đặc biệt tốt

chốc lát. js

Thư viện ngày JavaScript để phân tích cú pháp, xác thực, thao tác và định dạng ngày

Nơi sử dụng nút. js

Trò chuyện

Trò chuyện là một ứng dụng nhiều người dùng, thời gian thực điển hình—từ IRC (trước đây)—đến các triển khai hiện đại trong Node. js with WebSocket

Ứng dụng trò chuyện nhẹ, lưu lượng truy cập cao và sử dụng nhiều dữ liệu (nhưng khả năng xử lý/tính toán thấp). Nó chạy trên các thiết bị phân tán và là ví dụ điển hình cho Node. js

Đơn giản, nhưng bao gồm hầu hết các mô hình mà bạn sẽ sử dụng trong một Nút điển hình. js, trò chuyện là một trường hợp sử dụng tuyệt vời cho việc học

Let’s depict how chat works. Giả sử chúng tôi có một phòng trò chuyện duy nhất nơi người dùng có thể trao đổi tin nhắn theo kiểu một-nhiều (thực tế là tất cả). Cũng giả sử có ba người dùng được kết nối với bảng tin của chúng tôi

Về phía máy chủ, một Express đơn giản. js application implements

  1. Trình xử lý yêu cầu GET / phục vụ trang web chứa bảng tin và nút ‘Gửi’ để khởi tạo đầu vào tin nhắn mới và
  2. Máy chủ WebSocket lắng nghe các tin nhắn mới do máy khách WebSocket phát ra

    Về phía khách hàng, chúng tôi có một trang HTML với một số trình xử lý được thiết lập

    1. Trình xử lý cho sự kiện nhấp vào nút ‘Gửi’, nhận thông báo đầu vào và gửi nó xuống WebSocket
    2. A handler that listens for new incoming messages on the WebSocket client (i. e. , thông báo do người dùng tạo mà máy chủ muốn máy khách hiển thị)

      Khi một khách hàng đăng một tin nhắn, đây là những gì sẽ xảy ra

      1. Trình duyệt bắt nút ‘Gửi’ khi nhấp qua trình xử lý JavaScript. Nó lấy giá trị từ trường đầu vào (i. e. , văn bản tin nhắn) và phát ra một tin nhắn WebSocket bằng ứng dụng khách WebSocket được kết nối với máy chủ của chúng tôi (được khởi tạo khi khởi tạo trang web)
      2. Thành phần phía máy chủ của kết nối WebSocket nhận tin nhắn và chuyển tiếp nó tới tất cả các máy khách được kết nối khác, sử dụng phương thức quảng bá
      3. All clients receive the new message as a push message, via a WebSocket client-side component running within the web page. Sau đó, khách hàng chọn nội dung tin nhắn và cập nhật trang web tại chỗ, bằng cách thêm tin nhắn mới vào bảng

        Đây là một ví dụ đơn giản về trò chuyện thời gian thực với NodeJS, Socket. io và ExpressJS

        Để có giải pháp hiệu quả hơn, bạn có thể sử dụng bộ đệm đơn giản dựa trên cửa hàng Redis. Hoặc trong một giải pháp nâng cao hơn nữa, hãy sử dụng hàng đợi tin nhắn để xử lý việc định tuyến tin nhắn đến máy khách và cơ chế phân phối mạnh mẽ hơn. Hàng đợi có thể bao gồm các trường hợp mất kết nối tạm thời hoặc lưu trữ tin nhắn cho khách hàng đã đăng ký khi họ ngoại tuyến

        Bất kể giải pháp bạn chọn là gì, Node. js hoạt động theo các nguyên tắc cơ bản giống nhau. phản ứng với các sự kiện, xử lý nhiều kết nối đồng thời và duy trì tính trôi chảy trong trải nghiệm người dùng

        API trên đầu DB đối tượng

        Nút. js là sự phù hợp tự nhiên để hiển thị dữ liệu từ các DB đối tượng (e. g. , MongoDB). Dữ liệu được lưu trữ JSON cho phép Node. js hoạt động mà không có trở kháng không phù hợp và chuyển đổi dữ liệu

        Chẳng hạn, nếu bạn đang sử dụng Rails, bạn sẽ chuyển đổi từ JSON sang mô hình nhị phân, sau đó hiển thị chúng trở lại dưới dạng JSON qua HTTP khi dữ liệu được sử dụng bởi Backbone. js, góc cạnh. js, v.v. —hoặc thậm chí các cuộc gọi jQuery AJAX đơn giản. với nút. js, bạn có thể hiển thị các đối tượng JSON bằng API REST để máy khách sử dụng

        Nếu bạn đang sử dụng MongoDB, bạn không cần lo lắng về việc chuyển đổi giữa JSON và bất kỳ thứ gì khác khi đọc hoặc ghi từ cơ sở dữ liệu. Do đó, bạn có thể tránh nhu cầu chuyển đổi nhiều lần bằng cách sử dụng định dạng tuần tự hóa dữ liệu thống nhất trên máy khách, máy chủ và cơ sở dữ liệu

        Đầu vào xếp hàng

        Nút cho phép bạn linh hoạt đẩy việc xóa sổ cơ sở dữ liệu sang một bên. Nhưng thậm chí còn có nhiều lý do hơn để sử dụng Node. js

        Nếu bạn đang nhận một lượng lớn dữ liệu đồng thời, cơ sở dữ liệu của bạn có thể trở thành nút cổ chai. Nút. js có thể dễ dàng xử lý các kết nối đồng thời. Bởi vì—trong trường hợp này—việc truy cập cơ sở dữ liệu là một thao tác ngăn chặn, nên chúng tôi gặp rắc rối. Giải pháp là thừa nhận hành vi của khách hàng trước khi dữ liệu thực sự được ghi vào cơ sở dữ liệu

        Cách tiếp cận này cho phép hệ thống duy trì khả năng phản hồi khi tải nặng. Tính năng này đặc biệt hữu ích khi khách hàng không yêu cầu xác nhận chắc chắn về việc ghi dữ liệu thành công, khi ghi nhật ký hoặc ghi dữ liệu theo dõi người dùng, được xử lý theo lô, để sử dụng sau này hoặc cho các hoạt động không cần thiết

        Dữ liệu được xếp hàng đợi thông qua một số loại bộ nhớ đệm hoặc cơ sở hạ tầng xếp hàng tin nhắn như RabbitMQ hoặc ZeroMQ. Sau đó, nó được tiêu hóa bởi một quy trình ghi hàng loạt cơ sở dữ liệu riêng biệt hoặc dịch vụ phụ trợ xử lý tính toán chuyên sâu, được viết trên một nền tảng hoạt động tốt hơn cho tác vụ như vậy

        Nói ngắn gọn. Với Node, bạn có thể đẩy việc ghi cơ sở dữ liệu sang một bên để xử lý sau

        Truyền dữ liệu

        Tại sao không sử dụng Nút. js trong truyền dữ liệu? . Chúng ta có thể sử dụng quan sát này để xây dựng một số Node thú vị. tính năng js

        Ví dụ: chúng tôi có thể xử lý tệp trong khi chúng vẫn đang được tải lên. Khi dữ liệu đến qua một luồng, chúng tôi có thể xử lý dữ liệu song song trong quá trình tải lên đó. Điều này đúng với mã hóa âm thanh hoặc video thời gian thực và ủy quyền giữa các nguồn dữ liệu khác nhau

        Ủy quyền

        Nút. js dễ dàng được sử dụng làm proxy phía máy chủ, nơi nó có thể xử lý một lượng lớn kết nối đồng thời theo cách không chặn. Nó hữu ích cho việc ủy ​​quyền các dịch vụ khác nhau với thời gian phản hồi khác nhau hoặc thu thập dữ liệu từ nhiều điểm nguồn

        Ví dụ: hãy xem xét ứng dụng phía máy chủ giao tiếp với tài nguyên của bên thứ ba, lấy dữ liệu từ các nguồn khác nhau hoặc lưu trữ nội dung (như hình ảnh và video) vào dịch vụ đám mây của bên thứ ba

        Sử dụng Nút thay cho máy chủ proxy chuyên dụng có thể hữu ích nếu cơ sở hạ tầng ủy quyền của bạn không tồn tại hoặc nếu bạn cần một giải pháp để phát triển cục bộ. Bằng cách này, ý tôi là bạn có thể xây dựng ứng dụng phía máy khách bằng Node. máy chủ phát triển js cho nội dung và yêu cầu ủy quyền/sơ khai API. Trong sản xuất, bạn sẽ xử lý các tương tác như vậy với dịch vụ proxy chuyên dụng (như nginx hoặc HAProxy)

        Môi giới/Bảng điều khiển của nhà giao dịch chứng khoán

        Ở cấp độ ứng dụng, phần mềm giao dịch của nhà môi giới là một ví dụ khác trong đó phần mềm máy tính chiếm ưu thế, nhưng có thể dễ dàng thay thế bằng giải pháp web thời gian thực. Phần mềm giao dịch của nhà môi giới theo dõi giá cổ phiếu, thực hiện tính toán và phân tích kỹ thuật, đồng thời hiển thị đồ thị và biểu đồ

        Tại sao không sử dụng Nút. js để viết một giải pháp dựa trên web thời gian thực cho các nhà môi giới? . Chúng tôi có thể sớm gặp các nhà môi giới của mình trên bãi biển ở Florida hoặc Ibiza hoặc Bali

        Bảng điều khiển giám sát ứng dụng

        Hãy tưởng tượng bạn có thể phát triển doanh nghiệp của mình như thế nào nếu bạn có thể thấy khách truy cập của mình đang làm gì trong thời gian thực. Với ổ cắm hai chiều, thời gian thực của Node, bạn có thể đạt được khả năng này

        Nút với WebSocket hoàn toàn phù hợp để theo dõi khách truy cập trang web và trực quan hóa các tương tác của họ trong thời gian thực

        Lý do nên sử dụng Nút. js cho bảng điều khiển giám sát bao gồm thu thập số liệu thống kê theo thời gian thực từ người dùng hoặc giới thiệu các tương tác được nhắm mục tiêu với khách truy cập của bạn bằng cách mở kênh liên lạc tại một điểm cụ thể trong kênh của bạn. CANDDi sản xuất ý tưởng này

        Bảng điều khiển giám sát hệ thống

        Bây giờ, hãy đến thăm khía cạnh cơ sở hạ tầng của mọi thứ. Ví dụ, hãy tưởng tượng một nhà cung cấp SaaS muốn cung cấp cho người dùng một trang giám sát dịch vụ, như trang trạng thái của GitHub. với nút. js, chúng ta có thể tạo một bảng điều khiển dựa trên web mạnh mẽ để kiểm tra trạng thái của dịch vụ theo cách không đồng bộ, đẩy dữ liệu đến máy khách bằng WebSocket

        Cả trạng thái nội bộ (nội bộ công ty) và dịch vụ công cộng đều có thể được báo cáo trực tiếp và theo thời gian thực bằng cách sử dụng công nghệ này. Push a little further and try to imagine a network operations center (NOC) that monitors the applications of a telecommunications operator, cloud/network/hosting provider, or some financial institution. The applications would run on the open web stack backed by Node. js và WebSocket

        Đừng cố xây dựng các hệ thống thời gian thực cứng trong Node (tôi. e. , hệ thống yêu cầu thời gian phản hồi nhất quán). Erlang có lẽ là lựa chọn tốt hơn cho loại ứng dụng đó

        Nơi sử dụng nút. js, nhưng thận trọng

        Server-side Web Applications

        với nút. js với Express. js, bạn có thể tạo các ứng dụng web cổ điển ở phía máy chủ. While possible, this request-response paradigm in which Node. js would carry rendered HTML is not an ideal use case. There are arguments to be made for and against this approach. Here are some facts to consider

        Pros

        • You can significantly ease the development of an application that does not require CPU-intensive computation, by using Javascript to build it top to bottom, even down to the database level—if you use JSON storage Object DB (e. g. , MongoDB)
        • Crawlers receive a fully rendered HTML response, which is far more SEO friendly than, say, a Single Page Application or a WebSocket app that runs on top of Node. js

        Cons

        • Any CPU-intensive computation will block Node. js responsiveness, so a threaded platform is a better approach. Alternatively, you could try scaling out the computation
        • Using Node. js with a relational database can be painful. If you’re trying to perform relational operations, consider going with an environment such as Rails, Django, or ASP. Net MVC

        An alternative to CPU-intensive computations is to create a highly scalable MQ-backed environment with back-end processing to keep Node as a front-facing “clerk” to handle client requests asynchronously

        Where Not to Use Node. js

        There are situations where Node may not be the best tool for the job

        Server-side Web Application With a Relational Database Application

        Ruby on Rails was once the clear choice as a tool to access relational databases like PostgreSQL, MySQL, and Microsoft SQL Server. This was because relational DB tools for Node. js were still in their early stages while, in contrast, Rails automatically provided data access setup right out of the box, together with DB schema migrations support tools, and other Gems (pun intended). Rails and its peer frameworks have mature and proven Active Record or Data Mapper data access layer implementations

        It’s possible and not uncommon to use Node solely on the front end, while keeping your Rails back end with its easy access to a relational DB

        But things have changed. Sequelize, TypeORM, and Bookshelf have come a long way toward becoming mature ORM solutions. Cũng có thể đáng để xem Tham gia Quái vật nếu bạn đang muốn tạo SQL từ các truy vấn GraphQL

        Heavy Server-side Computation and/or Processing

        Node. js is not the best platform to handle heavy computation. No, you definitely don’t want to build a Fibonacci computation server in Node. js

        In general, any CPU-intensive operation annuls all the throughput benefits Node offers with its event-driven, nonblocking I/O model. This is because incoming requests are blocked while the thread is occupied with your number-crunching—assuming you’re trying to run computations in the same Node instance used to respond to requests

        Since Node. js is single-threaded and uses only a single CPU core, it would require considerable effort to develop a cluster module in order to deliver concurrency on a multicore server. Alternatively, you can run several Node. js server instances pretty easily behind a reverse proxy via nginx

        With clustering, you should still offload all heavy computation to background processes. Ensure that you use an appropriate environment for the background processes, and that they communicate via a message queue server like RabbitMQ

        While you may run background processes on the main server, this approach may not scale well once the load increases. You may distribute background processing services to separate worker servers without the need to configure the loads of front-facing web servers

        With Node. js—as opposed to most other platforms—you enjoy that high reqs/sec throughput we talked about, as each request is a small task that Node handles quickly and efficiently

        Why Choose Node. js?

        We discussed Node. js from theory to practice, beginning with its purpose, and ending with its sweet spots and pitfalls

        Problems with Node almost always originate from the fact that blocking operations are the root of all evil—and 99% of Node misuses are a direct consequence

        In Node, blocking operations are the root of all evil—99% of Node misuses are a direct consequence

        tiếng riu ríu

        If your use case does not contain CPU-intensive operations, nor accesses blocking resources, you can exploit the benefits of Node. js and enjoy fast and scalable network applications. Welcome to the real-time web

        Understanding the basics

        What is Node. js?

        Node. js is a server-side, open-source, JavaScript runtime environment. Node uses Google’s V8 engine—libUV—to deliver cross-platform compatibility and a core library. Notably, Node. js does not expose a global window object, since it does not run within a browser

        What is Node. js used for?

        Because Node. js is single-threaded, we use it primarily for non-blocking, event-driven servers. We can also use Node. js for traditional websites and back-end API services, as it was designed with real-time, push-based architectures in mind

        What is a web framework?

        Web frameworks like Angular and React are libraries that help organize and generate the front-end code that runs in a web browser. Web frameworks reuse code for common operations, thereby reducing development time. Some web frameworks are full stack

        Is Node. js a framework?

        No, Node. js is an environment. Back-end frameworks run within Node. js. Popular, compatible frameworks include Express. js (also referred to as Express) for HTTP servers and Socket. IO for WebSocket servers

        là nút. js một ngôn ngữ lập trình?

        Nút. js không phải là ngôn ngữ lập trình. Các “. js” ở cuối tên của nó cho biết JavaScript là ngôn ngữ lập trình được liên kết với nó. Bất cứ thứ gì có thể chuyển mã sang JavaScript—như TypeScript, Haxe hoặc CoffeeScript—cũng có thể được sử dụng với Node. js

        Tại sao là nút. js phổ biến?

        Bên cạnh hiệu quả cao, Node. js is popular because of its huge, active, open-source, JavaScript-based ecosystem

        Sự khác biệt giữa nút là gì. js và Góc/AngularJS?

        The Node. js thực thi mã JavaScript trên máy chủ, trong khi đó Angular là một khung JavaScript được thực thi trên máy khách (i. e. , trong trình duyệt web)

        Tại sao là nút. js xấu?

        Nút. js không tệ. Công nghệ của nó được sử dụng rộng rãi cho nhiều loại máy chủ. Tuy nhiên, vì là đơn luồng nên Node. js không lý tưởng cho các máy chủ web gấp đôi máy chủ tính toán—việc tính toán nặng như vậy sẽ cản trở khả năng phản hồi của máy chủ

        thẻ

        JavaScript/Nút. js

        Người làm việc tự do? Tìm công việc tiếp theo của bạn.

        JavaScript Developer Jobs

        View full profile

        Tomislav Capan

        Cloud Solution Architect and Lead Developer

        About the author

        Tomislav is a software engineer, technical consultant, and solution architect who began as a technical partner for an online media business, growing it from zero to over 100,000 monthly readers. After years in software engineering, he now provides technical leadership through consulting and architecting dynamic, reliable, and scalable cloud solutions to support business growth and optimize complex architectures gone wrong. As an infrastructure lead, he makes the cloud a friendly place

        Hire Tomislav

        Comments

        Anony Mouse

        For relational DBs on Node, I like http. //bookshelfjs. org/

        Anony Mouse

        For relational DBs on Node, I like http. //bookshelfjs. org/

        Adin Scannell

        Awesome article. I definitely agree that node. js has some really perfectly suited use cases. However, I do want to comment on something that is a bit of a pet peeve of mine — I wish you wouldn’t contrast it with a non-existent straw-man “traditional” system in “how it works”. 1) No server spawns a thread per request (they use thread pools or process pools). 2) You say “cost of context switching” as if it only applies to OS threads. Userspace frames need to be saved and loaded in the same way. Plus the OS does it with a few instructions, leveraging specialized support from the hardware — which userspace can’t do. 3) Similarly, userspace threads (I. e. frames or closures if you don’t want to talk threads) take memory resources in the same way kernel threads do. It’s not as if each system thread has it’s full stack limit allocated, so that’s an unfair analysis. Normal systems regularly have more than 4000 without coming anywhere near where you’ve pegged it. 4) The BIG problem with single-thread concurrency is the lack of parallelism. Sure, you can handle thousands of requests per second, but only one CPU on your 40 core server is going to doing ANY work. Dù sao đi nữa, tất cả những điều trên liên quan đến một đoạn khá nhỏ trong bài đăng xuất sắc của bạn. Node isn’t really guilty of this, it’s just that there’s a lot of FUD out there around threads and processes which people often use to justify insane designs (and avoid threads when they are completely the right approach for the majority of situations)

        Adin Scannell

        Awesome article. I definitely agree that node. js has some really perfectly suited use cases. However, I do want to comment on something that is a bit of a pet peeve of mine — I wish you wouldn’t contrast it with a non-existent straw-man “traditional” system in “how it works”. 1) No server spawns a thread per request (they use thread pools or process pools). 2) You say “cost of context switching” as if it only applies to OS threads. Userspace frames need to be saved and loaded in the same way. Plus the OS does it with a few instructions, leveraging specialized support from the hardware — which userspace can’t do. 3) Similarly, userspace threads (I. e. frames or closures if you don’t want to talk threads) take memory resources in the same way kernel threads do. It’s not as if each system thread has it’s full stack limit allocated, so that’s an unfair analysis. Normal systems regularly have more than 4000 without coming anywhere near where you’ve pegged it. 4) The BIG problem with single-thread concurrency is the lack of parallelism. Sure, you can handle thousands of requests per second, but only one CPU on your 40 core server is going to doing ANY work. Dù sao đi nữa, tất cả những điều trên liên quan đến một đoạn khá nhỏ trong bài đăng xuất sắc của bạn. Node isn’t really guilty of this, it’s just that there’s a lot of FUD out there around threads and processes which people often use to justify insane designs (and avoid threads when they are completely the right approach for the majority of situations)

        Eric Elliott

        All your advice about computation heavy apps could not be more wrong. It’s certainly true that attempting heavy computation inline with the request-response cycle, is a bad idea, but the same could be said of threaded environments. If you have CPU bound operations, it’s a good idea to handle them with worker processes. JavaScript, and Node in particular are actually very well suited to handle distributed computation – especially with the good support for functional style programming. If you write your algorithms using pure functions and distribute workload to workers, you can easily distribute your workload over networked clusters. Node’s great support for networking makes it an ideal environment both for computing and orchestration tasks, and it’s orders of magnitude faster than Ruby at both

        Eric Elliott

        All your advice about computation heavy apps could not be more wrong. It’s certainly true that attempting heavy computation inline with the request-response cycle, is a bad idea, but the same could be said of threaded environments. If you have CPU bound operations, it’s a good idea to handle them with worker processes. JavaScript, and Node in particular are actually very well suited to handle distributed computation – especially with the good support for functional style programming. If you write your algorithms using pure functions and distribute workload to workers, you can easily distribute your workload over networked clusters. Node’s great support for networking makes it an ideal environment both for computing and orchestration tasks, and it’s orders of magnitude faster than Ruby at both

        jim thomas

        Very helpful. Thanks a lot

        jim thomas

        Very helpful. Thanks a lot

        Roland

        You certainly don’t want to block any Node. js process that is handling server requests, but that doesn’t mean you shouldn’t do heavy computations behind a Node. js server. So long as the process doing the heavy computations is spawned asynchronously from your server process. Still you could end up blocking your Node. js process if you overdue it, but that is also true with the traditional threaded server

        Roland

        You certainly don’t want to block any Node. js process that is handling server requests, but that doesn’t mean you shouldn’t do heavy computations behind a Node. js server. So long as the process doing the heavy computations is spawned asynchronously from your server process. Still you could end up blocking your Node. js process if you overdue it, but that is also true with the traditional threaded server

        Danny Machal

        This is going to make me out to be a giant noob but can you give me an example of a “blocking operation” ?

        Danny Machal

        This is going to make me out to be a giant noob but can you give me an example of a “blocking operation” ?

        irneb

        Any such hybrid system? I’m thinking. Use Node. js to process a request by simply placing it onto a to-process queue, return a message to the client stating something like “calculating. “. Then Node. js is free to continue with the next request. The to-process queue can then be run through using a difference thread (or even multiple threads). As and when these complete, they send their results to Node. js’s queue which will then relay it back to the original client? Of course this means some ID key needs to accompany each item in this queue to ensure the correct data is returned to the correct client. Anything like this possible? Or even already implemented?

        irneb

        Any such hybrid system? I’m thinking. Use Node. js to process a request by simply placing it onto a to-process queue, return a message to the client stating something like “calculating. “. Then Node. js is free to continue with the next request. The to-process queue can then be run through using a difference thread (or even multiple threads). As and when these complete, they send their results to Node. js’s queue which will then relay it back to the original client? Of course this means some ID key needs to accompany each item in this queue to ensure the correct data is returned to the correct client. Anything like this possible? Or even already implemented?

        zivkovic_milan

        Great article, thanks . )

        zivkovic_milan

        Great article, thanks . )

        Gerd Jungbluth

        Tomislav, thanks for this very well written and concise article. We ‘ve been using MongoDB and Node. js (in combination with AngularJS for the user facing part) for > 2 years now and couldn’t imagine to ever, ever, ever switch back to Flash (after 10 years of experience) or JEE / RDMS. So it boils down to just one programming language (JS), one data format (JSON) and one programming paradigma (Async), wow

        Gerd Jungbluth

        Tomislav, thanks for this very well written and concise article. We ‘ve been using MongoDB and Node. js (in combination with AngularJS for the user facing part) for > 2 years now and couldn’t imagine to ever, ever, ever switch back to Flash (after 10 years of experience) or JEE / RDMS. So it boils down to just one programming language (JS), one data format (JSON) and one programming paradigma (Async), wow

        chad

        That’s by far the best explanation out there about Node. js. I finally understood that it is very useful (in certain scenarios) and not just a hype. Thanks a lot this was very informative

        chad

        That’s by far the best explanation out there about Node. js. I finally understood that it is very useful (in certain scenarios) and not just a hype. Thanks a lot this was very informative

        ellisgl

        Node works well with relational databases, just don’t use an ORM. SQL isn’t that hard to learn. =)

        ellisgl

        Node works well with relational databases, just don’t use an ORM. SQL isn’t that hard to learn. =)

        Tomislav Capan

        True that, but I thought we as an industry got over the idea of writing all the SQL manually. Tools are good for common operations, tools that just get out of the way when needed to write some specifics manually, otherwise reducing the possibility of errors and security issues (that happens with more junior developers whether we want it or not)

        Tomislav Capan

        True that, but I thought we as an industry got over the idea of writing all the SQL manually. Tools are good for common operations, tools that just get out of the way when needed to write some specifics manually, otherwise reducing the possibility of errors and security issues (that happens with more junior developers whether we want it or not)

        Tomislav Capan

        Hi Adin, let me comment back 1) same scenario happens, there’s a limitid amount of threads serving limited amount of clients. 2/3) Referenced presentation shows some measurements and numbers, you may be quite right on the internals but the common rough overview still stands as a general comparison of how things work between those two worlds. 4) parallelization options are also discussed within the article – as background worker processes, or several node processes behind a reverse proxy, or with Node clustering API (which is still in Experimental, but will be there eventually). Thanks for the great comments and the quality feedback on the article with that additional info, I appreciate it

        Tomislav Capan

        Hi Adin, let me comment back 1) same scenario happens, there’s a limitid amount of threads serving limited amount of clients. 2/3) Referenced presentation shows some measurements and numbers, you may be quite right on the internals but the common rough overview still stands as a general comparison of how things work between those two worlds. 4) parallelization options are also discussed within the article – as background worker processes, or several node processes behind a reverse proxy, or with Node clustering API (which is still in Experimental, but will be there eventually). Thanks for the great comments and the quality feedback on the article with that additional info, I appreciate it

        Tomislav Capan

        Yes, you can have multiple worker processes, even communicating through Message Queue (MQ). Those workers can be separate Node processes (as node is single-threaded, unless you experiment with clustering API – I haven’t tried yet as the API is very early and probably immmature), but can be any other language. I’ve worked on such a system which ran C# on Mono for background processing in a distributed CQRS architecture

        Tomislav Capan

        Yes, you can have multiple worker processes, even communicating through Message Queue (MQ). Those workers can be separate Node processes (as node is single-threaded, unless you experiment with clustering API – I haven’t tried yet as the API is very early and probably immmature), but can be any other language. I’ve worked on such a system which ran C# on Mono for background processing in a distributed CQRS architecture

        Tomislav Capan

        Bất kỳ tính toán nào khiến CPU bận rộn cho đến khi tính toán kết thúc. Imagine some operation that requires 2 seconds to perform the calculation. Hit that with 100 clients – you get a 200-sec delay. Note the article I have referenced, which explains the blocking of the event loop. http. //zef. me/4561/node-js-and-the-case-of-the-blocked-event-loop

        Tomislav Capan

        Bất kỳ tính toán nào khiến CPU bận rộn cho đến khi tính toán kết thúc. Imagine some operation that requires 2 seconds to perform the calculation. Hit that with 100 clients – you get a 200-sec delay. Note the article I have referenced, which explains the blocking of the event loop. http. //zef. me/4561/node-js-and-the-case-of-the-blocked-event-loop

        Tomislav Capan

        Yes, that falls under the idea of having ‘backend worker processes’ in a distributed system. As the system is distributed, those workers can use any language/platform, including Node

        Tomislav Capan

        Yes, that falls under the idea of having ‘backend worker processes’ in a distributed system. As the system is distributed, those workers can use any language/platform, including Node

        Tomislav Capan

        Thanks for your feedback. I agree on that completely, for worker processes you could use JS when it fits, and that implies Node. js as that’s what runs JS on the server, but you can also use other languages that do the particular work at hand fast

        Tomislav Capan

        Thanks for your feedback. I agree on that completely, for worker processes you could use JS when it fits, and that implies Node. js as that’s what runs JS on the server, but you can also use other languages that do the particular work at hand fast

        ellisgl

        For ORMs in general, I just see them as a tool that can get something done quick for a newbie, but end up really gumming up the works later on. The closest thing I use for an ORM is a PDO wrapper (which I borrowed and rewrote from an old co-worker), that helps with writing PDO statements. https. //github. com/ellisgl/GeekLab-XPDO

        ellisgl

        For ORMs in general, I just see them as a tool that can get something done quick for a newbie, but end up really gumming up the works later on. The closest thing I use for an ORM is a PDO wrapper (which I borrowed and rewrote from an old co-worker), that helps with writing PDO statements. https. //github. com/ellisgl/GeekLab-XPDO

        Adin Scannell

        Apologies for the wall of text. Excellent discussion. 1) Agreed. But threads and processes are powerful tools. That’s why a hybrid of threads/processes and event systems typically does best in the real world. Like the much beloved nginx . ) 2/3) Sorry, I may not have been clear. When I said FUD regarding threads and processes, I *meant the referenced presentation*. It’s just a bunch of specifically tailored microbenchmarks designed to prove a certain point. (Which is fair, given that it’s a lightning fair and can be a bit polemic. In fact, it’s a great talk. But these synthetic micro-benchmarks are not the basis for a fair and through comparison. ) To say the difference between nginx and apache benchmarks is purely because of context switching is an extreme oversimplification. Nginx is specifically designed to serve HTTP requests really, really quickly in common circumstances (IMO generally by a tight coupling with the latest OS event systems, etc. ). You could specifically measure the overhead of context switching, and I would wager it’s trivial. 4) But then aren’t you at the mercy of the horrible “process overhead” the referenced presentation talks about — can’t have it both ways . ) (To be clear, my position using threads/processes or whatever is not in and of itself a problem. There are way more important design factors there, the OS overhead of those entities is pretty trivial. Hence I hate it when people adopt a silly design based on the idea thread-are-bad or processes-are-bad or some other such nonesense)

        Adin Scannell

        Apologies for the wall of text. Excellent discussion. 1) Agreed. But threads and processes are powerful tools. That’s why a hybrid of threads/processes and event systems typically does best in the real world. Like the much beloved nginx . ) 2/3) Sorry, I may not have been clear. When I said FUD regarding threads and processes, I *meant the referenced presentation*. It’s just a bunch of specifically tailored microbenchmarks designed to prove a certain point. (Which is fair, given that it’s a lightning fair and can be a bit polemic. In fact, it’s a great talk. But these synthetic micro-benchmarks are not the basis for a fair and through comparison. ) To say the difference between nginx and apache benchmarks is purely because of context switching is an extreme oversimplification. Nginx is specifically designed to serve HTTP requests really, really quickly in common circumstances (IMO generally by a tight coupling with the latest OS event systems, etc. ). You could specifically measure the overhead of context switching, and I would wager it’s trivial. 4) But then aren’t you at the mercy of the horrible “process overhead” the referenced presentation talks about — can’t have it both ways . ) (To be clear, my position using threads/processes or whatever is not in and of itself a problem. There are way more important design factors there, the OS overhead of those entities is pretty trivial. Hence I hate it when people adopt a silly design based on the idea thread-are-bad or processes-are-bad or some other such nonesense)

        Tomislav Capan

        Everything always needs to be put in the right context. I have presented possible situations, to analyze each one deeply I’d need a book . -) Still, I really appreciate your comments and insights, they are valuable addition to the article. Thank you for those

        Tomislav Capan

        Everything always needs to be put in the right context. I have presented possible situations, to analyze each one deeply I’d need a book . -) Still, I really appreciate your comments and insights, they are valuable addition to the article. Thank you for those

        Aaron Wang

        When use node. js as api server, and the back-end db is the bottleneck, if the clients are the other applications, not user interface, can we just let these client requests hang there waiting for db operation complete(sine node. js can handle massive concurrent connections easily)? Is a MQ necessary in this scenario? In my opinion, node. js is right the queue

        Aaron Wang

        When use node. js as api server, and the back-end db is the bottleneck, if the clients are the other applications, not user interface, can we just let these client requests hang there waiting for db operation complete(sine node. js can handle massive concurrent connections easily)? Is a MQ necessary in this scenario? In my opinion, node. js is right the queue

        Ethan

        ORM does not exist to make query languages “easier”, it’s a tool used to encapsulate database concerns, isolating them from the application. There are several benefits, but ultimately, it makes applications easier to test and maintain years down the road. Excuse the tangent, nothing to do with node

        Ethan

        ORM does not exist to make query languages “easier”, it’s a tool used to encapsulate database concerns, isolating them from the application. There are several benefits, but ultimately, it makes applications easier to test and maintain years down the road. Excuse the tangent, nothing to do with node

        Eric Elliott

        Yes, you could, but Ruby would be a poor choice if your aim is performance. =)

        Eric Elliott

        Yes, you could, but Ruby would be a poor choice if your aim is performance. =)

        Vedran

        thank you for a great article. By using the node. js child process http. //nodejs. org/api/child_process. html – would you be able to overcome the high computational blocking Fibonacci issue?

        Vedran

        thank you for a great article. By using the node. js child process http. //nodejs. org/api/child_process. html – would you be able to overcome the high computational blocking Fibonacci issue?

        nene odonkor

        any real life examples?

        nene odonkor

        any real life examples?

        nene odonkor

        What of the Facebook example you used. When a user clicks on the like button there is an immediate acknowledgement but the data is written later. Cant that be an example of node used with relational db? Anyway what makes up the message queue?

        nene odonkor

        What of the Facebook example you used. When a user clicks on the like button there is an immediate acknowledgement but the data is written later. Cant that be an example of node used with relational db? Anyway what makes up the message queue?

        Moch Lutfi

        Maybe go-lang is alternative choice. . )

        Moch Lutfi

        Maybe go-lang is alternative choice. . )

        Anthony Hildoer

        This article is great, except for the part where it says don’t use NodeJS for computation because it doesn’t have threads. Since when do we need threads? Run child processes. The only advantage to running threads over child processes is shared memory. Last time I checked, any system large enough for this entire debate to be relevant anyway is going to span multiple servers anyway, their by nullifying any benefit of threads. So, get it out of your head that NodeJS can’t do CPU intensive work. And, if you can’t, contact BlueRival. com, and we can fix all the stuff you built wrong with NodeJS

        Anthony Hildoer

        This article is great, except for the part where it says don’t use NodeJS for computation because it doesn’t have threads. Since when do we need threads? Run child processes. The only advantage to running threads over child processes is shared memory. Last time I checked, any system large enough for this entire debate to be relevant anyway is going to span multiple servers anyway, their by nullifying any benefit of threads. So, get it out of your head that NodeJS can’t do CPU intensive work. And, if you can’t, contact BlueRival. com, and we can fix all the stuff you built wrong with NodeJS

        RiggerTheGeek

        One application that few people use, but could be really fanastic, is using NodeJS to build a desktop application. There’s plenty of packages out there – personally, I favour Node-Webkit https. //github. com/rogerwang/node-webkit

        RiggerTheGeek

        One application that few people use, but could be really fanastic, is using NodeJS to build a desktop application. There’s plenty of packages out there – personally, I favour Node-Webkit https. //github. com/rogerwang/node-webkit

        hfuti

        Hi, nice article. However I would like to point one thing, NodeJS is not running in a single thread. The programmer doesn’t have to spawn new threads, they are handled by node itself on event basis. NodeJS is evented, each function call per event will run in a separate thread. That approach encourages writing lighter functions. If your function does a lot of computation, reactor it into smaller ones and they all will run in separate threads. Think about the example where you process file while streaming. That is possible thanks to threads

        hfuti

        Hi, nice article. However I would like to point one thing, NodeJS is not running in a single thread. The programmer doesn’t have to spawn new threads, they are handled by node itself on event basis. NodeJS is evented, each function call per event will run in a separate thread. That approach encourages writing lighter functions. If your function does a lot of computation, reactor it into smaller ones and they all will run in separate threads. Think about the example where you process file while streaming. That is possible thanks to threads

        Matthew Keas

        This is very well written. Thank you for this

        Matthew Keas

        This is very well written. Thank you for this

        Matti Schneider

        > The technique used to avoid exceptions bubbling up to the surface is passing errors back to the caller as callback parameters Excuse me, but that seems misled. In my understanding, [“Node-style callbacks”](http. //nodeguide. com/style. html#callbacks) (i. e. the pattern of passing errors as the first param to callbacks) are a side-effect of the event queue (returning control as soon as possible to allow for “concurrency”) itself rather than a design to avoid interrupting flow. The fact that exceptions do not bubble are actually quite often a source of errors, especially to newcomers

        Matti Schneider

        > The technique used to avoid exceptions bubbling up to the surface is passing errors back to the caller as callback parameters Excuse me, but that seems misled. In my understanding, [“Node-style callbacks”](http. //nodeguide. com/style. html#callbacks) (i. e. the pattern of passing errors as the first param to callbacks) are a side-effect of the event queue (returning control as soon as possible to allow for “concurrency”) itself rather than a design to avoid interrupting flow. The fact that exceptions do not bubble are actually quite often a source of errors, especially to newcomers

        kyoukhana

        Great Article. Wondering who made the beautiful diagrams . )

        kyoukhana

        Great Article. Wondering who made the beautiful diagrams . )

        TZ

        Great article, thanks . ) BTW, which tool do you use to draw the images?

        TZ

        Great article, thanks . ) BTW, which tool do you use to draw the images?

        Matthew Keas

        +1 for that

        Matthew Keas

        +1 for that

        Matthew Keas

        For those that are curious, it seems the images were created with Adobe Photoshop CC. I checked this by looking at the EXIF data of one of the images. http. //exifdata. com/ File Size – 61 kB File Type – PNG MIME Type – image/png Image Width – 624 Image Height – 600 X Resolution – 72 Y Resolution – 72 Color Space – sRGB Color Mode – 3 Compression – Deflate/Inflate Orientation – Horizontal (normal) XMP Toolkit – Adobe XMP Core 5. 5-c014 79. 151481, 2013/03/13-12. 09. 15 Creator Tool – Adobe Photoshop CC (Macintosh)

        Matthew Keas

        For those that are curious, it seems the images were created with Adobe Photoshop CC. I checked this by looking at the EXIF data of one of the images. http. //exifdata. com/ File Size – 61 kB File Type – PNG MIME Type – image/png Image Width – 624 Image Height – 600 X Resolution – 72 Y Resolution – 72 Color Space – sRGB Color Mode – 3 Compression – Deflate/Inflate Orientation – Horizontal (normal) XMP Toolkit – Adobe XMP Core 5. 5-c014 79. 151481, 2013/03/13-12. 09. 15 Creator Tool – Adobe Photoshop CC (Macintosh)

        Juan G. Nuño

        Also, the fact that javascript is not able to check type compliance introduces dificulty in expontaneous organization of huge number of coders updating the same codebase simultaneously

        Juan G. Nuño

        Also, the fact that javascript is not able to check type compliance introduces dificulty in expontaneous organization of huge number of coders updating the same codebase simultaneously

        Juan G. Nuño

        mmmm. disagree, if you use correctly a good ORM (take a look at Mature ORMs) you get also a distributed cache of your Relational Database that allows you more performance for the same bucks and more scalability of your sistem. ORM is not just for easing the life to newies. It is non sense to use a non-blockin sistem such as node. js, if at the end you get blocked at your Database. But using a ORM that way, is not for newbies

        Juan G. Nuño

        mmmm. disagree, if you use correctly a good ORM (take a look at Mature ORMs) you get also a distributed cache of your Relational Database that allows you more performance for the same bucks and more scalability of your sistem. ORM is not just for easing the life to newies. It is non sense to use a non-blockin sistem such as node. js, if at the end you get blocked at your Database. But using a ORM that way, is not for newbies

        geniium

        Glad you mention, most people don’t mention this

        geniium

        Glad you mention, most people don’t mention this

        Tracker1

        For that matter, since you can do an async shell to a console application, you could easily write your worker in, for instance golang, and then use a generic pool to limit your cpu workers. from there, you can shell out to a more efficient worker. You can also do that for CPU intensive JS as well, I did this for my scrypt-js module (there are binary modules that are more performant, but I wanted one without compiled dependencies). It’s not that hard to queue work to other systems, and no reason node can’t be used to orchestrate said work

        Tracker1

        For that matter, since you can do an async shell to a console application, you could easily write your worker in, for instance golang, and then use a generic pool to limit your cpu workers. from there, you can shell out to a more efficient worker. You can also do that for CPU intensive JS as well, I did this for my scrypt-js module (there are binary modules that are more performant, but I wanted one without compiled dependencies). It’s not that hard to queue work to other systems, and no reason node can’t be used to orchestrate said work

        Tracker1

        Could *could* use an intermediate system such as TypeScript, you can also use a linter (jshint) and even require a level of test coverage in order for release. Getting 100% test coverage is generally *very* easy in scripted environments. Would suggest looking into Mocha, Chai, and Proxyquire. If you aren’t writing unit tests, type safety really doesn’t give you much

        Tracker1

        Could *could* use an intermediate system such as TypeScript, you can also use a linter (jshint) and even require a level of test coverage in order for release. Getting 100% test coverage is generally *very* easy in scripted environments. Would suggest looking into Mocha, Chai, and Proxyquire. If you aren’t writing unit tests, type safety really doesn’t give you much

        Steve Naidamast

        I am beginning to find Node. js quite interesting. However, the paradigm it appears to be promoting is hardly new to IT. In the mainframe communications world we called such capabilities, “re-entrant”, where a single process could handle a high level of calls to it. Microsoft implemented similar capabilities with its Singleton object infrastructure and I imagine the Java world has done similar implementations. Oddly enough, the Microsoft recommendation for enhancing scalability across the wires to back-end services was to promote the “Single Call” object structure or one object instance per calling request. Thus, the argument made for Node. js is actually contrary to the Microsoft recommendation; BTW, a recommendation I never quite understood. In any event, as a business ASP. NET developer, I am not sure if I would find any use for a Node. js implementation, though our web designer may. On another note, I would like to add my own opinion on the use of ORMs. ORMs are great tools when faced with an existing database structure against the requirements of a new application as the ORM can handle a lot of the mundane, repetitive coding that is usually found with any database application. However, because ORMs are high-level layers, they are usually not the most efficient options to use against databases whereas direct access through native providers are. In many respects, better to do the repetitive coding for efficiency over applying a heavy-weight interim layer such as an ORM

        Steve Naidamast

        I am beginning to find Node. js quite interesting. However, the paradigm it appears to be promoting is hardly new to IT. In the mainframe communications world we called such capabilities, “re-entrant”, where a single process could handle a high level of calls to it. Microsoft implemented similar capabilities with its Singleton object infrastructure and I imagine the Java world has done similar implementations. Oddly enough, the Microsoft recommendation for enhancing scalability across the wires to back-end services was to promote the “Single Call” object structure or one object instance per calling request. Thus, the argument made for Node. js is actually contrary to the Microsoft recommendation; BTW, a recommendation I never quite understood. In any event, as a business ASP. NET developer, I am not sure if I would find any use for a Node. js implementation, though our web designer may. On another note, I would like to add my own opinion on the use of ORMs. ORMs are great tools when faced with an existing database structure against the requirements of a new application as the ORM can handle a lot of the mundane, repetitive coding that is usually found with any database application. However, because ORMs are high-level layers, they are usually not the most efficient options to use against databases whereas direct access through native providers are. In many respects, better to do the repetitive coding for efficiency over applying a heavy-weight interim layer such as an ORM

        opensas

        Very interesting observation. I’d like someone to elaborate a bit more on that. I would like a more concrete example, like some piece of concrete code calling an async heavy-computational function, and someone explaining what happens if that is run in a multicore equipment. Does the thread that was sercing http requests gets blocked? Or another thread is used for that?

        opensas

        Very interesting observation. I’d like someone to elaborate a bit more on that. I would like a more concrete example, like some piece of concrete code calling an async heavy-computational function, and someone explaining what happens if that is run in a multicore equipment. Does the thread that was sercing http requests gets blocked? Or another thread is used for that?

        Derrick Simpson

        Node is terrible as a web server. Even the creator suggests that this is not what Node is intended for, and that it should be leveraged for it’s strengths. JavaScript “Everything”, just like worker processes, is ludicrous

        Derrick Simpson

        Node is terrible as a web server. Even the creator suggests that this is not what Node is intended for, and that it should be leveraged for it’s strengths. JavaScript “Everything”, just like worker processes, is ludicrous

        Eric Elliott

        This is ridiculous. Node was built with the web as first class, and it excels as a web server. It is rapidly replacing Ruby and PHP in many enterprise organizations because it has demonstrably boosted both application performance (reduced page-load times, etc. ) and developer productivity

        Eric Elliott

        This is ridiculous. Node was built with the web as first class, and it excels as a web server. It is rapidly replacing Ruby and PHP in many enterprise organizations because it has demonstrably boosted both application performance (reduced page-load times, etc. ) and developer productivity

        jonpress

        You can in fact create multi-threaded servers using Node. js to offer more stable performance but it does take a lot of extra work (see the built-in cluster module and the child_process module). Tôi đã tạo một khung chạy trên nhiều lõi CPU và giải quyết được nhiều vấn đề được thảo luận trong bài đăng này. Check it out. http. //nombo. io/

        jonpress

        You can in fact create multi-threaded servers using Node. js to offer more stable performance but it does take a lot of extra work (see the built-in cluster module and the child_process module). Tôi đã tạo một khung chạy trên nhiều lõi CPU và giải quyết được nhiều vấn đề được thảo luận trong bài đăng này. Check it out. http. //nombo. io/

        Connor Leech

        does something like mongoose. js solve the node relational database issue? http. //mongoosejs. com/

        Connor Leech

        does something like mongoose. js solve the node relational database issue? http. //mongoosejs. com/

        Rob Tweed

        Yes – see the queue/pre-forked worker pool approach adopted by EWD. js. http. //gradvs1. mgateway. com/download/EWDjs. pdf Summarised here. http. //gradvs1. mgateway. com/download/EWDjsMechanics. pdf

        Rob Tweed

        Yes – see the queue/pre-forked worker pool approach adopted by EWD. js. http. //gradvs1. mgateway. com/download/EWDjs. pdf Summarised here. http. //gradvs1. mgateway. com/download/EWDjsMechanics. pdf

        keith

        yeah, I was wondering about it too. great visual + awesome post

        keith

        yeah, I was wondering about it too. great visual + awesome post

        Carlos Ballena

        Very helpful article

        Carlos Ballena

        Very helpful article

        Jesus Nuñez

        npm install felixge/node-mysql. That might be the most useful repository I’ve seen in ages

        Jesus Nuñez

        npm install felixge/node-mysql. That might be the most useful repository I’ve seen in ages

        Matthias Lienau

        Nice article, indeed. But, @hfuti. disqus, you’re wrong in saying “NodeJS is not running in a single thread . each function call per event will run in a separate thread. ” As far as I understood, the main NodeJS event loop consuming your JS code in fact runs in a single thread. All potentially blocking and/or long-running tasks like disk I/O is delegated to and executed by libuv as part of the node runtime engine which spawns a *limited* number of threads made available as thread pool. Said this, it’s obvious that the main event loop thread is not affected or blocked by other (yet again asynchronous) code execution. So, for example, file I/O with the fs module itself is implemented in a non-blocking manner – in the end as good as the OS/kernel allows non-blocking operations. Of course foreign processes or threads could always be spawned by custom modules or 3rd party services (worker processes). And yes, there are runtime env projects handling more than one node process and their threads on the same machine or cpu cluster. But that’s another story. Feel free to correct me if I’m wrong

        Matthias Lienau

        Nice article, indeed. But, @hfuti. disqus, you’re wrong in saying “NodeJS is not running in a single thread . each function call per event will run in a separate thread. ” As far as I understood, the main NodeJS event loop consuming your JS code in fact runs in a single thread. All potentially blocking and/or long-running tasks like disk I/O is delegated to and executed by libuv as part of the node runtime engine which spawns a *limited* number of threads made available as thread pool. Said this, it’s obvious that the main event loop thread is not affected or blocked by other (yet again asynchronous) code execution. So, for example, file I/O with the fs module itself is implemented in a non-blocking manner – in the end as good as the OS/kernel allows non-blocking operations. Of course foreign processes or threads could always be spawned by custom modules or 3rd party services (worker processes). And yes, there are runtime env projects handling more than one node process and their threads on the same machine or cpu cluster. But that’s another story. Feel free to correct me if I’m wrong

        josep2

        This is fantastic

        josep2

        This is fantastic

        Jacopo Chiapparino

        Nice article, thank you

        Jacopo Chiapparino

        Nice article, thank you

        NoobMovies. com

        I think Django still kicks Node’s ass

        NoobMovies. com

        I think Django still kicks Node’s ass

        Alex Writing

        Hey Tomislav, http. //codecondo. com/7-minimal-node-js-web-frameworks/ I’d love if you could add the above post to the list . )

        Alex Writing

        Hey Tomislav, http. //codecondo. com/7-minimal-node-js-web-frameworks/ I’d love if you could add the above post to the list . )

        dung nham Victor

        Omg, this is amazing. I have always wanted to learn node. js

        dung nham Victor

        Omg, this is amazing. I have always wanted to learn node. js

        ak

        Thanks for providing examples, illustrations and use cases. The detailed explanation and steps in some cases with relevant resources makes it a great read. Where nodejs *should* be used is very useful

        ak

        Thanks for providing examples, illustrations and use cases. The detailed explanation and steps in some cases with relevant resources makes it a great read. Where nodejs *should* be used is very useful

        crueber

        All Node code is thread-bound. It may not run on the same thread at all times (which has nothing to do with Node itself, and instead has to do with the operating system process scheduler), but it is thread bound. In order to take advantage of multiple threads, you need to use something like Cluster. http. //nodejs. org/api/cluster. html

        crueber

        All Node code is thread-bound. It may not run on the same thread at all times (which has nothing to do with Node itself, and instead has to do with the operating system process scheduler), but it is thread bound. In order to take advantage of multiple threads, you need to use something like Cluster. http. //nodejs. org/api/cluster. html

        crueber

        Agreed. I use Postgres for all sorts of GIS operations in an application I’ve been working on for about a year, and it works great, and benefits from the same non-blocking I/O that any other database access does. It’s just that you have to drop down directly to the SQL. There are a couple ORMs, but nothing that is real mature

        crueber

        Agreed. I use Postgres for all sorts of GIS operations in an application I’ve been working on for about a year, and it works great, and benefits from the same non-blocking I/O that any other database access does. It’s just that you have to drop down directly to the SQL. There are a couple ORMs, but nothing that is real mature

        elijahca

        Awesome, thanks a lot for this

        elijahca

        Awesome, thanks a lot for this

        Zmirc

        Minor comment. don’t confuse Object DBs with Mongo (Document DB). There are 2 completely different things

        Zmirc

        Minor comment. don’t confuse Object DBs with Mongo (Document DB). There are 2 completely different things

        Gianlucca

        i agree, good post

        Gianlucca

        i agree, good post

        Gianlucca

        yes, i agree

        Gianlucca

        yes, i agree

        Gianlucca

        sure

        Gianlucca

        sure

        Toulon

        Very well written article. You put a lot of thought into it. Quick node/express question I am I am adding rapid data entry, not batch, data entry to my system I have a form (mfntapes) that works great. I have a test form (joe) the prompts for the number of times I want to call the mfntapes form The gist contains the code, fails to work, the after prompting for cnt attempts to call for mfntapes cnt times. Error is “ReferenceError. form is not defined” in line 87 of the gist The question is how to call form mfntapes x number of times where x is a vairable? See lines 45-55 of https. //gist. github. com/toulon/9571625

        Toulon

        Very well written article. You put a lot of thought into it. Quick node/express question I am I am adding rapid data entry, not batch, data entry to my system I have a form (mfntapes) that works great. I have a test form (joe) the prompts for the number of times I want to call the mfntapes form The gist contains the code, fails to work, the after prompting for cnt attempts to call for mfntapes cnt times. Error is “ReferenceError. form is not defined” in line 87 of the gist The question is how to call form mfntapes x number of times where x is a vairable? See lines 45-55 of https. //gist. github. com/toulon/9571625

        Jesus Bejarano

        ORM for real projects are useless hone

        Jesus Bejarano

        ORM for real projects are useless hone

        Thomas

        Nice article . -) > SERVER-SIDE WEB APPLICATION W/ A RELATIONAL DB BEHIND I wonder why Node is not good for that? You have promise based *SQL libraries (like Knex) which enables non-blocking queries. Node has no opposition with relational databases. it has no interest with blocking I/O drivers only. Relational or not relational

        Thomas

        Nice article . -) > SERVER-SIDE WEB APPLICATION W/ A RELATIONAL DB BEHIND I wonder why Node is not good for that? You have promise based *SQL libraries (like Knex) which enables non-blocking queries. Node has no opposition with relational databases. it has no interest with blocking I/O drivers only. Relational or not relational

        Seb

        I wish NodeJS was not (almost) systematicallty presented as THE de facto alternative to the traditional threaded webserver. Async IO is not exclusive to NodeJS. Most major languages out there – including Java and PHP – have async IO frameworks similar to NodeJS. This wiki page lists most of them. http. //en. wikipedia. org/wiki/Reactor_pattern I’m not saying NodeJS doesn’t have its merit, but I’m sick and tired of seeing people flocking to it as if it’s the *only* async IO stack available, and the *only* alternative to the good ol’ PHP or Rails stack. To be honest, we may be stuck with Javascript on the browser, and will be for a very long time (except if Javascript becomes just another target platform/language thanks to asm. js), but I can’t come up with any good reason to use it on the server side in favor to other available languages. Most of the alternatives are just way better as a language, have better standard libraries, tools and resources. Just a personal opinion. Long story short, Node JS is cool, but there certainly is a similar framework written in your favorite language. Please just take 5 minutes to research it before switching to NodeJS

        Seb

        I wish NodeJS was not (almost) systematicallty presented as THE de facto alternative to the traditional threaded webserver. Async IO is not exclusive to NodeJS. Most major languages out there – including Java and PHP – have async IO frameworks similar to NodeJS. This wiki page lists most of them. http. //en. wikipedia. org/wiki/Reactor_pattern I’m not saying NodeJS doesn’t have its merit, but I’m sick and tired of seeing people flocking to it as if it’s the *only* async IO stack available, and the *only* alternative to the good ol’ PHP or Rails stack. To be honest, we may be stuck with Javascript on the browser, and will be for a very long time (except if Javascript becomes just another target platform/language thanks to asm. js), but I can’t come up with any good reason to use it on the server side in favor to other available languages. Most of the alternatives are just way better as a language, have better standard libraries, tools and resources. Just a personal opinion. Long story short, Node JS is cool, but there certainly is a similar framework written in your favorite language. Please just take 5 minutes to research it before switching to NodeJS

        Jarle Leopold Moe

        How would you upload files? What about Directory integration? (Active Directory, Open Directory) What about communication with external services? All request depending on a response from any of these types of services would block the calls. Node. js is _single-threaded_ it’s only applicable for certain types of tasks

        Jarle Leopold Moe

        How would you upload files? What about Directory integration? (Active Directory, Open Directory) What about communication with external services? All request depending on a response from any of these types of services would block the calls. Node. js is _single-threaded_ it’s only applicable for certain types of tasks

        Eric Elliott

        These are great examples of why Node is so much better than the competition at web services. None of those are blocking operations in Node. They’re asynchronous. While other servers waste resources spinning off separate threads, Node fires off an event-driven asynchronous operation and keeps taking more requests in the meantime. The practical upshot is that porting web services from PHP or Ruby can deliver between 2x and 10x improvements in simultaneous connections and typically 30% – 60% improvements in average response times. Lots of big companies are doing web Node projects just for these reasons, including Adobe, Paypal, eBay, Walmart, Yahoo. , Groupon, Uber, etc

        Eric Elliott

        These are great examples of why Node is so much better than the competition at web services. None of those are blocking operations in Node. They’re asynchronous. While other servers waste resources spinning off separate threads, Node fires off an event-driven asynchronous operation and keeps taking more requests in the meantime. The practical upshot is that porting web services from PHP or Ruby can deliver between 2x and 10x improvements in simultaneous connections and typically 30% – 60% improvements in average response times. Lots of big companies are doing web Node projects just for these reasons, including Adobe, Paypal, eBay, Walmart, Yahoo. , Groupon, Uber, etc

        jenit shah

        very nice article and very clear thought regarding node. js where to use and where not

        jenit shah

        very nice article and very clear thought regarding node. js where to use and where not

        CowsRule

        Every major application development platform has already had support for HTML5 for the past several years, including websockets for bi-directional communication. Add to this the strong types, multi-threading and the tons of other stuff that languages such as Java have to offer and I seriously question why anyone would waste their time using this

        CowsRule

        Every major application development platform has already had support for HTML5 for the past several years, including websockets for bi-directional communication. Add to this the strong types, multi-threading and the tons of other stuff that languages such as Java have to offer and I seriously question why anyone would waste their time using this

        robertcooke

        Just want to mention that node is not the only server side option for javascript especially since oracle put the nashorn javascript engine on the jdk. Now you can also use all the jvm goodness from javascript we are using vert. x as the async server and nashorn to use javascript. You can see some code samples in this module https. //github. com/core9/module-nashorn the project site is core9. io

        robertcooke

        Just want to mention that node is not the only server side option for javascript especially since oracle put the nashorn javascript engine on the jdk. Now you can also use all the jvm goodness from javascript we are using vert. x as the async server and nashorn to use javascript. You can see some code samples in this module https. //github. com/core9/module-nashorn the project site is core9. io

        Anonymous

        This is an amazing overview . Thank you

        Anonymous

        This is an amazing overview . Thank you

        Vishnu Tekale

        Very well written. Thanks for sharing

        Vishnu Tekale

        Very well written. Thanks for sharing

        Gleb Bahmutov

        Why Node is different – using bar as analogy http. //bahmutov. calepin. co/why-node-is-different. html

        Gleb Bahmutov

        Why Node is different – using bar as analogy http. //bahmutov. calepin. co/why-node-is-different. html

        FluckerSputter

        Just to let you know you have “support support” in How it works under-the-hood is pretty interesting. Compared to traditional web-serving techniques where each connection (request) spawns a new thread, taking up system RAM and eventually maxing-out at the amount of RAM available, Node. js hoạt động trên một luồng đơn, sử dụng các cuộc gọi I/O không chặn, cho phép nó hỗ trợ hàng chục nghìn kết nối đồng thời (được tổ chức trong vòng lặp sự kiện)

        FluckerSputter

        Just to let you know you have “support support” in How it works under-the-hood is pretty interesting. Compared to traditional web-serving techniques where each connection (request) spawns a new thread, taking up system RAM and eventually maxing-out at the amount of RAM available, Node. js hoạt động trên một luồng đơn, sử dụng các cuộc gọi I/O không chặn, cho phép nó hỗ trợ hàng chục nghìn kết nối đồng thời (được tổ chức trong vòng lặp sự kiện)

        piloh23

        Nút. js sẽ không bao giờ thay thế Rails để trở thành web framework số một

        piloh23

        Nút. js sẽ không bao giờ thay thế Rails để trở thành web framework số một

        Alifa Nurani Putri

        Xin chào, Nút có phải là lựa chọn tốt nhất để truyền phát và tải lên video không?

        Alifa Nurani Putri

        Xin chào, Nút có phải là lựa chọn tốt nhất để truyền phát và tải lên video không?

        SleightDifference

        Tại sao PHP không được đề cập để tương tác với cơ sở dữ liệu quan hệ?

        SleightDifference

        Tại sao PHP không được đề cập để tương tác với cơ sở dữ liệu quan hệ?

        Clain Dsilva

        Cảm ơn bạn đã dành thời gian giải thích về Node. js. Tôi thực sự gặp khó khăn trong việc hiểu nó từ trang web của họ cũng như Wikipedia. Bài viết tốt. Giữ nó lên

        Clain Dsilva

        Cảm ơn bạn đã dành thời gian giải thích về Node. js. Tôi thực sự gặp khó khăn trong việc hiểu nó từ trang web của họ cũng như Wikipedia. Bài viết tốt. Giữ nó lên

        Cézar Luiz

        Còn https này thì sao. //github. com/felixge/nút-mysql? . Thanks

        Cézar Luiz

        Còn https này thì sao. //github. com/felixge/nút-mysql? . Thanks

        Marcelo Lima

        Thank you for this article. Cleared a lot of questions I had about Node internals

        Marcelo Lima

        Thank you for this article. Cleared a lot of questions I had about Node internals

        Navid

        Awesome Article

        Navid

        Awesome Article

        Abdelhakim

        https. //www. udemy. com/nodejs-tutorial-from-scratch-by-examples/?couponCode=NewOffer 1. Lifetime access to 24 lectures 2. Over 120 mins of high quality content. 2. Join to a community of over 2687 students learning together. 4. Course information and regular updates 5. Learn node. js and mongoDB from scratch by examples. 6. Course information and regular updates. 7. Discussion forum, which we encourage you to make use of — both to pose questions about the material to the course instructor and to exchange ideas with your classmates. số 8. High quality course support

        Abdelhakim

        https. //www. udemy. com/nodejs-tutorial-from-scratch-by-examples/?couponCode=NewOffer 1. Lifetime access to 24 lectures 2. Over 120 mins of high quality content. 2. Join to a community of over 2687 students learning together. 4. Course information and regular updates 5. Learn node. js and mongoDB from scratch by examples. 6. Course information and regular updates. 7. Discussion forum, which we encourage you to make use of — both to pose questions about the material to the course instructor and to exchange ideas with your classmates. số 8. High quality course support

        rahul garg

        Theo sự hiểu biết của tôi với bài viết, nếu bạn gửi bất kỳ yêu cầu nào tới máy chủ nút, nó sẽ thực sự xử lý trên một số luồng nền (libuv. dll). Now I want to post some file through node server, why it block the node server while it will actually process on background thread and when done , only response will be returned by node thread ? Kindly suggest if I am missing some thing

        rahul garg

        Theo sự hiểu biết của tôi với bài viết, nếu bạn gửi bất kỳ yêu cầu nào tới máy chủ nút, nó sẽ thực sự xử lý trên một số luồng nền (libuv. dll). Now I want to post some file through node server, why it block the node server while it will actually process on background thread and when done , only response will be returned by node thread ? Kindly suggest if I am missing some thing

        siddesh

        Super Article

        siddesh

        Super Article

        fanck

        Isn’t it possible to get the date of posting of your article? or all your posts for that matter. It is really disturbing to read technical posts without dates. thanks

        fanck

        Isn’t it possible to get the date of posting of your article? or all your posts for that matter. It is really disturbing to read technical posts without dates. thanks

        Namo

        You mention Node. js tốt cho ứng dụng trò chuyện vì nó không tốn nhiều CPU. I can’t think of too many use cases that don’t require much CPU. For example, could Twitter be built with Node? It seems there’s a lot of computation required just to generate your feed. Node. js uses certainly can’t be so narrow

        Namo

        You mention Node. js tốt cho ứng dụng trò chuyện vì nó không tốn nhiều CPU. I can’t think of too many use cases that don’t require much CPU. For example, could Twitter be built with Node? It seems there’s a lot of computation required just to generate your feed. Node. js uses certainly can’t be so narrow

        Ian Kaplan

        Bài báo tuyệt vời. Thanks. Có một trò đùa cũ. you’re not a paranoid if they’re really out to get you. Đó là thái độ nên có khi nói đến bảo mật ứng dụng Web. One thing that bothers me about Node. js is that I have no insight into how secure it is. When an environment like Grails, where I have Java/Groovy running on Tomcat I have some confidence in Tomcat security, if for no other reason than the fact that Tomcat has been around a long time and has evolved. This isn’t true with Node. js. I was also looking at the Node. js libraries. At least for the file access, it appears to be nothing more than a thin layer over the POSIX file system calls. I like the Java or even the C++ file abstractions more. The main argument that I see for Node. js (made in this post) is that it has really lightweight threads and that you can have JavaScrip everywhere. This last issue is an attraction for those who only know JavaScript. As far as the light weight threads, this is not so much a language issue as a platform support issue. It should be possible to support this kind of thread model in another language

        Ian Kaplan

        Bài báo tuyệt vời. Thanks. Có một trò đùa cũ. you’re not a paranoid if they’re really out to get you. Đó là thái độ nên có khi nói đến bảo mật ứng dụng Web. One thing that bothers me about Node. js is that I have no insight into how secure it is. When an environment like Grails, where I have Java/Groovy running on Tomcat I have some confidence in Tomcat security, if for no other reason than the fact that Tomcat has been around a long time and has evolved. This isn’t true with Node. js. I was also looking at the Node. js libraries. At least for the file access, it appears to be nothing more than a thin layer over the POSIX file system calls. I like the Java or even the C++ file abstractions more. The main argument that I see for Node. js (made in this post) is that it has really lightweight threads and that you can have JavaScrip everywhere. This last issue is an attraction for those who only know JavaScript. As far as the light weight threads, this is not so much a language issue as a platform support issue. It should be possible to support this kind of thread model in another language

        Huge Web

        Nhà thiết kế Toptal đã thiết kế cho họ

        Huge Web

        Nhà thiết kế Toptal đã thiết kế cho họ

        Scott

        Bài báo tuyệt vời. cảm ơn vì những thông tin

        Scott

        Bài báo tuyệt vời. cảm ơn vì những thông tin

        daimmo

        I agree. I guessed it was around “a year ago” because of most of Disqus comments. This is taken from their meta tags anyway. 2013-08-13

        daimmo

        I agree. I guessed it was around “a year ago” because of most of Disqus comments. This is taken from their meta tags anyway. 2013-08-13

        Adnan King

        nice

        Adnan King

        nice

        Ethan Garofolo

        Node. js isn’t a web framework. It’s a packed V8 runtime with some core libraries attached. Node is more like mri in the Ruby world than Rails

        Ethan Garofolo

        Node. js isn’t a web framework. It’s a packed V8 runtime with some core libraries attached. Node is more like mri in the Ruby world than Rails

        Guest

        Node. js is more like Rack, but not the same. MRI is just a language implementation

        Guest

        Node. js is more like Rack, but not the same. MRI is just a language implementation

        Lambda Pool

        the problem is that mongodb, its too risky using a database who can’t be migrated never

        Lambda Pool

        the problem is that mongodb, its too risky using a database who can’t be migrated never

        Lambda Pool

        well its true, ORM is a bad practice after all

        Lambda Pool

        well its true, ORM is a bad practice after all

        Lambda Pool

        yes but it does in a very non efficiently way

        Lambda Pool

        yes but it does in a very non efficiently way

        Lambda Pool

        the database engine itself will be ever more sophisticated than any ORM library home made by someone else

        Lambda Pool

        the database engine itself will be ever more sophisticated than any ORM library home made by someone else

        John Bailo

        It’s ameezing how asynchronous the web still is. Indeed, like a telephone answering machine, its utility lies there

        John Bailo

        It’s ameezing how asynchronous the web still is. Indeed, like a telephone answering machine, its utility lies there

        Jayaraj Poroor

        I agree – I’m not a fan of ORMs either. ORM is a classic example of leaky abstraction

        Jayaraj Poroor

        I agree – I’m not a fan of ORMs either. ORM is a classic example of leaky abstraction

        Jayaraj Poroor

        Regarding using Node. js with relational databases. Shelloid (http. //shelloid. org) là một máy chủ ứng dụng mã nguồn mở cho Node. js that we developed to simplify lot of programmer tasks. e. g. , You can declare named SQL queries as annotations and a function by that name automatically gets added to the DB object for you to use

        Jayaraj Poroor

        Regarding using Node. js with relational databases. Shelloid (http. //shelloid. org) là một máy chủ ứng dụng mã nguồn mở cho Node. js that we developed to simplify lot of programmer tasks. e. g. , You can declare named SQL queries as annotations and a function by that name automatically gets added to the DB object for you to use

        M

        I think you do not understand the reason for or characteristics of ORM’s very well. ORM’s not only isolate data concerns, they provide testability and greater flexibility than traditional SQL clients. ORM’s also provide in memory access in place of inefficient joins, so they can actually be far more efficient than SQL in real world scenarios. Plus, given the choice of performing complex set operations in a limited procedural set language like SQL or complex in memory operations using a far richer, more expressive and maintainable language, the richer language wins if you ever expect to maintain or extend the application

        M

        I think you do not understand the reason for or characteristics of ORM’s very well. ORM’s not only isolate data concerns, they provide testability and greater flexibility than traditional SQL clients. ORM’s also provide in memory access in place of inefficient joins, so they can actually be far more efficient than SQL in real world scenarios. Plus, given the choice of performing complex set operations in a limited procedural set language like SQL or complex in memory operations using a far richer, more expressive and maintainable language, the richer language wins if you ever expect to maintain or extend the application

        M

        You don’t know what you are talking about. If you are writing a non-trivial applications and not using an ORM than I’m sure there will be many developers both today and in the future that will be cursing your name as they wade through ridiculous rafts of SQL. Testability? I guess that’s just for trivial applications. When I see ridiculous comments like this coming from node. js fanboi’s it makes me suspect that they’d be singing a different tune if node. js had decent RDBMS capabilities

        M

        You don’t know what you are talking about. If you are writing a non-trivial applications and not using an ORM than I’m sure there will be many developers both today and in the future that will be cursing your name as they wade through ridiculous rafts of SQL. Testability? I guess that’s just for trivial applications. When I see ridiculous comments like this coming from node. js fanboi’s it makes me suspect that they’d be singing a different tune if node. js had decent RDBMS capabilities

        Lambda Pool

        you just overate ORM such as most OO fanboys does

        Lambda Pool

        you just overate ORM such as most OO fanboys does

        Lambda Pool

        your comment is ridiculous too, ORM is not a everyone’s accepted pattern

        Lambda Pool

        your comment is ridiculous too, ORM is not a everyone’s accepted pattern

        M

        The irony is that lambda’s (aka, anonymous methods) are the basis of both javascript and the preferred technique for C#’s multiple implementation of the same callback pattern, albeit with full type safety. In fact node’s major characteristics (2-way, lightweight, asynchronous has effectively been implemented in C# as “SignalR”, and there are several language features which are both asynchronous and natively multithreaded, (unlike node. js). Now I could understand if your experience with ORM’s was limited to Hibernate (absolutely awful, one of the worst implementations of a major concept I’ve ever had the displeasure to work with) or even EF, which at least is fairly powerful and expressive due to LINQ, if data nanny overkill. But a micro-ORM like Dapper gives you all the flexibility and power of direct SQL with the benefits of rich data manipulation via objects, and is fast, very fast. And I’m sorry, but OOP is a well proven, very effective design strategy if you know what you are doing, i. e. , you are a pro. I see three major problems with the node. js approach that no one seems to have a good answer for. So you start with the premise that there are such inefficiencies in waiting for IO that there is a huge potential there. So yeah, you’ve got great concurrency, right until you get to the first blocking library, a database, a file server, etc, which is practically every major piece of functionality written. So it’s just hurry up and wait for 10,000 connections instead of 100, ok that’s something, but where does it get you? So then you start rewriting all those services asynchronously, but that’s just a snake eating its own tail, because that’s hurry up and wait too. Because in the end every database on earth ultimately comes to a magnetic arm skipping across a disk or reading solid state memory, and that’s assuming you’re on the same machine, as opposed to distributing data across a pool of far slower network connections. Then you have the single threaded issue. There is probably no more misused language than Javascript because the barriers of entry are so low. And while early adopters might understand a bad practice when they see one, most javascript programmers simply have no idea what they are doing. Thirdly, Javascript is not exactly a particularly fast language, so the advice seems to be don’t do compute intensive tasks. Where does that get you? So you end up with an elegant solution to one category of issues, but you’re trapped there, with no way out of the non-compute intensive, hurry up and wait ghetto

        M

        The irony is that lambda’s (aka, anonymous methods) are the basis of both javascript and the preferred technique for C#’s multiple implementation of the same callback pattern, albeit with full type safety. In fact node’s major characteristics (2-way, lightweight, asynchronous has effectively been implemented in C# as “SignalR”, and there are several language features which are both asynchronous and natively multithreaded, (unlike node. js). Now I could understand if your experience with ORM’s was limited to Hibernate (absolutely awful, one of the worst implementations of a major concept I’ve ever had the displeasure to work with) or even EF, which at least is fairly powerful and expressive due to LINQ, if data nanny overkill. But a micro-ORM like Dapper gives you all the flexibility and power of direct SQL with the benefits of rich data manipulation via objects, and is fast, very fast. And I’m sorry, but OOP is a well proven, very effective design strategy if you know what you are doing, i. e. , you are a pro. I see three major problems with the node. js approach that no one seems to have a good answer for. So you start with the premise that there are such inefficiencies in waiting for IO that there is a huge potential there. So yeah, you’ve got great concurrency, right until you get to the first blocking library, a database, a file server, etc, which is practically every major piece of functionality written. So it’s just hurry up and wait for 10,000 connections instead of 100, ok that’s something, but where does it get you? So then you start rewriting all those services asynchronously, but that’s just a snake eating its own tail, because that’s hurry up and wait too. Because in the end every database on earth ultimately comes to a magnetic arm skipping across a disk or reading solid state memory, and that’s assuming you’re on the same machine, as opposed to distributing data across a pool of far slower network connections. Then you have the single threaded issue. There is probably no more misused language than Javascript because the barriers of entry are so low. And while early adopters might understand a bad practice when they see one, most javascript programmers simply have no idea what they are doing. Thirdly, Javascript is not exactly a particularly fast language, so the advice seems to be don’t do compute intensive tasks. Where does that get you? So you end up with an elegant solution to one category of issues, but you’re trapped there, with no way out of the non-compute intensive, hurry up and wait ghetto

        M

        Wow, that is one seriously ignorant statement. Uploading files to webservers is *THE* stated rational of node. js’s inventor for why he wanted a non-blocking library. So when you fanboi’s break out of the single threaded, slow dynamic world of cut and paste code with zero type safety, multithreading, and only one trick pony (lambdas) to match . Net’s multiple asynchronous capablities, (all so that you can get 10x more users to hurry up and wait for IO), then you can lecture us about “sophistication”. The . Net framework has a vastly more advanced feature set than any language you can name, period, and IIS, properly configured, can beat the piss out of Apache and can readily match nginx as a reverse proxy or for static content. In the end you’ve got several problems which are intractable. 1. Javascript is slow, and your technology of choice is single-threaded, so intensive compute tasks are off the table. 2. Javascript debugging and testing blows in comparison with any typed language. Pro’s use extensive testing, not fly by the pants ‘hey it works’. 3. The ‘everything is modular’ approach is not an architecture, it’s an invitation to chaos, like Perl or PHP. 4. Concurrency doesn’t buy you crap if all you are doing is waiting for some other IO bound process, which is pretty much everything worth doing with computers. 5. Chất lượng và kinh nghiệm của nhiều lập trình viên javascript (không phải nút. js programmers necessarily, but it’s popularity will bring them) is remarkably poor, as demonstrated by comments in which fanboi’s prove that they have no idea how other systems that actually don’t ignore any computing problem they can’t solve work

        M

        Wow, that is one seriously ignorant statement. Uploading files to webservers is *THE* stated rational of node. js’s inventor for why he wanted a non-blocking library. So when you fanboi’s break out of the single threaded, slow dynamic world of cut and paste code with zero type safety, multithreading, and only one trick pony (lambdas) to match . Net’s multiple asynchronous capablities, (all so that you can get 10x more users to hurry up and wait for IO), then you can lecture us about “sophistication”. The . Net framework has a vastly more advanced feature set than any language you can name, period, and IIS, properly configured, can beat the piss out of Apache and can readily match nginx as a reverse proxy or for static content. In the end you’ve got several problems which are intractable. 1. Javascript is slow, and your technology of choice is single-threaded, so intensive compute tasks are off the table. 2. Javascript debugging and testing blows in comparison with any typed language. Pro’s use extensive testing, not fly by the pants ‘hey it works’. 3. The ‘everything is modular’ approach is not an architecture, it’s an invitation to chaos, like Perl or PHP. 4. Concurrency doesn’t buy you crap if all you are doing is waiting for some other IO bound process, which is pretty much everything worth doing with computers. 5. Chất lượng và kinh nghiệm của nhiều lập trình viên javascript (không phải nút. js programmers necessarily, but it’s popularity will bring them) is remarkably poor, as demonstrated by comments in which fanboi’s prove that they have no idea how other systems that actually don’t ignore any computing problem they can’t solve work

        Lambda Pool

        ORM is just a work around for the problem of impedance mismatch, nothing else. Its not big deal, about OO its a cross paradigm like AOP and its not really based in nothing else beyond encapsulation. Without procedural paradigm OO does nothing, every real skilled programmer already knows that

        Lambda Pool

        ORM is just a work around for the problem of impedance mismatch, nothing else. Its not big deal, about OO its a cross paradigm like AOP and its not really based in nothing else beyond encapsulation. Without procedural paradigm OO does nothing, every real skilled programmer already knows that

        M

        Impedance mismatch involves all sorts of ramifications, especially in regards to maintainability, portability, extensibility and performance. To quote Ethan above (since my explanation obviously didn’t take). “. it’s a tool used to encapsulate database concerns, isolating them from the application. There are several benefits, but ultimately, it makes applications easier to test and maintain years down the road. ” “about OO its a cross paradigm like AOP and its not really based in nothing else beyond encapsulation. Without procedural paradigm OO does nothing” Ok, I’ll be sure to spread the word that we should stop fooling around with all this esoteric OOP stuff and get back to a language that lets us do everything vis-a-vis encapsulation. VB6. You’d think a Javascript programmer might want to mention inheritance, if not polymorphism, since javascript has a relatively unusual mechanism for it. prototypes

        M

        Impedance mismatch involves all sorts of ramifications, especially in regards to maintainability, portability, extensibility and performance. To quote Ethan above (since my explanation obviously didn’t take). “. it’s a tool used to encapsulate database concerns, isolating them from the application. There are several benefits, but ultimately, it makes applications easier to test and maintain years down the road. ” “about OO its a cross paradigm like AOP and its not really based in nothing else beyond encapsulation. Without procedural paradigm OO does nothing” Ok, I’ll be sure to spread the word that we should stop fooling around with all this esoteric OOP stuff and get back to a language that lets us do everything vis-a-vis encapsulation. VB6. You’d think a Javascript programmer might want to mention inheritance, if not polymorphism, since javascript has a relatively unusual mechanism for it. prototypes

        M

        A singleton is an instantiable (non-static) object with a private constructor so that only a single instance can be created. (Imagine an instance class with a static property exposing an instance of itself that depends upon a private instance constructor). It was actually implemented in Java before . Net existed. Perhaps what you are thinking of is a non-blocking Callback mechanism, which is handled in C# via delegates, events (multicast delegates) and the new async and await keywords that transform standard C# into a lambda to be executed at compile time. It also handles multi-threaded asynchronous operations via it’s Parallel extensions, which permit spreading load across multiple threads/cores as long as that work is not serial in nature. Also, I would encourage you to check out a micro-ORM like Dapper. Nó kém toàn diện hơn nhiều so với EF, nhưng nó linh hoạt hơn nhiều và không gây cản trở, cộng với nó hiệu quả hơn đáng kể so với Hibernate và EF (nhanh hơn khoảng 5 lần để đọc)

        M

        A singleton is an instantiable (non-static) object with a private constructor so that only a single instance can be created. (Imagine an instance class with a static property exposing an instance of itself that depends upon a private instance constructor). It was actually implemented in Java before . Net existed. Perhaps what you are thinking of is a non-blocking Callback mechanism, which is handled in C# via delegates, events (multicast delegates) and the new async and await keywords that transform standard C# into a lambda to be executed at compile time. It also handles multi-threaded asynchronous operations via it’s Parallel extensions, which permit spreading load across multiple threads/cores as long as that work is not serial in nature. Also, I would encourage you to check out a micro-ORM like Dapper. Nó kém toàn diện hơn nhiều so với EF, nhưng nó linh hoạt hơn nhiều và không gây cản trở, cộng với nó hiệu quả hơn đáng kể so với Hibernate và EF (nhanh hơn khoảng 5 lần để đọc)

        Qalandr

        Yes this article rocked tits. Esp tốt cho người Croatia có ESL. 😉 #nodeboy

        Qalandr

        Yes this article rocked tits. Esp tốt cho người Croatia có ESL. 😉 #nodeboy

        Ty Turner

        Chúng tôi đang tìm kiếm một Nút. js developer. Please see http. //altaits. com/careers/search-jobs/ for details. Thank you

        Ty Turner

        Chúng tôi đang tìm kiếm một Nút. js developer. Please see http. //altaits. com/careers/search-jobs/ for details. Thank you

        Vob Bobily

        Vì vậy, sau khi đọc bài viết của bạn, tôi vẫn chưa hiểu tại sao Node js muốn phát minh lại bánh xe. Tôi vẫn nghĩ nút js và lượt thích là tào lao

        Vob Bobily

        Vì vậy, sau khi đọc bài viết của bạn, tôi vẫn chưa hiểu tại sao Node js muốn phát minh lại bánh xe. Tôi vẫn nghĩ nút js và lượt thích là tào lao

        cintalauraramarimari

        A great introduction to find out what it is JavaScript and once the answer to from bagaimana tips mengatasi wanita frigid

        cintalauraramarimari

        A great introduction to find out what it is JavaScript and once the answer to from bagaimana tips mengatasi wanita frigid

        Đa-ni-ên

        Noob questions. Um, isn’t the ease with which you can move request data (i. e. untrusted data) into database (where data is assumed to be trusted) a big hazard? How do you ensure that you never forget to inspect every piece of incoming data when it arrives, before you start trusting it? Generally, I would assume something as popular as Node. js would have thought of this, but I remember back when Rails had blanket model update. That changed real quick when Github’s use of this “feature” was exploited (fortunately, by a whitehat). Also, of course, just because you add a conversion speed bump does not mean that people won’t make mistakes, but at least they’re more likely to give it some thought, which probably means they’re going to make less mistakes

        Đa-ni-ên

        Noob questions. Um, isn’t the ease with which you can move request data (i. e. untrusted data) into database (where data is assumed to be trusted) a big hazard? How do you ensure that you never forget to inspect every piece of incoming data when it arrives, before you start trusting it? Generally, I would assume something as popular as Node. js would have thought of this, but I remember back when Rails had blanket model update. That changed real quick when Github’s use of this “feature” was exploited (fortunately, by a whitehat). Also, of course, just because you add a conversion speed bump does not mean that people won’t make mistakes, but at least they’re more likely to give it some thought, which probably means they’re going to make less mistakes

        Q

        I don’t understand the angst against using an ORM. Were you in a proper environment where concerns were separated? The ones bashing ORM just sound like they don’t know what they’re doing or how to engineer proper software. Tại sao tôi lại muốn chuyển từ việc viết phần mềm bằng Java/C#/_whatever_ sang SQL, nơi khó phiên bản, kiểm tra đúng cách và rõ ràng có thể gây tổn thương não nghiêm trọng? . Depending on the situation raw SQL might be best. it might be better to use a NoSQL store. maybe an ORM is fine. Usually, from my experience, I can tell you that an ORM is better for a lot of reasons, and they have been relayed by M. I spent the time to write my own libraries to abstract vendor specific implementations and you need to create your own mappings. You can easily spawn from a certain state or use existing data structures. It took time to write my libraries and it was not easy at all to do it but it was well worth my time to do it since I can now reuse my libraries. Is it the BEST? I don’t know. I like it but I certainly won’t go around to arbitrary technical articles that have nothing to do about SQL and post something like “Yes this technology is good but stay away from raw SQL. ” I just don’t see a need to be bashing anything here, especially an ORM when the article is exclusively about JS and NodeJS

        Q

        I don’t understand the angst against using an ORM. Were you in a proper environment where concerns were separated? The ones bashing ORM just sound like they don’t know what they’re doing or how to engineer proper software. Tại sao tôi lại muốn chuyển từ việc viết phần mềm bằng Java/C#/_whatever_ sang SQL, nơi khó phiên bản, kiểm tra đúng cách và rõ ràng có thể gây tổn thương não nghiêm trọng? . Depending on the situation raw SQL might be best. it might be better to use a NoSQL store. maybe an ORM is fine. Usually, from my experience, I can tell you that an ORM is better for a lot of reasons, and they have been relayed by M. I spent the time to write my own libraries to abstract vendor specific implementations and you need to create your own mappings. You can easily spawn from a certain state or use existing data structures. It took time to write my libraries and it was not easy at all to do it but it was well worth my time to do it since I can now reuse my libraries. Is it the BEST? I don’t know. I like it but I certainly won’t go around to arbitrary technical articles that have nothing to do about SQL and post something like “Yes this technology is good but stay away from raw SQL. ” I just don’t see a need to be bashing anything here, especially an ORM when the article is exclusively about JS and NodeJS

        Michael

        Probably one of the main points of this article, that gives Node is supposed scalability, is the offloading to a Queue or Service Bus that leads to asynchronous processing. That is a well proven architectural pattern, available in many languages, is especially used in CQRS (Command Query Responsibility Segregation) with Event Sourcing, is very well suited to be used by technologies such . Net Reactive Extensions that provide considerably greater functionality and flexibility than Node. Asynchronous programming and handling its pitfalls has been around without Node for years, if you had knowledge of enterprise development. As for the hate against ORMs. you guys crticising it seem to be moving from front-end development into an area where you have no knowledge or expertise in OO, BDD, TDD or any other proven Enterprise level methodology. No concept of integration other than Twitter feeds. No experience of complex Workflow or scalable caching. This is one of the dangers – you know JavaScript, and a bit of SQL. So everything else is superfluous – until you need it, such as the attempts to bring an element of type checking to JavaScript. Seriously, each technology has its place, but there is no one size fits all approach. Appreciate the strengths of each technology, and use them where appropriate

        Michael

        Probably one of the main points of this article, that gives Node is supposed scalability, is the offloading to a Queue or Service Bus that leads to asynchronous processing. That is a well proven architectural pattern, available in many languages, is especially used in CQRS (Command Query Responsibility Segregation) with Event Sourcing, is very well suited to be used by technologies such . Net Reactive Extensions that provide considerably greater functionality and flexibility than Node. Asynchronous programming and handling its pitfalls has been around without Node for years, if you had knowledge of enterprise development. As for the hate against ORMs. you guys crticising it seem to be moving from front-end development into an area where you have no knowledge or expertise in OO, BDD, TDD or any other proven Enterprise level methodology. No concept of integration other than Twitter feeds. No experience of complex Workflow or scalable caching. This is one of the dangers – you know JavaScript, and a bit of SQL. So everything else is superfluous – until you need it, such as the attempts to bring an element of type checking to JavaScript. Seriously, each technology has its place, but there is no one size fits all approach. Appreciate the strengths of each technology, and use them where appropriate

        Reo

        Great introduction to node. js. Thanks, i samo naprjed

        Reo

        Great introduction to node. js. Thanks, i samo naprjed

        Richard Bellantoni

        Because they suck for a complex application. Sure if your scenario where you spent all this time trying to make the ORM work the way you need it to, you could have just put that same effort into writing the SQL properly and making sure it’s organized etc and you would be further along in the project and have more control over the application. ORM’s are great at saving time on a small to medium scale project, but once you delve into more complex and larger applications, you’re going to spend either A. ) Mất nhiều thời gian viết mã để làm cho ORM hoạt động theo cách bạn cần hoặc B. ) Just decide to write the SQL yourself because the time it takes to make the tool work how you need it just isn’t worth it

        Richard Bellantoni

        Because they suck for a complex application. Sure if your scenario where you spent all this time trying to make the ORM work the way you need it to, you could have just put that same effort into writing the SQL properly and making sure it’s organized etc and you would be further along in the project and have more control over the application. ORM’s are great at saving time on a small to medium scale project, but once you delve into more complex and larger applications, you’re going to spend either A. ) Mất nhiều thời gian viết mã để làm cho ORM hoạt động theo cách bạn cần hoặc B. ) Just decide to write the SQL yourself because the time it takes to make the tool work how you need it just isn’t worth it

        sinta maharani

        JavaScript is better than some of the other programming languages. therefore cara menghilangkan gatal keputihan better fit with JavaScript

        sinta maharani

        JavaScript is better than some of the other programming languages. therefore cara menghilangkan gatal keputihan better fit with JavaScript

        naseya10

        Great, informative article. Thanks for sharing this. Unlockpwd

        naseya10

        Great, informative article. Thanks for sharing this. Unlockpwd

        Eric Elliott

        Pot, meet kettle. Đó có thể là những vấn đề nan giải nếu bất kỳ vấn đề nào trong số đó là sự thật. None of them are. 1. a) Ngày nay, JavaScript hoàn toàn là JIT và mang lại hiệu suất mã gốc gấp 1-2 lần (nhanh hơn bất kỳ ngôn ngữ động nào khác mà tôi biết). b) Không chặn theo mặc định có thể mang lại các cải tiến về mức độ hiệu quả của mã – một cách minh bạch. 2. Hầu như tất cả các trình soạn thảo hiện đại đều hỗ trợ suy luận kiểu cho JS. ESLint, Closure Compiler, and a number of other options offer sophisticated static analysis capabilities. TypeScript even offers a nice structural type system. 3. The opposite of modular is a tightly coupled monolith. That’s a bad idea in ANY language. 4. “nếu tất cả những gì bạn đang làm là chờ đợi một số quy trình ràng buộc IO khác” – Không chặn theo mặc định có nghĩa là bạn KHÔNG BAO GIỜ chờ đợi một số quy trình ràng buộc IO khác. That’s why Node delivers such huge improvements on resource utilization. 5. 2006 được gọi là. They want their language-snob attitude back. The days when serious engineers considered JS to be a toy are long since over. JS powers sophisticated enterprise applications at just about every fortune 500 today. Additional point. JS is the only language with fully native support for isomorphic code (meaning you reuse most of your application on both servers and clients). You can write JS ONCE, and it will power the server, the web browser, and mobile devices including iOS and Android. See React Native. https. // leanpub. com/learn-javascript-react-nodejs-es6/

        Eric Elliott

        Pot, meet kettle. Đó có thể là những vấn đề nan giải nếu bất kỳ vấn đề nào trong số đó là sự thật. None of them are. 1. a) Ngày nay, JavaScript hoàn toàn là JIT và mang lại hiệu suất mã gốc gấp 1-2 lần (nhanh hơn bất kỳ ngôn ngữ động nào khác mà tôi biết). b) Không chặn theo mặc định có thể mang lại các cải tiến về mức độ hiệu quả của mã – một cách minh bạch. 2. Hầu như tất cả các trình soạn thảo hiện đại đều hỗ trợ suy luận kiểu cho JS. ESLint, Closure Compiler, and a number of other options offer sophisticated static analysis capabilities. TypeScript even offers a nice structural type system. 3. The opposite of modular is a tightly coupled monolith. That’s a bad idea in ANY language. 4. “nếu tất cả những gì bạn đang làm là chờ đợi một số quy trình ràng buộc IO khác” – Không chặn theo mặc định có nghĩa là bạn KHÔNG BAO GIỜ chờ đợi một số quy trình ràng buộc IO khác. That’s why Node delivers such huge improvements on resource utilization. 5. 2006 được gọi là. They want their language-snob attitude back. The days when serious engineers considered JS to be a toy are long since over. JS powers sophisticated enterprise applications at just about every fortune 500 today. Additional point. JS is the only language with fully native support for isomorphic code (meaning you reuse most of your application on both servers and clients). You can write JS ONCE, and it will power the server, the web browser, and mobile devices including iOS and Android. See React Native. https. // leanpub. com/learn-javascript-react-nodejs-es6/

        M

        1) 1-2x native code performance? Do the electrons run faster on node code? Not a good start. 2) Type inference is mapping variable declarations to types without explicit syntax, i. e. , a) nó yêu cầu các loại thực tế và b) trình biên dịch thực thi an toàn loại, không phải trình chỉnh sửa. And you can dress it up any way you want, but there is no way to enforce sophisticated state analysis with slop-tastic dictionaries of whatever stored in strings & functional delegates. Also, Typescript is not Javascript, it is Javascript with a half-assed type system pasted on top. Even Google is abandoning Js for Typescript in Angular 2. 0 Why? Because Google has decided that an untyped system is insufficient for serious work. But is that type system anywhere near as sophisticated as a compiled language? Nope, not even close. 3) You are misunderstanding what I was characterizing as “modular design”. The alternative is not monolithic code, but encapsulation, specialization via inheritance (or prototyping), polymorphism, and externalizing dependencies via IoC. The alternative is SOLID, i. e. , modern Object Orientation. 4) Your process may not be waiting, but your customers are waiting for the callback. My point is that being able to serve more requests doesn’t do you any good if every served request then has to wait on yet another operation. In the end, somewhere somehow, you will eventually be going to a disk or waiting for IO, because that’s where the information the customer wants lives. 5) Tôi không nói rằng JavaScript là ngôn ngữ đồ chơi, tôi đã nói rằng hầu hết các nhà phát triển JavaScript đều có ý tốt, cắt và dán nghiệp dư và họ sẽ xâm chiếm hàng ngũ nút. js khi nó trở nên phổ biến hơn. I’ll take a strong type system over “full native support” (that’s not native) for “isometric” code that can run on clients or servers [you say that like that’s a good thing] any day. Wow, Js on android and iOS. I guess the days of Apple adding another strongly typed, native language for iOS are over Obviously you’ve never heard of Mono, the cross platform . Net that compiles and runs on every major OS, produces native runtimes for all three major mobile platforms, and runs on everything from beowulf clusters to wearable devices. This is why we don’t respect you. You don’t know or understand anything that came before, or anything outside of your javascript bubble. Bạn không giải quyết bất kỳ vấn đề nào chưa được giải quyết trước đây, nhưng bạn tin rằng mình có tất cả các câu trả lời. That seems to be a common theme with anyone whose education system stressed self-esteem over critical thinking

        M

        1) 1-2x native code performance? Do the electrons run faster on node code? Not a good start. 2) Type inference is mapping variable declarations to types without explicit syntax, i. e. , a) nó yêu cầu các loại thực tế và b) trình biên dịch thực thi an toàn loại, không phải trình chỉnh sửa. And you can dress it up any way you want, but there is no way to enforce sophisticated state analysis with slop-tastic dictionaries of whatever stored in strings & functional delegates. Also, Typescript is not Javascript, it is Javascript with a half-assed type system pasted on top. Even Google is abandoning Js for Typescript in Angular 2. 0 Why? Because Google has decided that an untyped system is insufficient for serious work. But is that type system anywhere near as sophisticated as a compiled language? Nope, not even close. 3) You are misunderstanding what I was characterizing as “modular design”. The alternative is not monolithic code, but encapsulation, specialization via inheritance (or prototyping), polymorphism, and externalizing dependencies via IoC. The alternative is SOLID, i. e. , modern Object Orientation. 4) Your process may not be waiting, but your customers are waiting for the callback. My point is that being able to serve more requests doesn’t do you any good if every served request then has to wait on yet another operation. In the end, somewhere somehow, you will eventually be going to a disk or waiting for IO, because that’s where the information the customer wants lives. 5) Tôi không nói rằng JavaScript là ngôn ngữ đồ chơi, tôi đã nói rằng hầu hết các nhà phát triển JavaScript đều có ý tốt, cắt và dán nghiệp dư và họ sẽ xâm chiếm hàng ngũ nút. js khi nó trở nên phổ biến hơn. I’ll take a strong type system over “full native support” (that’s not native) for “isometric” code that can run on clients or servers [you say that like that’s a good thing] any day. Wow, Js on android and iOS. I guess the days of Apple adding another strongly typed, native language for iOS are over Obviously you’ve never heard of Mono, the cross platform . Net that compiles and runs on every major OS, produces native runtimes for all three major mobile platforms, and runs on everything from beowulf clusters to wearable devices. This is why we don’t respect you. You don’t know or understand anything that came before, or anything outside of your javascript bubble. Bạn không giải quyết bất kỳ vấn đề nào chưa được giải quyết trước đây, nhưng bạn tin rằng mình có tất cả các câu trả lời. That seems to be a common theme with anyone whose education system stressed self-esteem over critical thinking

        Eric Elliott

        This reply just strikes me as willful ignorance. 1. Có thật không? . Watch Brendan Eich’s Fluent talks if you’re interested in actually learning something. 2. I know what types and type inference are, and I know the benefits of static types. Tôi đã tham gia trò chơi này từ trước khi JavaScript được phát minh. TypeScript là một siêu bộ JavaScript biên dịch thành JS & cho phép phân tích tĩnh tinh vi. It’s structural type system is better than the type system Java had back when I was coding in Java, and it’s much better (as in more reliable and flexible) than C and C++. 3. “encapsulation, specialization via inheritance (or prototyping), polymorphism, and externalizing dependencies via IoC” – these are all forms of modularity, and JavaScript modules provide viable alternatives to all of them – and in the case of class inheritance, it’s far superior. See https. //medium. com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3 4. “your customers are waiting for the callback. ” Fortunately, that’s where the performance I talked about in point 1 shines. JS provides efficient utilization of I/O resources. Trên thực tế, xử lý tắc nghẽn I/O là toàn bộ lý do mà Node được phát minh. I’ve ported several large production projects from PHP and Ruby to Node, and seen dramatic reductions in response times, both average response times and response time ranges – and since a typical Node app utilizes a small fraction of the memory required for C# applications, your customer I/O competes less with the RAM paging you might experience with a compiled C# application. 5. “you say that like that’s a good thing” I’ve seen objectively measurable increases in team velocity ranging from 40% – 60% improvements. Believe it or not, it’s a fact, and being more able to adapt to changing needs and experiment more (particularly in the UI layer) delivers very real business value. Bạn nghĩ tại sao rất nhiều tổ chức doanh nghiệp đang áp dụng Node? . It’s because they ran the tests themselves and figured out it’s a huge win. “Obviously you’ve never heard of Mono, the cross platform . Net that compiles and runs on every major OS” Yeah, I have – what I haven’t heard of is Mono delivering anywhere near the value that Node delivers in enterprise production. Có một bài viết tốt về điều đó? . Check out this awesome result in the top 3 of the SERP. http. //www. quora. com/Why-isnt-C-with-Mono-popular-for-enterprise-applications-on-Linux-servers . but a quick Google search for Enterprise Node. js delivers quite a bit. Here are the top 3 search results I see. http. //blog. risingstack. com/node-js-is-enterprise-ready/ https. //www. joyent. com/nodejs-support https. //www. centurylinkcloud. com/blog/post/node-js-is-taking-over-the-enterprise-whether-you-like-it-or-not/ There’s really no contest here

        Eric Elliott

        This reply just strikes me as willful ignorance. 1. Có thật không? . Watch Brendan Eich’s Fluent talks if you’re interested in actually learning something. 2. I know what types and type inference are, and I know the benefits of static types. Tôi đã tham gia trò chơi này từ trước khi JavaScript được phát minh. TypeScript là một siêu bộ JavaScript biên dịch thành JS & cho phép phân tích tĩnh tinh vi. It’s structural type system is better than the type system Java had back when I was coding in Java, and it’s much better (as in more reliable and flexible) than C and C++. 3. “encapsulation, specialization via inheritance (or prototyping), polymorphism, and externalizing dependencies via IoC” – these are all forms of modularity, and JavaScript modules provide viable alternatives to all of them – and in the case of class inheritance, it’s far superior. See https. //medium. com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3 4. “your customers are waiting for the callback. ” Fortunately, that’s where the performance I talked about in point 1 shines. JS provides efficient utilization of I/O resources. Trên thực tế, xử lý tắc nghẽn I/O là toàn bộ lý do mà Node được phát minh. I’ve ported several large production projects from PHP and Ruby to Node, and seen dramatic reductions in response times, both average response times and response time ranges – and since a typical Node app utilizes a small fraction of the memory required for C# applications, your customer I/O competes less with the RAM paging you might experience with a compiled C# application. 5. “you say that like that’s a good thing” I’ve seen objectively measurable increases in team velocity ranging from 40% – 60% improvements. Believe it or not, it’s a fact, and being more able to adapt to changing needs and experiment more (particularly in the UI layer) delivers very real business value. Bạn nghĩ tại sao rất nhiều tổ chức doanh nghiệp đang áp dụng Node? . It’s because they ran the tests themselves and figured out it’s a huge win. “Obviously you’ve never heard of Mono, the cross platform . Net that compiles and runs on every major OS” Yeah, I have – what I haven’t heard of is Mono delivering anywhere near the value that Node delivers in enterprise production. Có một bài viết tốt về điều đó? . Check out this awesome result in the top 3 of the SERP. http. //www. quora. com/Why-isnt-C-with-Mono-popular-for-enterprise-applications-on-Linux-servers . but a quick Google search for Enterprise Node. js delivers quite a bit. Here are the top 3 search results I see. http. //blog. risingstack. com/node-js-is-enterprise-ready/ https. //www. joyent. com/nodejs-support https. //www. centurylinkcloud. com/blog/post/node-js-is-taking-over-the-enterprise-whether-you-like-it-or-not/ There’s really no contest here

        M

        1, vâng, tôi đang chế nhạo tuyên bố rõ ràng là tình cờ của bạn rằng JavaScript làm cho các điện tử chạy nhanh hơn hoặc thậm chí nhanh như bản địa, bởi vì đó là bằng sáng chế vô nghĩa. Not only is that impossible, it ignores one of node. js’ acknowledged weaknesses. It sucks on compute intensive operations, because it’s single threaded, which means compute intensive operations block execution. duh. 2. Kiến thức về Java của bạn không đủ để bạn hiểu hệ thống loại có thẩm quyền là gì. Java’s generics are a largely useless, johnny come lately me-too feature when compared against to C# generics because they suffer from run-time erasure, in other words, the generic type safety and reflection only works at compile time, because at run time, everything is cast to an object. So when you are going on about static analysis, you are effectively trying to claim it’s as good as compile time + run time type reflection, which is very far from the truth. 3. meh. Việc chia nhỏ mọi thứ thành các chức năng riêng biệt cũng là một dạng mô-đun, nhưng nó kém hơn rất nhiều so với RẮN, đó là quan điểm của tôi ngay từ đầu. Và mặc dù kế thừa dựa trên nguyên mẫu rất thú vị, nhưng nó khó tốt hơn kế thừa thực, cho phép sắp xếp linh hoạt hơn nhiều. 4. Tôi không thấy việc tăng tốc ứng dụng Ruby hay cấu trúc lại một số PHP nhảm nhí thành thứ gì đó nhanh hơn ấn tượng như thế nào. Yêu cầu chi phí bộ nhớ của bạn là vô căn cứ như nhau. Tôi có thể chạy micro. Net trên đồng hồ hoặc trên thiết bị arduino. tôi có thể viết. Net chạy rất tốt trên điện thoại yếu. Xem bộ nhớ mà chrome tiêu thụ cho một SPA hoặc thử chạy một ứng dụng javascript phức tạp trên máy tính bảng rồi cho tôi biết JavaScript “nhẹ” như thế nào. 5. Việc thiếu sự phân tách hợp lý các mối quan tâm (là nguyên nhân của hầu hết các vấn đề về khả năng bảo trì) là vấn đề số một mà tôi gặp phải ở các khách hàng có quy mô doanh nghiệp và tốc độ làm việc nhóm ấn tượng luôn là cách họ đạt được điều đó. Why do I think a number of organizations are choosing node? Because typically a mediocre, over-sized team of moderate competence f’d up the previously shiny new thing that was supposed to solve all their problems, so they want to believe the hype that the problem is not them, but their previous technology choices

        M

        1, vâng, tôi đang chế nhạo tuyên bố rõ ràng là tình cờ của bạn rằng JavaScript làm cho các điện tử chạy nhanh hơn hoặc thậm chí nhanh như bản địa, bởi vì đó là bằng sáng chế vô nghĩa. Not only is that impossible, it ignores one of node. js’ acknowledged weaknesses. It sucks on compute intensive operations, because it’s single threaded, which means compute intensive operations block execution. duh. 2. Kiến thức về Java của bạn không đủ để bạn hiểu hệ thống loại có thẩm quyền là gì. Java’s generics are a largely useless, johnny come lately me-too feature when compared against to C# generics because they suffer from run-time erasure, in other words, the generic type safety and reflection only works at compile time, because at run time, everything is cast to an object. So when you are going on about static analysis, you are effectively trying to claim it’s as good as compile time + run time type reflection, which is very far from the truth. 3. meh. Việc chia nhỏ mọi thứ thành các chức năng riêng biệt cũng là một dạng mô-đun, nhưng nó kém hơn rất nhiều so với RẮN, đó là quan điểm của tôi ngay từ đầu. Và mặc dù kế thừa dựa trên nguyên mẫu rất thú vị, nhưng nó khó tốt hơn kế thừa thực, cho phép sắp xếp linh hoạt hơn nhiều. 4. Tôi không thấy việc tăng tốc ứng dụng Ruby hay cấu trúc lại một số PHP nhảm nhí thành thứ gì đó nhanh hơn ấn tượng như thế nào. Yêu cầu chi phí bộ nhớ của bạn là vô căn cứ như nhau. Tôi có thể chạy micro. Net trên đồng hồ hoặc trên thiết bị arduino. tôi có thể viết. Net chạy rất tốt trên điện thoại yếu. Xem bộ nhớ mà chrome tiêu thụ cho một SPA hoặc thử chạy một ứng dụng javascript phức tạp trên máy tính bảng rồi cho tôi biết JavaScript “nhẹ” như thế nào. 5. Việc thiếu sự phân tách hợp lý các mối quan tâm (là nguyên nhân của hầu hết các vấn đề về khả năng bảo trì) là vấn đề số một mà tôi gặp phải ở các khách hàng có quy mô doanh nghiệp và tốc độ làm việc nhóm ấn tượng luôn là cách họ đạt được điều đó. Why do I think a number of organizations are choosing node? Because typically a mediocre, over-sized team of moderate competence f’d up the previously shiny new thing that was supposed to solve all their problems, so they want to believe the hype that the problem is not them, but their previous technology choices

        Eric Elliott

        1. I think you misunderstood my meaning. JS chạy CHẬM 1-2 lần so với ngôn ngữ bản địa — hiệu năng tốt hơn nhiều so với bất kỳ ngôn ngữ động nào khác mà tôi biết. It’s fast enough to run AAA game engines like Unreal Engine and Unity in stunning quality at 60+ fps. 2. I actually think that a good native type tool would be a good addition to JavaScript, but only if they’re user-definable structural types. Điều đó nói rằng, JavaScript hỗ trợ phân tích tĩnh thông qua suy luận kiểu và có một số cách để cung cấp gợi ý kiểu cho các công cụ dành cho nhà phát triển. In addition, JavaScript also has an impressive array of runtime analysis tools. 3. “hardly better than real inheritance, which permits far more flexible arrangements. ” Sai. https. //medium. com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3 4. My apologies. Tôi đã không biết về vi mô. Net. JavaScript also runs as-is on low-powered devices including Arduino, Tessel, and a number of others. Node works great on most of them. Nếu điều đó không đủ nhỏ, bạn có thể tạo một trình biên dịch Node tùy chỉnh, loại bỏ các tính năng, thậm chí hoán đổi công cụ V8 cho một công cụ JS khác nếu bạn cần. Bạn cũng có thể hạn chế sử dụng các thư viện JS nhỏ (trong đó có rất nhiều trên npm) để giữ cho cơ sở mã của bạn nhỏ gọn. 5. “. they want to believe the hype that the problem is not them, but their previous technology choices. ” That might explain an experiment or two, but the Node takeover is much more than that. Chúng tôi đang nhanh chóng thay thế các ứng dụng bằng nhiều ngôn ngữ khác nhau bằng Node. Having worked at a fortune 500 during the transition to Node, I can tell you our justifications. We did experimental ports to Node, found. 1. that the app was faster and more reliable, delivering huge wins in both average response time, and the number of requests we could serve with the same machine, and 2. The developers were more productive for a variety of reasons, including the fact that JavaScript specialists could more easily work on both sides of the stack without context switching, and a lot of code could be shared in both the server and the client. Those advantages have real, measurable influences on the company’s bottom line. That’s why Node is taking over at both startups and enterprise companies

        Eric Elliott

        1. I think you misunderstood my meaning. JS chạy CHẬM 1-2 lần so với ngôn ngữ bản địa — hiệu năng tốt hơn nhiều so với bất kỳ ngôn ngữ động nào khác mà tôi biết. It’s fast enough to run AAA game engines like Unreal Engine and Unity in stunning quality at 60+ fps. 2. I actually think that a good native type tool would be a good addition to JavaScript, but only if they’re user-definable structural types. Điều đó nói rằng, JavaScript hỗ trợ phân tích tĩnh thông qua suy luận kiểu và có một số cách để cung cấp gợi ý kiểu cho các công cụ dành cho nhà phát triển. In addition, JavaScript also has an impressive array of runtime analysis tools. 3. “hardly better than real inheritance, which permits far more flexible arrangements. ” Sai. https. //medium. com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3 4. My apologies. Tôi đã không biết về vi mô. Net. JavaScript also runs as-is on low-powered devices including Arduino, Tessel, and a number of others. Node works great on most of them. Nếu điều đó không đủ nhỏ, bạn có thể tạo một trình biên dịch Node tùy chỉnh, loại bỏ các tính năng, thậm chí hoán đổi công cụ V8 cho một công cụ JS khác nếu bạn cần. Bạn cũng có thể hạn chế sử dụng các thư viện JS nhỏ (trong đó có rất nhiều trên npm) để giữ cho cơ sở mã của bạn nhỏ gọn. 5. “. they want to believe the hype that the problem is not them, but their previous technology choices. ” That might explain an experiment or two, but the Node takeover is much more than that. Chúng tôi đang nhanh chóng thay thế các ứng dụng bằng nhiều ngôn ngữ khác nhau bằng Node. Having worked at a fortune 500 during the transition to Node, I can tell you our justifications. We did experimental ports to Node, found. 1. that the app was faster and more reliable, delivering huge wins in both average response time, and the number of requests we could serve with the same machine, and 2. The developers were more productive for a variety of reasons, including the fact that JavaScript specialists could more easily work on both sides of the stack without context switching, and a lot of code could be shared in both the server and the client. Those advantages have real, measurable influences on the company’s bottom line. That’s why Node is taking over at both startups and enterprise companies

        Kesava Velugubantla

        đặc biệt là với cạnh nó thực sự tiện dụng

        Kesava Velugubantla

        đặc biệt là với cạnh nó thực sự tiện dụng

        pawan kumar

        Cảm ơn Tamisalv Tôi đang tìm tài liệu tham khảo đọc nhanh để hiểu về nút. js và tại sao các dự án có thể sử dụng nó. Đọc điều này giúp tôi hiểu rõ hơn về những ưu điểm của công nghệ này và cả khi người ta có thể sử dụng nó. Chúc mừng

        pawan kumar

        Cảm ơn Tamisalv Tôi đang tìm tài liệu tham khảo đọc nhanh để hiểu về nút. js và tại sao các dự án có thể sử dụng nó. Đọc điều này giúp tôi hiểu rõ hơn về những ưu điểm của công nghệ này và cả khi người ta có thể sử dụng nó. Chúc mừng

        Jay

        “Sau hơn 20 năm web không trạng thái dựa trên mô hình phản hồi yêu cầu không trạng thái, cuối cùng chúng tôi cũng có các ứng dụng web với kết nối hai chiều, thời gian thực. ” Kết quả là ngày nay chúng tôi có các trang web mất nhiều thời gian tải hơn khi chúng tôi có tốc độ Internet theo thứ tự megabyte trên giây, so với trước đây khi tốc độ của chúng tôi theo thứ tự byte trên giây nhưng các trang web của chúng tôi đơn giản là HTML. Ngày nay, chúng ta có các trang web tải nửa chừng rồi dừng lại, các trang web này gặp sự cố do lỗi mạng nhỏ nhất. e. gán lại địa chỉ IP động hoặc mất tín hiệu WiFi tạm thời buộc bạn phải tải lại toàn bộ trang, trong khi các trình duyệt được thiết kế để xử lý các lỗi đó một cách khéo léo hoặc tiếp tục sau khi kết nối mạng được khôi phục, các tập lệnh Javascript có lỗi cũng không xử lý được các lỗi đó

        Jay

        “Sau hơn 20 năm web không trạng thái dựa trên mô hình phản hồi yêu cầu không trạng thái, cuối cùng chúng tôi cũng có các ứng dụng web với kết nối hai chiều, thời gian thực. ” Kết quả là ngày nay chúng tôi có các trang web mất nhiều thời gian tải hơn khi chúng tôi có tốc độ Internet theo thứ tự megabyte trên giây, so với trước đây khi tốc độ của chúng tôi theo thứ tự byte trên giây nhưng các trang web của chúng tôi đơn giản là HTML. Ngày nay, chúng ta có các trang web tải nửa chừng rồi dừng lại, các trang web này gặp sự cố do lỗi mạng nhỏ nhất. e. gán lại địa chỉ IP động hoặc mất tín hiệu WiFi tạm thời buộc bạn phải tải lại toàn bộ trang, trong khi các trình duyệt được thiết kế để xử lý các lỗi đó một cách khéo léo hoặc tiếp tục sau khi kết nối mạng được khôi phục, các tập lệnh Javascript có lỗi cũng không xử lý được các lỗi đó

        adroittech

        Tôi chỉ có 1 câu hỏi ở đây với tuyên bố của bạn. “Hệ thống kiểu cấu trúc của nó tốt hơn hệ thống kiểu mà Java đã có khi tôi viết mã bằng Java, và nó tốt hơn nhiều (về độ tin cậy và linh hoạt hơn) so với C và C++. “Tôi không thể lấy cái đó. Thế nào? . C ++ được gõ mạnh có thể giải quyết mọi vấn đề, ngay cả khi xây dựng nút js. Nút tỏa sáng ở i/o không chặn và đó là về nó, nó không thể làm gì khác. Có, bạn có thể cắt mã nút và làm cho nó hoạt động trên các thiết bị siêu nhỏ nhưng liệu nó có hiệu quả và hợp lý không? . Nó không giống như I/O không chặn là một cái gì đó mới, chúng tôi đã có điều đó trong nhiều công nghệ bao gồm java,. Net, cơ bản, python và perl, cái này rất cũ. Lý do duy nhất khiến thứ này trở nên nổi tiếng là nó đã cho phép hàng triệu nhà phát triển javascript giao diện người dùng, những người không hiểu con trỏ và nói xấu về C ++, viết mã máy chủ, điều này đơn giản là quá sức, đó là lý do tại sao buzz. Và về “Nút nói riêng thực sự rất phù hợp để xử lý tính toán phân tán”, tại sao người ta lại viết một tuyên bố như vậy? . nó không thể tính toán hiệu quả như C/C++/Java. Period. With all due respect, lets not bring C++ in picture here, there is simply no practical comparison at all, or it will be very touchy

        adroittech

        Tôi chỉ có 1 câu hỏi ở đây với tuyên bố của bạn. “Hệ thống kiểu cấu trúc của nó tốt hơn hệ thống kiểu mà Java đã có khi tôi viết mã bằng Java, và nó tốt hơn nhiều (về độ tin cậy và linh hoạt hơn) so với C và C++. “Tôi không thể lấy cái đó. Thế nào? . C ++ được gõ mạnh có thể giải quyết mọi vấn đề, ngay cả khi xây dựng nút js. Nút tỏa sáng ở i/o không chặn và đó là về nó, nó không thể làm gì khác. Có, bạn có thể cắt mã nút và làm cho nó hoạt động trên các thiết bị siêu nhỏ nhưng liệu nó có hiệu quả và hợp lý không? . Nó không giống như I/O không chặn là một cái gì đó mới, chúng tôi đã có điều đó trong nhiều công nghệ bao gồm java,. Net, cơ bản, python và perl, cái này rất cũ. Lý do duy nhất khiến thứ này trở nên nổi tiếng là nó đã cho phép hàng triệu nhà phát triển javascript giao diện người dùng, những người không hiểu con trỏ và nói xấu về C ++, viết mã máy chủ, điều này đơn giản là quá sức, đó là lý do tại sao buzz. Và về “Nút nói riêng thực sự rất phù hợp để xử lý tính toán phân tán”, tại sao người ta lại viết một tuyên bố như vậy? . nó không thể tính toán hiệu quả như C/C++/Java. Period. With all due respect, lets not bring C++ in picture here, there is simply no practical comparison at all, or it will be very touchy

        Eric Elliott

        You may be interested in this. https. //Trung bình. com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6

        Eric Elliott

        You may be interested in this. https. //Trung bình. com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6

        Ken Kopelson

        Trên thực tế, Javascript trong công cụ máy chủ V8 CỰC nhanh. Tuyên bố rằng Javascript không nhanh đã lỗi thời. You combine Node with Chrome and you get a very fast environment. If you understand how Node works, it has an event loop that processes all code that is ready to run. So, you call a function that has a blocking database call inside and a callback when finished, it allows the the function to be called, which returns immediately allowing you to get on with other things while the database call is being processed. Vì vậy, bạn không “nhanh lên và chờ đợi” như bạn nghĩ. You get on with other things, and once the database call finishes, execution will continue to the callback which is invoked after the database call returns. So, you get the same basic abilities as a multi-threaded environment without all the extra overhead incurred by thread-state swapping. Because you don’t get “time slicing” you have to be careful that no piece of code takes too long to run, and if it does, you just break it up using packages like “async”. I come from a long C, C++, Delphi, Java background, having mastered the multi-threaded paradigm, and I can state assuredly that the Node single-threaded async paradigm is super cool, fast, and highly scalable. NẾU BẠN BIẾT MÌNH ĐANG LÀM GÌ. Nhưng điều đó cũng tương tự đối với bất kỳ công nghệ nào khác. None of these technologies are for neophytes

        Ken Kopelson

        Trên thực tế, Javascript trong công cụ máy chủ V8 CỰC nhanh. Tuyên bố rằng Javascript không nhanh đã lỗi thời. You combine Node with Chrome and you get a very fast environment. If you understand how Node works, it has an event loop that processes all code that is ready to run. So, you call a function that has a blocking database call inside and a callback when finished, it allows the the function to be called, which returns immediately allowing you to get on with other things while the database call is being processed. Vì vậy, bạn không “nhanh lên và chờ đợi” như bạn nghĩ. You get on with other things, and once the database call finishes, execution will continue to the callback which is invoked after the database call returns. So, you get the same basic abilities as a multi-threaded environment without all the extra overhead incurred by thread-state swapping. Because you don’t get “time slicing” you have to be careful that no piece of code takes too long to run, and if it does, you just break it up using packages like “async”. I come from a long C, C++, Delphi, Java background, having mastered the multi-threaded paradigm, and I can state assuredly that the Node single-threaded async paradigm is super cool, fast, and highly scalable. NẾU BẠN BIẾT MÌNH ĐANG LÀM GÌ. Nhưng điều đó cũng tương tự đối với bất kỳ công nghệ nào khác. None of these technologies are for neophytes

        M

        Một ứng dụng phức tạp chính xác là nơi các đối tượng Miền được điều chỉnh tốt và các hệ thống con được tách riêng phù hợp là cần thiết nhất. Nếu bạn đang dành toàn bộ thời gian để cố gắng làm cho ORM hoạt động, bạn nên tìm hiểu ORM đó tốt hơn hoặc kiếm một ORM khác. Tôi cho rằng cái trước không cần phải nói vì vậy nếu bạn vẫn đang chiến đấu với ORM của mình thì đã đến lúc chọn một cái vừa hoạt động

        M

        Một ứng dụng phức tạp chính xác là nơi các đối tượng Miền được điều chỉnh tốt và các hệ thống con được tách riêng phù hợp là cần thiết nhất. Nếu bạn đang dành toàn bộ thời gian để cố gắng làm cho ORM hoạt động, bạn nên tìm hiểu ORM đó tốt hơn hoặc kiếm một ORM khác. Tôi cho rằng cái trước không cần phải nói vì vậy nếu bạn vẫn đang chiến đấu với ORM của mình thì đã đến lúc chọn một cái vừa hoạt động

        M

        Ngoại trừ nhận xét cuối cùng của bạn rằng những công nghệ này không dành cho tân sinh viên, tôi nghĩ bạn đang bỏ qua hai đoạn cuối mà bạn đang phản hồi. Ngay cả người sáng lập nút. js nói để tránh các hoạt động chuyên sâu tính toán. Có, V8 tăng tốc javascript, nhưng điều đó không giải quyết được vấn đề về hoạt động tính toán chuyên sâu hoặc hoạt động phụ thuộc vào IO chặn một chuỗi. Sau đó, bạn trả lời nút đó. js không bị chặn và do đó có thể đợi. Tuyệt, tôi hiểu rồi, chắc chắn rồi, nhưng bạn còn chờ gì nữa? . js rõ ràng, (rất nhiều vì lợi ích được tuyên bố là “một ngôn ngữ thực sự để cai trị tất cả”), bởi vì nút luồng đơn của bạn. js vui vẻ chuyển sang một thứ khác cho đến khi gọi lại. Vì vậy, nút. js hoạt động tốt miễn là bạn có thể dựa vào các quy trình khác xử lý khối lượng công việc đang chặn (như chờ IO) hoặc một phiên bản khác của nút đơn luồng. js, điều đó chắc chắn sẽ (nếu được viết “chính xác”) sẽ chuyển hướng sang một quy trình khác. Và đó là vấn đề. có một tập hợp con giới hạn nội dung được thực hiện trong các chương trình có thể được thực thi song song/không theo thứ tự và/hoặc không dựa vào các hoạt động chặn. Đa luồng phức tạp hơn và có một số chi phí hoạt động mỗi khi có chuyển đổi ngữ cảnh, nhưng điều đó có nghĩa là có thể ném nhiều lõi hơn vào các đơn vị công việc có thể song song hóa và thậm chí các hoạt động rời rạc có thể được xử lý bởi các luồng khác nhau. Trong một “nút. js giải quyết mọi thứ”, bạn đang dựa vào thứ gì đó không được viết trong nút. js hoặc chờ nút đơn luồng của bạn. js để hoàn thành tất cả những thứ phải hoàn thành, bằng cách này hay cách khác

        M

        Ngoại trừ nhận xét cuối cùng của bạn rằng những công nghệ này không dành cho tân sinh viên, tôi nghĩ bạn đang bỏ qua hai đoạn cuối mà bạn đang phản hồi. Ngay cả người sáng lập nút. js nói để tránh các hoạt động chuyên sâu tính toán. Có, V8 tăng tốc javascript, nhưng điều đó không giải quyết được vấn đề về hoạt động tính toán chuyên sâu hoặc hoạt động phụ thuộc vào IO chặn một chuỗi. Sau đó, bạn trả lời nút đó. js không bị chặn và do đó có thể đợi. Tuyệt, tôi hiểu rồi, chắc chắn rồi, nhưng bạn còn chờ gì nữa? . js rõ ràng, (rất nhiều vì lợi ích được tuyên bố là “một ngôn ngữ thực sự để cai trị tất cả”), bởi vì nút luồng đơn của bạn. js vui vẻ chuyển sang một thứ khác cho đến khi gọi lại. Vì vậy, nút. js hoạt động tốt miễn là bạn có thể dựa vào các quy trình khác xử lý khối lượng công việc đang chặn (như chờ IO) hoặc một phiên bản khác của nút đơn luồng. js, điều đó chắc chắn sẽ (nếu được viết “chính xác”) sẽ chuyển hướng sang một quy trình khác. Và đó là vấn đề. có một tập hợp con giới hạn nội dung được thực hiện trong các chương trình có thể được thực thi song song/không theo thứ tự và/hoặc không dựa vào các hoạt động chặn. Đa luồng phức tạp hơn và có một số chi phí hoạt động mỗi khi có chuyển đổi ngữ cảnh, nhưng điều đó có nghĩa là có thể ném nhiều lõi hơn vào các đơn vị công việc có thể song song hóa và thậm chí các hoạt động rời rạc có thể được xử lý bởi các luồng khác nhau. Trong một “nút. js giải quyết mọi thứ”, bạn đang dựa vào thứ gì đó không được viết trong nút. js hoặc chờ nút đơn luồng của bạn. js để hoàn thành tất cả những thứ phải hoàn thành, bằng cách này hay cách khác

        Ken Kopelson

        Bạn biết gì? . Rõ ràng là bạn chưa bao giờ xây dựng bất cứ thứ gì nghiêm túc trong Node. js. Vâng, tôi có, và tôi có thể nói với bạn rằng nó hoạt động rất tốt nếu bạn thực sự lập trình nó một cách chính xác. Điều đó có nghĩa là bạn sử dụng những thứ như hàng đợi công việc, bạn sử dụng phân cụm mà Node cung cấp, bạn đảm bảo rằng bạn làm mọi thứ với lời gọi lại và lời hứa, bạn sử dụng “async” và “setImmediate” để chia sẻ bộ xử lý đúng cách giữa mã đang chờ và mã có thể . Ví dụ: tôi đã viết một thuật toán sắp xếp heap “không đồng bộ” hoạt động rất tốt, sắp xếp các danh sách lớn trong khi không chặn trong bất kỳ khoảng thời gian đáng kể nào. Tôi cũng có một thuật toán heuristic 5000 dòng khá phức tạp mà tôi đã chia ra để các vòng lặp chính được thực thi bằng cách sử dụng các cấu trúc không đồng bộ. Sau đó, tôi đã thực hiện các lệnh này từ hàng đợi công việc có tên là “Kue” cho phép sử dụng hiệu quả tất cả các lõi, không có luồng, thời gian phản hồi giao diện người dùng tuyệt vời và các công việc tính toán phức tạp được thực hiện trong nền bằng cách sử dụng tất cả sức mạnh bộ xử lý có sẵn. Điều này TẤT CẢ được thực hiện bằng javascript với hiệu suất tuyệt vời trong cả các tác vụ sử dụng nhiều CPU và phản hồi các yêu cầu dữ liệu từ giao diện người dùng. Nói cách khác, giao diện người dùng siêu nhạy và quá trình xử lý nền (tính toán heuristic phức tạp) được thực hiện nhanh chóng và rất nhạy. Tất cả điều này được thực hiện với một ngôn ngữ duy nhất cho cả phụ trợ và giao diện người dùng, đây là một vấn đề lớn khi nói đến kiến ​​trúc hệ thống

        Ken Kopelson

        Bạn biết gì? . Rõ ràng là bạn chưa bao giờ xây dựng bất cứ thứ gì nghiêm túc trong Node. js. Vâng, tôi có, và tôi có thể nói với bạn rằng nó hoạt động rất tốt nếu bạn thực sự lập trình nó một cách chính xác. Điều đó có nghĩa là bạn sử dụng những thứ như hàng đợi công việc, bạn sử dụng phân cụm mà Node cung cấp, bạn đảm bảo rằng bạn làm mọi thứ với lời gọi lại và lời hứa, bạn sử dụng “async” và “setImmediate” để chia sẻ bộ xử lý đúng cách giữa mã đang chờ và mã có thể . Ví dụ: tôi đã viết một thuật toán sắp xếp heap “không đồng bộ” hoạt động rất tốt, sắp xếp các danh sách lớn trong khi không chặn trong bất kỳ khoảng thời gian đáng kể nào. Tôi cũng có một thuật toán heuristic 5000 dòng khá phức tạp mà tôi đã chia ra để các vòng lặp chính được thực thi bằng cách sử dụng các cấu trúc không đồng bộ. Sau đó, tôi đã thực hiện các lệnh này từ hàng đợi công việc có tên là “Kue” cho phép sử dụng hiệu quả tất cả các lõi, không có luồng, thời gian phản hồi giao diện người dùng tuyệt vời và các công việc tính toán phức tạp được thực hiện trong nền bằng cách sử dụng tất cả sức mạnh bộ xử lý có sẵn. Điều này TẤT CẢ được thực hiện bằng javascript với hiệu suất tuyệt vời trong cả các tác vụ sử dụng nhiều CPU và phản hồi các yêu cầu dữ liệu từ giao diện người dùng. Nói cách khác, giao diện người dùng siêu nhạy và quá trình xử lý nền (tính toán heuristic phức tạp) được thực hiện nhanh chóng và rất nhạy. Tất cả điều này được thực hiện với một ngôn ngữ duy nhất cho cả phụ trợ và giao diện người dùng, đây là một vấn đề lớn khi nói đến kiến ​​trúc hệ thống

        Jacob Ross

        Tại sao chúng không dành cho “neophytes”?

        Jacob Ross

        Tại sao chúng không dành cho “neophytes”?

        Jacob Ross

        tôi đồng ý. Hầu hết những lần tôi nghĩ ORM không đủ cho các truy vấn phức tạp, tôi viết ra SQL thô, sau đó phát hiện ra ORM có một “ứng dụng cho điều đó”. Tôi thích sử dụng ORM nhất có thể, nhưng tôi sẽ không dành quá nhiều thời gian để làm cho nó hoạt động với mình, nếu không, như M đã nói, tôi sẽ tìm một ORM khác

        Jacob Ross

        tôi đồng ý. Hầu hết những lần tôi nghĩ ORM không đủ cho các truy vấn phức tạp, tôi viết ra SQL thô, sau đó phát hiện ra ORM có một “ứng dụng cho điều đó”. Tôi thích sử dụng ORM nhất có thể, nhưng tôi sẽ không dành quá nhiều thời gian để làm cho nó hoạt động với mình, nếu không, như M đã nói, tôi sẽ tìm một ORM khác

        JF80

        Nghe giống như những từ trong “Michael” mà tôi biết. 😉 Tôi đồng ý với tuyên bố cuối cùng của bạn. “mỗi công nghệ có vị trí của nó”. Nhưng tại sao bạn lại cho rằng tất cả các nhà phát triển Node đều là nhà phát triển front-end không có kiến ​​thức về back-end?

        JF80

        Nghe giống như những từ trong “Michael” mà tôi biết. 😉 Tôi đồng ý với tuyên bố cuối cùng của bạn. “mỗi công nghệ có vị trí của nó”. Nhưng tại sao bạn lại cho rằng tất cả các nhà phát triển Node đều là nhà phát triển front-end không có kiến ​​thức về back-end?

        đấtT

        Javascript là một lựa chọn ngôn ngữ kém để phát triển doanh nghiệp/phức hợp. Nó lộn xộn, khó đọc, khó tổ chức, không hỗ trợ toàn bộ các mô hình OO giúp tiết kiệm nhiều mã lặp lại và cung cấp sự trừu tượng có thể đọc được, chủ yếu gây ra lỗi thời gian chạy, không AOP, không theo quy ước, không phản ánh, . Chúng tôi bị mắc kẹt với nó trong trình duyệt và thành thật mà nói, đó chỉ là quán tính và hỗ trợ kế thừa có nghĩa là nó vẫn được sử dụng ở đó. Lẽ ra nó phải đi theo con đường của khủng long 10 năm trước. Động lực chính để tránh xa các ngôn ngữ kịch bản là chúng là cơn ác mộng bảo trì và dẫn đến các ứng dụng đầy bùn có lỗi liên tục không thể theo dõi được. Mới chỉ 10 năm ngắn ngủi kể từ khi chúng tôi thở phào nhẹ nhõm khi sự phát triển nghiêm túc không còn là ngôn ngữ kịch bản và ở đây chúng tôi đang làm lại điều đó mà không muốn học hỏi từ quá khứ, tin chắc rằng đây là “mới và tiên tiến”, đúng hơn là . Nó sẽ kết thúc giống như lần trước, bị bàn tán với sự ghê tởm như asp cổ điển và perl cgi. Tôi chỉ có thể kết luận rằng các nhà phát triển ủng hộ nó bây giờ chỉ là không có mặt để chứng kiến ​​​​sự sụp đổ của lần cuối cùng này. Mọi thế hệ nhà phát triển mới đều tin chắc rằng họ đã khám phá ra “sự thật”, những người trong chúng ta, những người đã chứng kiến ​​chu kỳ đau đớn này chỉ có thể ngồi lại và lắc đầu không thể tin được. Thật không may, bạn không thể dạy kinh nghiệm, đó là điều bạn phải học một cách khó khăn. Chắc chắn nếu bạn là một người nghiệp dư và không biết gì khác thì bằng mọi cách, nhưng bất kỳ ai đang cố gắng làm một công việc chuyên nghiệp cần phải để yên vấn đề này và ngừng đưa ra các lựa chọn công nghệ theo chủ nghĩa dân túy mà không xem xét kết quả. Nếu bạn không thể tự mình đánh giá những hạn chế lâu dài của một công nghệ thì bạn không nên làm việc trong lĩnh vực phát triển. Các nhà phát triển cần ngừng trẻ con như vậy, hành động như một lũ fan boy si mê, đây là một công việc nghiêm túc, không phải trò chơi

        đấtT

        Javascript là một lựa chọn ngôn ngữ kém để phát triển doanh nghiệp/phức hợp. Nó lộn xộn, khó đọc, khó tổ chức, không hỗ trợ toàn bộ các mô hình OO giúp tiết kiệm nhiều mã lặp lại và cung cấp sự trừu tượng có thể đọc được, chủ yếu gây ra lỗi thời gian chạy, không AOP, không theo quy ước, không phản ánh, . Chúng tôi bị mắc kẹt với nó trong trình duyệt và thành thật mà nói, đó chỉ là quán tính và hỗ trợ kế thừa có nghĩa là nó vẫn được sử dụng ở đó. Lẽ ra nó phải đi theo con đường của khủng long 10 năm trước. Động lực chính để tránh xa các ngôn ngữ kịch bản là chúng là cơn ác mộng bảo trì và dẫn đến các ứng dụng đầy bùn có lỗi liên tục không thể theo dõi được. Mới chỉ 10 năm ngắn ngủi kể từ khi chúng tôi thở phào nhẹ nhõm khi sự phát triển nghiêm túc không còn là ngôn ngữ kịch bản và ở đây chúng tôi đang làm lại điều đó mà không muốn học hỏi từ quá khứ, tin chắc rằng đây là “mới và tiên tiến”, đúng hơn là . Nó sẽ kết thúc giống như lần trước, bị bàn tán với sự ghê tởm như asp cổ điển và perl cgi. Tôi chỉ có thể kết luận rằng các nhà phát triển ủng hộ nó bây giờ chỉ là không có mặt để chứng kiến ​​​​sự sụp đổ của lần cuối cùng này. Mọi thế hệ nhà phát triển mới đều tin chắc rằng họ đã khám phá ra “sự thật”, những người trong chúng ta, những người đã chứng kiến ​​chu kỳ đau đớn này chỉ có thể ngồi lại và lắc đầu không thể tin được. Thật không may, bạn không thể dạy kinh nghiệm, đó là điều bạn phải học một cách khó khăn. Chắc chắn nếu bạn là một người nghiệp dư và không biết gì khác thì bằng mọi cách, nhưng bất kỳ ai đang cố gắng làm một công việc chuyên nghiệp cần phải để yên vấn đề này và ngừng đưa ra các lựa chọn công nghệ theo chủ nghĩa dân túy mà không xem xét kết quả. Nếu bạn không thể tự mình đánh giá những hạn chế lâu dài của một công nghệ thì bạn không nên làm việc trong lĩnh vực phát triển. Các nhà phát triển cần ngừng trẻ con như vậy, hành động như một lũ fan boy si mê, đây là một công việc nghiêm túc, không phải trò chơi

        adroittech

        Chúa ơi. Eric. Bạn có thật không? . NÓ Ở TRÊN PLAIN C/C++. http_parcer là thư viện C++. libuv là một thư viện C++ khác và quan trọng nhất trong xương sống của nodejs, làm cho nodejs không đồng bộ, hướng sự kiện và không chặn. Bản thân Javascript là một cơ thể không có linh hồn và sự sống. JAVASCRIPT chỉ là một kịch bản mà bạn sử dụng để viết kịch bản logic của mình. Một ngày nào đó nếu smeoene port lua với libs này, anh ấy sẽ không cần Javascript để viết mã. tương tự cho python, v.v. Nhưng thực tế cơ bản vẫn giữ nguyên. NÓ LÀ mã C++ tạo nên nodejs, không phải javascript quá nhanh. trên thực tế, javascript chậm nhất trong tất cả các ngôn ngữ kịch bản. Vì vậy, đừng tự tâng bốc bản thân khi tin rằng chỉ có java-script là tuyệt vời còn những thứ khác thì tệ hại. Và đừng xúc phạm C/C++ nếu bạn không có kiến ​​thức về nó. Vì vậy, một lần nữa, tôi mong bạn rút lại lời nói của mình. “Hệ thống kiểu Javascript tốt hơn C++”. (Javascript không có hệ thống kiểu. và nếu bạn vẫn tin rằng nó có, thì bạn đang ở trong một lĩnh vực rất sai lầm, hãy xây dựng một số giàn giáo) Ngoài ra, các công ty này không chọn nodejs vì lý do bạn đã đề cập. Điều này có thể ở hầu hết các ngôn ngữ. Lý do tại sao các công ty chọn nodejs là vì họ có sẵn các lập trình viên javascript, hàng triệu và không thể làm mã c ++/java, để làm phía máy chủ vì nó rẻ hơn. Một lý do khác -> hệ sinh thái của nó. Một lý do khác -> Việc tiến hành kiểm tra tải trong nodejs dễ dàng hơn nhiều so với các tập lệnh khác. Liên kết bạn đã đề cập là công việc dự định sẽ được bắt đầu. Tại sao bạn không đề nghị họ viết trình biên dịch hợp ngữ web này trong nodejs chứ không phải c/C++/assembly vì theo bạn điều đó tốt hơn. Thôi nào anh bạn, làm sao bạn có thể so sánh Nodejs (Công nghệ) với C++ (ngôn ngữ), chúng không cùng đẳng cấp. C++ làm cho nút có thể, không phải ngược lại

        adroittech

        Chúa ơi. Eric. Bạn có thật không? . NÓ Ở TRÊN PLAIN C/C++. http_parcer là thư viện C++. libuv là một thư viện C++ khác và quan trọng nhất trong xương sống của nodejs, làm cho nodejs không đồng bộ, hướng sự kiện và không chặn. Bản thân Javascript là một cơ thể không có linh hồn và sự sống. JAVASCRIPT chỉ là một kịch bản mà bạn sử dụng để viết kịch bản logic của mình. Một ngày nào đó nếu smeoene port lua với libs này, anh ấy sẽ không cần Javascript để viết mã. tương tự cho python, v.v. Nhưng thực tế cơ bản vẫn giữ nguyên. NÓ LÀ mã C++ tạo nên nodejs, không phải javascript quá nhanh. trên thực tế, javascript chậm nhất trong tất cả các ngôn ngữ kịch bản. Vì vậy, đừng tự tâng bốc bản thân khi tin rằng chỉ có java-script là tuyệt vời còn những thứ khác thì tệ hại. Và đừng xúc phạm C/C++ nếu bạn không có kiến ​​thức về nó. Vì vậy, một lần nữa, tôi mong bạn rút lại lời nói của mình. “Hệ thống kiểu Javascript tốt hơn C++”. (Javascript không có hệ thống kiểu. và nếu bạn vẫn tin rằng nó có, thì bạn đang ở trong một lĩnh vực rất sai lầm, hãy xây dựng một số giàn giáo) Ngoài ra, các công ty này không chọn nodejs vì lý do bạn đã đề cập. Điều này có thể ở hầu hết các ngôn ngữ. Lý do tại sao các công ty chọn nodejs là vì họ có sẵn các lập trình viên javascript, hàng triệu và không thể làm mã c ++/java, để làm phía máy chủ vì nó rẻ hơn. Một lý do khác -> hệ sinh thái của nó. Một lý do khác -> Việc tiến hành kiểm tra tải trong nodejs dễ dàng hơn nhiều so với các tập lệnh khác. Liên kết bạn đã đề cập là công việc dự định sẽ được bắt đầu. Tại sao bạn không đề nghị họ viết trình biên dịch hợp ngữ web này trong nodejs chứ không phải c/C++/assembly vì theo bạn điều đó tốt hơn. Thôi nào anh bạn, làm sao bạn có thể so sánh Nodejs (Công nghệ) với C++ (ngôn ngữ), chúng không cùng đẳng cấp. C++ làm cho nút có thể, không phải ngược lại

        oberona

        “Động lực chính để tránh xa các ngôn ngữ kịch bản là chúng là cơn ác mộng bảo trì và dẫn đến các ứng dụng đầy bùn” – bạn có thể làm rõ ý của mình bằng ngôn ngữ kịch bản không và “các nhà phát triển nghiêm túc” đã chuyển sang ngôn ngữ thay thế nào trong hơn mười năm qua . On the contrary, Python is my go-to language precisely for its maintainability. Những lời chỉ trích của bạn về js là đúng, nhưng tôi không thể thấy cách chúng áp dụng trên toàn bộ vũ trụ ngôn ngữ kịch bản

        oberona

        “Động lực chính để tránh xa các ngôn ngữ kịch bản là chúng là cơn ác mộng bảo trì và dẫn đến các ứng dụng đầy bùn” – bạn có thể làm rõ ý của mình bằng ngôn ngữ kịch bản không và “các nhà phát triển nghiêm túc” đã chuyển sang ngôn ngữ thay thế nào trong hơn mười năm qua . On the contrary, Python is my go-to language precisely for its maintainability. Những lời chỉ trích của bạn về js là đúng, nhưng tôi không thể thấy cách chúng áp dụng trên toàn bộ vũ trụ ngôn ngữ kịch bản

        đấtT

        Well I define scripting languages as runtime compilation languages, but there is a lot of overlap these days. I prefer the reassurance of compile time verification of at least coding accuracy but that is not the only factor. Mức độ xâm lấn sâu vào hoạt động bên trong của trình biên dịch có xu hướng bị các ngôn ngữ biên dịch ngày nay bộc lộ cho phép tạo ra một loạt các cấu trúc và mẫu thiết kế cho phép lập trình trở nên “thông minh” hơn, tôi chỉ không thấy mức độ này . It is a severe limitation for serious enterprise development. ORMs are an ugly approach to data access on relational databases, but you would probably have to be a database developer to realise why. Data design and Program design have different constraints, ORMs do either an injustice or have to be modified so much that they provide no productivity. Có nhiều vấn đề chẳng hạn như bảo mật, cách ly, hoạt động nguyên tử mà ORM bị hỏng và hãy nhớ rằng cơ sở dữ liệu là một hệ thống sống và có thể yêu cầu thay đổi giữa các lần phát hành mã như một vấn đề tất nhiên. ORM là một công cụ cùn nếu bạn muốn hiệu suất thực sự từ cơ sở dữ liệu của mình và muốn tính đồng thời cao mà không bị khóa. Its a detailed subject I could probably write a book on it, so sorry if this isn’t conclusive enough for you. Can’t say much about Python other than I have heard good things in general. Tôi là đầu kia của thị trường trên. Net, I crucify the open source guys next door in productivity and my defect level is about 1% of theirs. I think you need a large system before it makes significant differences, as you need to invest in framework and substrate to get the main benefits back, its “mass coding” that is the enemy here. When you have over a 100,000 code files you need a higher level of maintainability as it is simply beyond human capability to do it file by file (and certainly beyond maintenance budgets). Bằng cách tạo các dịch vụ cốt lõi sử dụng mã dưới dạng nội dung, bạn có thể đạt được mức chất lượng cao trong khi vẫn giữ mọi thứ chi tiết và đảm bảo việc phát hành ở mức nhỏ và có mục tiêu thay vì giảm toàn bộ hệ thống. Mỗi cái đều có của riêng chúng, nhưng nếu bạn là một chuyên gia CNTT, bạn hẳn đã thấy hàng triệu hệ thống dựa trên tập lệnh đang hoạt động trong các doanh nghiệp vì không ai có thể tìm thấy bất cứ thứ gì hoặc hiểu cách thức hoạt động của nó. Đó là một lời phàn nàn phổ biến mà tôi nghĩ nó không cần phải biện minh

        đấtT

        Well I define scripting languages as runtime compilation languages, but there is a lot of overlap these days. I prefer the reassurance of compile time verification of at least coding accuracy but that is not the only factor. Mức độ xâm lấn sâu vào hoạt động bên trong của trình biên dịch có xu hướng bị các ngôn ngữ biên dịch ngày nay bộc lộ cho phép tạo ra một loạt các cấu trúc và mẫu thiết kế cho phép lập trình trở nên “thông minh” hơn, tôi chỉ không thấy mức độ này . It is a severe limitation for serious enterprise development. ORMs are an ugly approach to data access on relational databases, but you would probably have to be a database developer to realise why. Data design and Program design have different constraints, ORMs do either an injustice or have to be modified so much that they provide no productivity. Có nhiều vấn đề chẳng hạn như bảo mật, cách ly, hoạt động nguyên tử mà ORM bị hỏng và hãy nhớ rằng cơ sở dữ liệu là một hệ thống sống và có thể yêu cầu thay đổi giữa các lần phát hành mã như một vấn đề tất nhiên. ORM là một công cụ cùn nếu bạn muốn hiệu suất thực sự từ cơ sở dữ liệu của mình và muốn tính đồng thời cao mà không bị khóa. Its a detailed subject I could probably write a book on it, so sorry if this isn’t conclusive enough for you. Can’t say much about Python other than I have heard good things in general. Tôi là đầu kia của thị trường trên. Net, I crucify the open source guys next door in productivity and my defect level is about 1% of theirs. I think you need a large system before it makes significant differences, as you need to invest in framework and substrate to get the main benefits back, its “mass coding” that is the enemy here. When you have over a 100,000 code files you need a higher level of maintainability as it is simply beyond human capability to do it file by file (and certainly beyond maintenance budgets). Bằng cách tạo các dịch vụ cốt lõi sử dụng mã dưới dạng nội dung, bạn có thể đạt được mức chất lượng cao trong khi vẫn giữ mọi thứ chi tiết và đảm bảo việc phát hành ở mức nhỏ và có mục tiêu thay vì giảm toàn bộ hệ thống. Mỗi cái đều có của riêng chúng, nhưng nếu bạn là một chuyên gia CNTT, bạn hẳn đã thấy hàng triệu hệ thống dựa trên tập lệnh đang hoạt động trong các doanh nghiệp vì không ai có thể tìm thấy bất cứ thứ gì hoặc hiểu cách thức hoạt động của nó. Đó là một lời phàn nàn phổ biến mà tôi nghĩ nó không cần phải biện minh

        đấtT

        P. S. I think “serious developers” have migrated to either Java, C# or back to C++ (along with their associated web techs etc). I wasn’t really intending to be derogatory but these three probably account for 90% of all commercial development atm. C# wins out on the commercial front for me solely on Microsoft’s considerable ongoing investment and new found modernist approach. C ++ không hiệu quả lắm và Java thực sự bắt đầu trông hơi lỗi thời. Tôi vẫn làm việc ở cả ba và họ hoàn thành công việc, mỗi người đều có vị trí của mình

        đấtT

        P. S. I think “serious developers” have migrated to either Java, C# or back to C++ (along with their associated web techs etc). I wasn’t really intending to be derogatory but these three probably account for 90% of all commercial development atm. C# wins out on the commercial front for me solely on Microsoft’s considerable ongoing investment and new found modernist approach. C ++ không hiệu quả lắm và Java thực sự bắt đầu trông hơi lỗi thời. Tôi vẫn làm việc ở cả ba và họ hoàn thành công việc, mỗi người đều có vị trí của mình

        đấtT

        P. P. S. “Python is my go-to language precisely for its maintainability”. What do you consider maintainability? It is often not what people think it is (or is not as simple as they think). Nó bao gồm chi phí thay đổi và đó là chi phí chính của doanh nghiệp cho một dự án sinh hoạt. Ví dụ. Tôi có một dịch vụ với 1000 phương thức công khai và doanh nghiệp yêu cầu tôi hủy ưu tiên tất cả các cuộc gọi kéo dài hơn 2 giây. Nếu tôi phải sửa đổi bất kỳ mã nào trong 1000 lệnh gọi đó thì mã của tôi có khả năng bảo trì kém nghiêm trọng. Những gì tôi nên làm là thay đổi một mã trong đường dẫn chất nền dịch vụ của mình. I should not even be modifying the substrate I should be probably writing a statistics module and a de-prioritise module for that substrate loaded in a separate dll that can be loaded dynamically. Now my testing is isolated to just this dll (reverse harness testing) and when ready for release I can add this dll and maybe make one small config change, that’s it, no regression testing and no risk to existing code, so no production bugs in the service methods. So many typical code bases would require all 1000 methods to be altered or at least marked for an AOP operation. Enterprise design requires upfront anticipation of future “crazy” business requests. I find with most scripting languages and even with Java that finding insertion angles later on is nearly impossible. Even if I have a complete mare in C# I can emit the code directly into the methods using reflection, I have never seen this level of access on a scripting language and even if it was there it would be dangerous code to emit into runtime compiled operations (because I am literally changing the operations content so I would need to test the result of each). This is just one example I could probably come up with 100s. I’m a technical architect (framework and substrate) so it is my place to “save” my devs from backing themselves into a corner. Nếu tôi làm tốt, tôi có thể giảm công sức viết mã và thử nghiệm xuống 1% cho hệ thống “mã hóa hàng loạt”. There is a whole other level of development that most devs will never see or appreciate, this means they are never equipped to make the most appropriate technology choices

        đấtT

        P. P. S. “Python is my go-to language precisely for its maintainability”. What do you consider maintainability? It is often not what people think it is (or is not as simple as they think). Nó bao gồm chi phí thay đổi và đó là chi phí chính của doanh nghiệp cho một dự án sinh hoạt. Ví dụ. Tôi có một dịch vụ với 1000 phương thức công khai và doanh nghiệp yêu cầu tôi hủy ưu tiên tất cả các cuộc gọi kéo dài hơn 2 giây. Nếu tôi phải sửa đổi bất kỳ mã nào trong 1000 lệnh gọi đó thì mã của tôi có khả năng bảo trì kém nghiêm trọng. Những gì tôi nên làm là thay đổi một mã trong đường dẫn chất nền dịch vụ của mình. I should not even be modifying the substrate I should be probably writing a statistics module and a de-prioritise module for that substrate loaded in a separate dll that can be loaded dynamically. Now my testing is isolated to just this dll (reverse harness testing) and when ready for release I can add this dll and maybe make one small config change, that’s it, no regression testing and no risk to existing code, so no production bugs in the service methods. So many typical code bases would require all 1000 methods to be altered or at least marked for an AOP operation. Enterprise design requires upfront anticipation of future “crazy” business requests. I find with most scripting languages and even with Java that finding insertion angles later on is nearly impossible. Even if I have a complete mare in C# I can emit the code directly into the methods using reflection, I have never seen this level of access on a scripting language and even if it was there it would be dangerous code to emit into runtime compiled operations (because I am literally changing the operations content so I would need to test the result of each). This is just one example I could probably come up with 100s. I’m a technical architect (framework and substrate) so it is my place to “save” my devs from backing themselves into a corner. Nếu tôi làm tốt, tôi có thể giảm công sức viết mã và thử nghiệm xuống 1% cho hệ thống “mã hóa hàng loạt”. There is a whole other level of development that most devs will never see or appreciate, this means they are never equipped to make the most appropriate technology choices

        Josh Morgan

        Interesting article, I’ve got quite a bit of experience in other realms but I’m somewhat new to Node. js. Có vài điều tôi muốn làm sáng tỏ. Flash cũng luôn không đồng bộ, nó chỉ mô phỏng các luồng giống như âm thanh giống như nút thực hiện bằng cách sử dụng hàng đợi sự kiện. Tuy nhiên, tôi tin rằng thật là thiếu hiểu biết về kỹ thuật khi tuyên bố rằng việc tin tưởng quản lý luồng vào ngôn ngữ thế hệ thứ 3 hoặc thứ 4 sẽ tốt hơn là tin tưởng vào JRE được điều chỉnh tốt hoặc hệ điều hành được tối ưu hóa cho chipset đa lõi của nó. Làm thế nào chính xác để bạn nghĩ rằng chủ đề làm việc ở cấp độ thấp hơn dù sao? . Cũng là một sai lầm khi nói rằng một “sự kiện” mới không thêm bộ nhớ hoặc chu kỳ đồng hồ được đưa vào ngăn xếp chỉ vì các sự kiện đã nói được quản lý bởi một ngôn ngữ kịch bản được diễn giải thay vì C++ được biên dịch, tối ưu hóa. Tôi dám cá với bữa trưa của mình rằng một ứng dụng web đa luồng được viết tốt bằng C hoặc C++ sẽ thổi bay bất kỳ nút nào. js hiệu suất khôn ngoan và thậm chí không cần truy cập vào máy chủ và kiến ​​trúc bộ xử lý đa lõi hiện tại của chúng. Nếu bạn có máy chủ 4 nhân hoặc 8 nhân chạy một luồng nút đơn. bạn chỉ bắn vào một pít-tông (khá mỉa mai khi Google gọi động cơ của họ là “V8” khi xem xét thực tế như vậy). Một điều khác cần nhận ra là trong khi Flash (hoặc thậm chí cả Java applet) chạy trong thời gian chạy của riêng chúng, thì nút cũng vậy — nó chỉ bị ẩn đối với người dùng. Đó chẳng qua là động thái kinh doanh “tốt” (có lẽ là thù địch?) từ phía Google. Hãy trung thực ở đây, nếu tất cả các trình duyệt đều được cài đặt tự động Flash trên chúng và Apple thực sự hỗ trợ Flash trên thiết bị di động của họ, thì nút có lẽ sẽ không tồn tại ngày nay. Tôi có những lo ngại khác về bảo mật. Nó có loại bảo vệ nào chống lại kịch bản chéo trang và các cuộc tấn công khác? . ). Không có cảnh báo nào về bảo mật hoặc loại kết nối mà cửa sổ trình duyệt của tôi đang mở ra, chỉ phù hợp với hoạt động kinh doanh P2P của nó. phe hacker của tôi có thể có một ngày thực sự hay với những loại “tính năng” đó. I doubt that kind of stuff has been tested much either which means there’s a lot of room for bugs, and where there’s a lot of room for bugs there’s a lot of room for vulnerabilities. Nhưng này, ít nhất toàn bộ ngăn xếp của bạn đều ở cùng một ngôn ngữ. Means you can hire less experienced developers for less money, right? 😉

        Josh Morgan

        Interesting article, I’ve got quite a bit of experience in other realms but I’m somewhat new to Node. js. Có vài điều tôi muốn làm sáng tỏ. Flash cũng luôn không đồng bộ, nó chỉ mô phỏng các luồng giống như âm thanh giống như nút thực hiện bằng cách sử dụng hàng đợi sự kiện. Tuy nhiên, tôi tin rằng thật là thiếu hiểu biết về kỹ thuật khi tuyên bố rằng việc tin tưởng quản lý luồng vào ngôn ngữ thế hệ thứ 3 hoặc thứ 4 sẽ tốt hơn là tin tưởng vào JRE được điều chỉnh tốt hoặc hệ điều hành được tối ưu hóa cho chipset đa lõi của nó. Làm thế nào chính xác để bạn nghĩ rằng chủ đề làm việc ở cấp độ thấp hơn dù sao? . Cũng là một sai lầm khi nói rằng một “sự kiện” mới không thêm bộ nhớ hoặc chu kỳ đồng hồ được đưa vào ngăn xếp chỉ vì các sự kiện đã nói được quản lý bởi một ngôn ngữ kịch bản được diễn giải thay vì C++ được biên dịch, tối ưu hóa. Tôi dám cá với bữa trưa của mình rằng một ứng dụng web đa luồng được viết tốt bằng C hoặc C++ sẽ thổi bay bất kỳ nút nào. js hiệu suất khôn ngoan và thậm chí không cần truy cập vào máy chủ và kiến ​​trúc bộ xử lý đa lõi hiện tại của chúng. Nếu bạn có máy chủ 4 nhân hoặc 8 nhân chạy một luồng nút đơn. bạn chỉ bắn vào một pít-tông (khá mỉa mai khi Google gọi động cơ của họ là “V8” khi xem xét thực tế như vậy). Một điều khác cần nhận ra là trong khi Flash (hoặc thậm chí cả Java applet) chạy trong thời gian chạy của riêng chúng, thì nút cũng vậy — nó chỉ bị ẩn đối với người dùng. Đó chẳng qua là động thái kinh doanh “tốt” (có lẽ là thù địch?) từ phía Google. Hãy trung thực ở đây, nếu tất cả các trình duyệt đều được cài đặt tự động Flash trên chúng và Apple thực sự hỗ trợ Flash trên thiết bị di động của họ, thì nút có lẽ sẽ không tồn tại ngày nay. Tôi có những lo ngại khác về bảo mật. Nó có loại bảo vệ nào chống lại kịch bản chéo trang và các cuộc tấn công khác? . ). Không có cảnh báo nào về bảo mật hoặc loại kết nối mà cửa sổ trình duyệt của tôi đang mở ra, chỉ phù hợp với hoạt động kinh doanh P2P của nó. phe hacker của tôi có thể có một ngày thực sự hay với những loại “tính năng” đó. I doubt that kind of stuff has been tested much either which means there’s a lot of room for bugs, and where there’s a lot of room for bugs there’s a lot of room for vulnerabilities. Nhưng này, ít nhất toàn bộ ngăn xếp của bạn đều ở cùng một ngôn ngữ. Means you can hire less experienced developers for less money, right? 😉

        iwebworld

        Good Article for Node JS, you can learn Node JS online in http. //iwebworld. thông tin hoặc gửi email iwebworldinfo@gmail. com

        iwebworld

        Good Article for Node JS, you can learn Node JS online in http. //iwebworld. thông tin hoặc gửi email iwebworldinfo@gmail. com

        Avinash Shah

        Bạn có thể loại bỏ tất cả các cạm bẫy của JS bằng cách sử dụng siêu bộ của nó hay còn gọi là TypeScript

        Avinash Shah

        Bạn có thể loại bỏ tất cả các cạm bẫy của JS bằng cách sử dụng siêu bộ của nó hay còn gọi là TypeScript

        đi trốn

        Tl;dr Sử dụng nút để xử lý nặng IO và ủy quyền xử lý chuyên sâu CPU cho một cụm nút công nhân chuyên dụng (cơ sở dữ liệu cũ, xử lý phương tiện, v.v.). Đây không hẳn là thông tin mới. Tôi đã đề cập lại chủ đề này vào năm ’12. http. //programmers. giao dịch cổ phiếu. com/a/179499/1256 Lý tưởng nhất là các máy chủ HTTP và API hầu như không trạng thái (không bao gồm quản lý phiên) và dùng một lần. Chúng chỉ là một đường dẫn chức năng chuyển dữ liệu thô thành các biểu diễn tiêu hao. Bằng cách đó, các máy chủ dễ dàng cung cấp/hủy một cách linh hoạt để đáp ứng tính chất đột biến của nhu cầu. Tôi không chắc tại sao rất nhiều người bình luận lại tranh cãi kịch liệt ủng hộ kiến ​​trúc máy chủ đa mục đích có thể mở rộng theo chiều dọc. Về bản chất, tỷ lệ dọc sẽ luôn có giới hạn trên được xác định bởi dung lượng phần cứng. Bất kể mã hiệu quả như thế nào. Viết lên tường. Bạn có thể chi cả đống tiền cho phần cứng và mất ngủ khi đặt câu hỏi về tính hợp lệ của đánh giá rủi ro (hay còn gọi là WAG) của bạn. Vào cuối ngày, kim loại trần là một tài sản cố định. Trường hợp tốt nhất, nó đáp ứng nhu cầu dự kiến ​​và biện minh cho chi phí. Trường hợp xấu nhất, nó có giá cao hơn giá trị của nó hoặc thiếu khả năng đáp ứng nhu cầu. Ngoài ra, bạn có thể sử dụng điện toán phân tán và tự động hóa cơ sở hạ tầng để phát triển/thu hẹp tương ứng với nhu cầu. Đối với những người đang chiến đấu trong các cuộc chiến tôn giáo về ngôn ngữ nào là tốt nhất, nút. C#. java. Ai quan tâm. Cả 3 đều cho phép lập trình ‘kiểu chức năng’. Cả 3, hỗ trợ xử lý không đồng bộ (nguyên bản hoặc thông qua tiện ích mở rộng). Tất cả 3 có thể được quản lý thông qua cung cấp. Cả 3 đều hoàn toàn hợp lệ để xây dựng cơ sở hạ tầng phân phối. Việc chọn sử dụng công cụ nào phụ thuộc vào chất lượng của các công cụ, liệu công cụ đó có được sử dụng để mở rộng cơ sở hạ tầng hiện có hay không và nhận thức của khách hàng. Xây dựng bất cứ thứ gì bạn giỏi xây dựng. Nếu bạn thực sự giỏi; . BTW, cảm ơn tác giả. Thật tuyệt khi thấy ai đó viết một bài viết toàn diện (và chủ yếu là khách quan) về chủ đề này

        đi trốn

        Tl;dr Sử dụng nút để xử lý nặng IO và ủy quyền xử lý chuyên sâu CPU cho một cụm nút công nhân chuyên dụng (cơ sở dữ liệu cũ, xử lý phương tiện, v.v.). Đây không hẳn là thông tin mới. Tôi đã đề cập lại chủ đề này vào năm ’12. http. //programmers. giao dịch cổ phiếu. com/a/179499/1256 Lý tưởng nhất là các máy chủ HTTP và API hầu như không trạng thái (không bao gồm quản lý phiên) và dùng một lần. Chúng chỉ là một đường dẫn chức năng chuyển dữ liệu thô thành các biểu diễn tiêu hao. Bằng cách đó, các máy chủ dễ dàng cung cấp/hủy một cách linh hoạt để đáp ứng tính chất đột biến của nhu cầu. Tôi không chắc tại sao rất nhiều người bình luận lại tranh cãi kịch liệt ủng hộ kiến ​​trúc máy chủ đa mục đích có thể mở rộng theo chiều dọc. Về bản chất, tỷ lệ dọc sẽ luôn có giới hạn trên được xác định bởi dung lượng phần cứng. Bất kể mã hiệu quả như thế nào. Viết lên tường. Bạn có thể chi cả đống tiền cho phần cứng và mất ngủ khi đặt câu hỏi về tính hợp lệ của đánh giá rủi ro (hay còn gọi là WAG) của bạn. Vào cuối ngày, kim loại trần là một tài sản cố định. Trường hợp tốt nhất, nó đáp ứng nhu cầu dự kiến ​​và biện minh cho chi phí. Trường hợp xấu nhất, nó có giá cao hơn giá trị của nó hoặc thiếu khả năng đáp ứng nhu cầu. Ngoài ra, bạn có thể sử dụng điện toán phân tán và tự động hóa cơ sở hạ tầng để phát triển/thu hẹp tương ứng với nhu cầu. Đối với những người đang chiến đấu trong các cuộc chiến tôn giáo về ngôn ngữ nào là tốt nhất, nút. C#. java. Ai quan tâm. Cả 3 đều cho phép lập trình ‘kiểu chức năng’. Cả 3, hỗ trợ xử lý không đồng bộ (nguyên bản hoặc thông qua tiện ích mở rộng). Tất cả 3 có thể được quản lý thông qua cung cấp. Cả 3 đều hoàn toàn hợp lệ để xây dựng cơ sở hạ tầng phân phối. Việc chọn sử dụng công cụ nào phụ thuộc vào chất lượng của các công cụ, liệu công cụ đó có được sử dụng để mở rộng cơ sở hạ tầng hiện có hay không và nhận thức của khách hàng. Xây dựng bất cứ thứ gì bạn giỏi xây dựng. Nếu bạn thực sự giỏi; . BTW, cảm ơn tác giả. Thật tuyệt khi thấy ai đó viết một bài viết toàn diện (và chủ yếu là khách quan) về chủ đề này

        đi trốn

        Có, cả hai ngôn ngữ đều hỗ trợ mở rộng theo chiều ngang với cơ sở hạ tầng quản lý tin nhắn không đồng bộ. CQRS không là gì ngoài một mẫu triển khai API. CRUD là trường hợp sử dụng điển hình (đúng như vậy) nhưng Node không tự động giàn giáo 1. 1 ánh xạ giữa DB và CRUD (xem Rails/laravel/Django để biết điều đó). Nút hoàn toàn không phải là một khung, nó chỉ là một máy chủ HTTP. Bạn có thể tận dụng các khung (ví dụ Express) để làm cho cuộc sống dễ dàng hơn bằng cách cung cấp các giá trị mặc định lành mạnh và cấu trúc tốt hơn nhưng bạn vẫn phải chỉ định các tuyến API của mình theo cách thủ công. . Tiện ích mở rộng phản ứng ròng đã được chuyển sang JS. https. //www. npmjs. com/package/rx Trên thực tế, ngay cả LINQ cũng đã được chuyển sang JS (vâng, nghiêm túc đấy). http. //linqjs. mật mã. com/ “Bất kỳ ứng dụng nào có thể được viết bằng Javascript, sẽ được viết bằng Javascript” – Định luật Atwood ORM chỉ là một vấn đề vì chúng yêu cầu thêm một lớp trừu tượng từ dữ liệu cơ bản. Nếu (đọc khi nào) các mô hình dữ liệu cần thay đổi để thích ứng với nhu cầu kinh doanh, cả ORM và lược đồ cơ sở dữ liệu sẽ cần được cập nhật và kiểm tra để phản ánh các thay đổi. Đó thực sự không phải là vấn đề lớn nếu có một chiến lược cập nhật tốt. Đối với phần còn lại của nhận xét của bạn, bạn sẽ làm tốt nếu thỉnh thoảng bước ra khỏi vùng an toàn của mình để xem cách phát triển JS thực sự hoạt động. 1. Các lớp JS hiện được hỗ trợ thông qua ES6 (đồng thời, phía máy khách có sẵn thông qua polyfill). Các nguyên mẫu thực sự không khác nhiều so với các lớp về mặt đóng gói (ngoại trừ chúng linh hoạt hơn rất nhiều). Kiểm tra kiểu tĩnh thời gian biên dịch thậm chí còn được hỗ trợ thông qua TypeScript/Dart nếu đó là thứ làm nổi thuyền của bạn, thì đó không phải là mặc định. 2. TDD/BDD không phải là một tính năng dành riêng cho các ngôn ngữ được gõ tĩnh. Có rất nhiều khung thử nghiệm tuyệt vời có sẵn trong JS (cả phía máy chủ/phía máy khách). Chọn sở thích của bạn, thử nghiệm đơn vị (Mocha), thử nghiệm đơn vị theo hành vi (Chai), thử nghiệm api (SuperTest) và thử nghiệm tích hợp liên tục (TravisCI và nhiều thử nghiệm khác) đều được sử dụng rộng rãi trong cộng đồng. JSUnit (JS tương đương với JUnit/NUnit) thậm chí có sẵn nếu bạn bỏ lỡ kiểm tra đơn vị trong Java/. BỌC LƯỚI. Nếu bất cứ điều gì, thử nghiệm là một yêu cầu cơ bản của bất kỳ ứng dụng JS không tầm thường nào được đưa vào sản xuất vì bạn không có trình kiểm tra loại thời gian biên dịch để hỗ trợ bạn. 3. Quy trình làm việc phức tạp? . Thực thi kiểu, linting, tạo tài liệu, giàn giáo, triển khai bằng một cú nhấp chuột, dịch ngôn ngữ, gói, xây dựng phân phối, quản lý gói/phụ thuộc, quản lý phát hành, v.v. 4. . co rúm lại. nếu bạn chỉ dựa vào hệ thống kiểm tra kiểu tĩnh thời gian biên dịch để xác thực đầu vào của người dùng, thì bạn đang làm sai. Xây dựng một lớp dữ liệu bằng bất kỳ ngôn ngữ nào đều yêu cầu các ràng buộc ở trên và ngoài những gì mà các loại mặc định cung cấp. Vì vậy, dù bằng cách nào, bạn sẽ phải mở rộng các mô hình dữ liệu của mình bằng các kiểm tra xác thực tùy chỉnh. Phần thú vị về việc xử lý xác thực trong JS là bạn có thể sử dụng cùng một quy trình để kiểm tra đầu vào của người dùng trên cả phía máy khách/máy chủ. Ít trùng lặp nỗ lực hơn FTW. Trái ngược với những gì bạn nghĩ. Javascript thực sự là cách tiếp cận ‘một kích thước phù hợp với tất cả’ nếu bạn thích sử dụng nó như vậy. Nghiêm túc mà nói, bạn thậm chí có thể biên dịch C/C++ trực tiếp sang javascript bằng asm. js. Điều đó có nghĩa là bạn phải sử dụng nó? . Bất kỳ nhà phát triển nào có một chút ý thức sẽ không có lỗi với bạn khi chọn C #, đó là một ngôn ngữ tuyệt vời. Tôi có kinh nghiệm viết mã bằng nhiều ngôn ngữ, bao gồm xây dựng các ứng dụng máy tính để bàn không tầm thường bằng C#. Được lựa chọn, tôi muốn sử dụng Javascript hơn. Sự pha trộn của các ràng buộc lỏng lẻo hơn và các phong cách chức năng/mệnh lệnh/nguyên mẫu cho phép mức độ sáng tạo mà tôi chưa từng trải nghiệm trong bất kỳ ngôn ngữ nào khác. Các công cụ tuyệt vời, hệ thống mô-đun tuyệt vời và bản thân ngôn ngữ đang trở nên tốt hơn đáng kể với mỗi bản cập nhật

        đi trốn

        Có, cả hai ngôn ngữ đều hỗ trợ mở rộng theo chiều ngang với cơ sở hạ tầng quản lý tin nhắn không đồng bộ. CQRS không là gì ngoài một mẫu triển khai API. CRUD là trường hợp sử dụng điển hình (đúng như vậy) nhưng Node không tự động giàn giáo 1. 1 ánh xạ giữa DB và CRUD (xem Rails/laravel/Django để biết điều đó). Nút hoàn toàn không phải là một khung, nó chỉ là một máy chủ HTTP. Bạn có thể tận dụng các khung (ví dụ Express) để làm cho cuộc sống dễ dàng hơn bằng cách cung cấp các giá trị mặc định lành mạnh và cấu trúc tốt hơn nhưng bạn vẫn phải chỉ định các tuyến API của mình theo cách thủ công. . Tiện ích mở rộng phản ứng ròng đã được chuyển sang JS. https. //www. npmjs. com/package/rx Trên thực tế, ngay cả LINQ cũng đã được chuyển sang JS (vâng, nghiêm túc đấy). http. //linqjs. mật mã. com/ “Bất kỳ ứng dụng nào có thể được viết bằng Javascript, sẽ được viết bằng Javascript” – Định luật Atwood ORM chỉ là một vấn đề vì chúng yêu cầu thêm một lớp trừu tượng từ dữ liệu cơ bản. Nếu (đọc khi nào) các mô hình dữ liệu cần thay đổi để thích ứng với nhu cầu kinh doanh, cả ORM và lược đồ cơ sở dữ liệu sẽ cần được cập nhật và kiểm tra để phản ánh các thay đổi. Đó thực sự không phải là vấn đề lớn nếu có một chiến lược cập nhật tốt. Đối với phần còn lại của nhận xét của bạn, bạn sẽ làm tốt nếu thỉnh thoảng bước ra khỏi vùng an toàn của mình để xem cách phát triển JS thực sự hoạt động. 1. Các lớp JS hiện được hỗ trợ thông qua ES6 (đồng thời, phía máy khách có sẵn thông qua polyfill). Các nguyên mẫu thực sự không khác nhiều so với các lớp về mặt đóng gói (ngoại trừ chúng linh hoạt hơn rất nhiều). Kiểm tra kiểu tĩnh thời gian biên dịch thậm chí còn được hỗ trợ thông qua TypeScript/Dart nếu đó là thứ làm nổi thuyền của bạn, thì đó không phải là mặc định. 2. TDD/BDD không phải là một tính năng dành riêng cho các ngôn ngữ được gõ tĩnh. Có rất nhiều khung thử nghiệm tuyệt vời có sẵn trong JS (cả phía máy chủ/phía máy khách). Chọn sở thích của bạn, thử nghiệm đơn vị (Mocha), thử nghiệm đơn vị theo hành vi (Chai), thử nghiệm api (SuperTest) và thử nghiệm tích hợp liên tục (TravisCI và nhiều thử nghiệm khác) đều được sử dụng rộng rãi trong cộng đồng. JSUnit (JS tương đương với JUnit/NUnit) thậm chí có sẵn nếu bạn bỏ lỡ kiểm tra đơn vị trong Java/. BỌC LƯỚI. Nếu bất cứ điều gì, thử nghiệm là một yêu cầu cơ bản của bất kỳ ứng dụng JS không tầm thường nào được đưa vào sản xuất vì bạn không có trình kiểm tra loại thời gian biên dịch để hỗ trợ bạn. 3. Quy trình làm việc phức tạp? . Thực thi kiểu, linting, tạo tài liệu, giàn giáo, triển khai bằng một cú nhấp chuột, dịch ngôn ngữ, gói, xây dựng phân phối, quản lý gói/phụ thuộc, quản lý phát hành, v.v. 4. . co rúm lại. nếu bạn chỉ dựa vào hệ thống kiểm tra kiểu tĩnh thời gian biên dịch để xác thực đầu vào của người dùng, thì bạn đang làm sai. Xây dựng một lớp dữ liệu bằng bất kỳ ngôn ngữ nào đều yêu cầu các ràng buộc ở trên và ngoài những gì mà các loại mặc định cung cấp. Vì vậy, dù bằng cách nào, bạn sẽ phải mở rộng các mô hình dữ liệu của mình bằng các kiểm tra xác thực tùy chỉnh. Phần thú vị về việc xử lý xác thực trong JS là bạn có thể sử dụng cùng một quy trình để kiểm tra đầu vào của người dùng trên cả phía máy khách/máy chủ. Ít trùng lặp nỗ lực hơn FTW. Trái ngược với những gì bạn nghĩ. Javascript thực sự là cách tiếp cận ‘một kích thước phù hợp với tất cả’ nếu bạn thích sử dụng nó như vậy. Nghiêm túc mà nói, bạn thậm chí có thể biên dịch C/C++ trực tiếp sang javascript bằng asm. js. Điều đó có nghĩa là bạn phải sử dụng nó? . Bất kỳ nhà phát triển nào có một chút ý thức sẽ không có lỗi với bạn khi chọn C #, đó là một ngôn ngữ tuyệt vời. Tôi có kinh nghiệm viết mã bằng nhiều ngôn ngữ, bao gồm xây dựng các ứng dụng máy tính để bàn không tầm thường bằng C#. Được lựa chọn, tôi muốn sử dụng Javascript hơn. Sự pha trộn của các ràng buộc lỏng lẻo hơn và các phong cách chức năng/mệnh lệnh/nguyên mẫu cho phép mức độ sáng tạo mà tôi chưa từng trải nghiệm trong bất kỳ ngôn ngữ nào khác. Các công cụ tuyệt vời, hệ thống mô-đun tuyệt vời và bản thân ngôn ngữ đang trở nên tốt hơn đáng kể với mỗi bản cập nhật

        đi trốn

        Tải tệp lên. http. //howtonode. org/really-simple-file-uploads “Tất cả các hoạt động I/O được xử lý bởi Node. js đang sử dụng nhiều luồng nội bộ; . ” http. // stackoverflow. com/a/22981768/290340 Libuv sử dụng nhóm luồng để xử lý các hoạt động I/O (tệp, ổ cắm, v.v.) theo cách không đồng bộ. Trong đó hầu hết các ngôn ngữ bị chặn theo mặc định trong các hoạt động I/O nặng của CPU, thì Node không. Nó chỉ kích hoạt một sự kiện khi thao tác I/O hoàn thành trên worker thread. Thư mục hoạt động. https. //github. com/gheeres/node-activedirectory https. //github. com/auth0/hộ chiếu-windowsauth

        đi trốn

        Tải tệp lên. http. //howtonode. org/really-simple-file-uploads “Tất cả các hoạt động I/O được xử lý bởi Node. js đang sử dụng nhiều luồng nội bộ; . ” http. // stackoverflow. com/a/22981768/290340 Libuv sử dụng nhóm luồng để xử lý các hoạt động I/O (tệp, ổ cắm, v.v.) theo cách không đồng bộ. Trong đó hầu hết các ngôn ngữ bị chặn theo mặc định trong các hoạt động I/O nặng của CPU, thì Node không. Nó chỉ kích hoạt một sự kiện khi thao tác I/O hoàn thành trên worker thread. Thư mục hoạt động. https. //github. com/gheeres/node-activedirectory https. //github. com/auth0/hộ chiếu-windowsauth

        đi trốn

        Điểm khác biệt là Node mặc định là không đồng bộ Vì vậy, số lượng nhà phát triển thực hiện lập trình không đồng bộ bằng các ngôn ngữ khác là thiểu số nên họ không được đại diện nhiều. “Tôi không thể đưa ra bất kỳ lý do chính đáng nào để sử dụng nó ở phía máy chủ có lợi cho các ngôn ngữ có sẵn khác. ” Không nói dối đâu, lúc đầu sử dụng Node là. Thách thức để nói ít nhất. Làm quen với async-by-default không phải là một quá trình chuyển đổi dễ dàng. Phần hay của Node là, trọng tâm chính của nền tảng là xây dựng máy chủ/máy khách để hệ sinh thái có rất nhiều công cụ mạnh mẽ để làm bất cứ điều gì liên quan đến phát triển web. “. có thư viện, công cụ và tài nguyên tiêu chuẩn tốt hơn. “Tôi không chắc điều gì đã cho bạn ấn tượng đó. Nó không sử dụng cách tiếp cận thư viện lớp cơ sở nguyên khối-mọi thứ-và-bếp-bồn rửa. Bản thân lõi rất nhỏ nhưng đó là một lợi ích vì nó nhẹ hơn nhiều khi triển khai. Nó cũng bao gồm một trình quản lý gói rất mạnh mẽ, đầy đủ tính năng theo mặc định, do đó bạn sẽ phải thêm các phụ thuộc mà dự án của bạn cần. NPM (Trình quản lý gói nút) có hơn 200 nghìn gói và đang tiếp tục tăng. Vì phần lớn các mô-đun được phát triển độc lập với lõi, chúng lặp lại và cải thiện nhanh hơn nhiều so với các thư viện lõi tương đương trong các ngôn ngữ khác. Các phụ thuộc được quản lý cục bộ trên cơ sở từng dự án trong gói. tập tin json. Thông thường, việc tác giả mô-đun yêu cầu gói của họ phải được cài đặt trên toàn cầu là một hình thức tồi. Việc cài đặt các gói cục bộ sẽ ngăn xung đột phiên bản ở cấp độ toàn cầu và đảm bảo rằng — khi bạn cài đặt một gói — mọi thứ cần thiết để sử dụng mô-đun đều được bao gồm. Thoạt nhìn, nó có vẻ không hiệu quả vì nhiều phụ thuộc có thể có các bản sao của cùng một phụ thuộc phụ (hoặc phụ phụ thuộc, v.v.) nhưng so với chi phí bao gồm một thư viện tiêu chuẩn lớn, dung lượng lưu trữ là không đáng kể. Quy trình làm việc để thiết lập một dự án là. – sao chép nguồn – chạy ‘npm install’ NPM sẽ tự động tải xuống và cài đặt tất cả các phụ thuộc (bao gồm sub-deps, sub-sub-deps, v.v.). Vì các phụ thuộc (và các phiên bản cụ thể của chúng) được xác định rõ ràng trong cấu hình, nên bạn không cần kiểm tra chúng trong kiểm soát nguồn. Ngoài ra, với ES6 (bao gồm trình tải mô-đun ES6 mới) sắp được phát hành, một JSPM mới (Trình quản lý gói JavaScript) đã được tạo để quản lý các phụ thuộc javascript phía máy khách. Nhập mô-đun trong trình duyệt cuối cùng đã được chính thức hóa trong thông số ngôn ngữ, vì vậy Bower và nhiều tiêu chuẩn giả tải mô-đun (ví dụ: AMD, CommonJS, UMD) sẽ biến mất

        đi trốn

        Điểm khác biệt là Node mặc định là không đồng bộ Vì vậy, số lượng nhà phát triển thực hiện lập trình không đồng bộ bằng các ngôn ngữ khác là thiểu số nên họ không được đại diện nhiều. “Tôi không thể đưa ra bất kỳ lý do chính đáng nào để sử dụng nó ở phía máy chủ có lợi cho các ngôn ngữ có sẵn khác. ” Không nói dối đâu, lúc đầu sử dụng Node là. Thách thức để nói ít nhất. Làm quen với async-by-default không phải là một quá trình chuyển đổi dễ dàng. Phần hay của Node là, trọng tâm chính của nền tảng là xây dựng máy chủ/máy khách để hệ sinh thái có rất nhiều công cụ mạnh mẽ để làm bất cứ điều gì liên quan đến phát triển web. “. có thư viện, công cụ và tài nguyên tiêu chuẩn tốt hơn. “Tôi không chắc điều gì đã cho bạn ấn tượng đó. Nó không sử dụng cách tiếp cận thư viện lớp cơ sở nguyên khối-mọi thứ-và-bếp-bồn rửa. Bản thân lõi rất nhỏ nhưng đó là một lợi ích vì nó nhẹ hơn nhiều khi triển khai. Nó cũng bao gồm một trình quản lý gói rất mạnh mẽ, đầy đủ tính năng theo mặc định, do đó bạn sẽ phải thêm các phụ thuộc mà dự án của bạn cần. NPM (Trình quản lý gói nút) có hơn 200 nghìn gói và đang tiếp tục tăng. Vì phần lớn các mô-đun được phát triển độc lập với lõi, chúng lặp lại và cải thiện nhanh hơn nhiều so với các thư viện lõi tương đương trong các ngôn ngữ khác. Các phụ thuộc được quản lý cục bộ trên cơ sở từng dự án trong gói. tập tin json. Thông thường, việc tác giả mô-đun yêu cầu gói của họ phải được cài đặt trên toàn cầu là một hình thức tồi. Việc cài đặt các gói cục bộ sẽ ngăn xung đột phiên bản ở cấp độ toàn cầu và đảm bảo rằng — khi bạn cài đặt một gói — mọi thứ cần thiết để sử dụng mô-đun đều được bao gồm. Thoạt nhìn, nó có vẻ không hiệu quả vì nhiều phụ thuộc có thể có các bản sao của cùng một phụ thuộc phụ (hoặc phụ phụ thuộc, v.v.) nhưng so với chi phí bao gồm một thư viện tiêu chuẩn lớn, dung lượng lưu trữ là không đáng kể. Quy trình làm việc để thiết lập một dự án là. – sao chép nguồn – chạy ‘npm install’ NPM sẽ tự động tải xuống và cài đặt tất cả các phụ thuộc (bao gồm sub-deps, sub-sub-deps, v.v.). Vì các phụ thuộc (và các phiên bản cụ thể của chúng) được xác định rõ ràng trong cấu hình, nên bạn không cần kiểm tra chúng trong kiểm soát nguồn. Ngoài ra, với ES6 (bao gồm trình tải mô-đun ES6 mới) sắp được phát hành, một JSPM mới (Trình quản lý gói JavaScript) đã được tạo để quản lý các phụ thuộc javascript phía máy khách. Nhập mô-đun trong trình duyệt cuối cùng đã được chính thức hóa trong thông số ngôn ngữ, vì vậy Bower và nhiều tiêu chuẩn giả tải mô-đun (ví dụ: AMD, CommonJS, UMD) sẽ biến mất

        đấtT

        Như đã nói ở trên, các ngôn ngữ OO hiện đại có rất nhiều tùy chọn để chính thức hóa và kiểm soát mã của bạn cũng như các giải pháp mà các ngôn ngữ kịch bản không có. Đó chỉ là sự thật đơn giản, không có sự kìm kẹp nào có thể thay đổi được điều đó. Quan điểm của tôi là có rất nhiều nhà phát triển chọn công nghệ theo mức độ phổ biến hơn là sự phù hợp, đó là điều khiến họ hâm mộ các chàng trai. Công cụ phù hợp cho công việc phù hợp, áp dụng trong mọi giao dịch ngoại trừ phát triển phần mềm. Nhưng đó có lẽ là do hầu hết các nhà phát triển không phải là “Người thợ” thực thụ, mà là “Người tự làm” được tôn vinh hơn. Ngành công nghiệp đầy những người nghiệp dư, những người thậm chí không biết đủ để biết rằng họ không biết gì. Họ nghĩ bởi vì họ có thể viết câu lệnh if và vòng lặp while nên họ giỏi. công nghệ

        đấtT

        Như đã nói ở trên, các ngôn ngữ OO hiện đại có rất nhiều tùy chọn để chính thức hóa và kiểm soát mã của bạn cũng như các giải pháp mà các ngôn ngữ kịch bản không có. Đó chỉ là sự thật đơn giản, không có sự kìm kẹp nào có thể thay đổi được điều đó. Quan điểm của tôi là có rất nhiều nhà phát triển chọn công nghệ theo mức độ phổ biến hơn là sự phù hợp, đó là điều khiến họ hâm mộ các chàng trai. Công cụ phù hợp cho công việc phù hợp, áp dụng trong mọi giao dịch ngoại trừ phát triển phần mềm. Nhưng đó có lẽ là do hầu hết các nhà phát triển không phải là “Người thợ” thực thụ, mà là “Người tự làm” được tôn vinh hơn. Ngành công nghiệp đầy những người nghiệp dư, những người thậm chí không biết đủ để biết rằng họ không biết gì. Họ nghĩ bởi vì họ có thể viết câu lệnh if và vòng lặp while nên họ giỏi. công nghệ

        đi trốn

        Các hoạt động I/O cấp hệ thống (chẳng hạn như tệp, ổ cắm) trong Nút được xử lý bởi libuv sử dụng nhóm luồng nền. Sự khác biệt là, luồng chính có thể kích hoạt và quên nhiệm vụ đối với luồng nền và luồng nền sẽ thông báo cho luồng chính (thông qua kích hoạt một sự kiện) khi thao tác hoàn tất. Ngay cả với xử lý luồng nền, thực hiện nhiều thao tác I/O cũng không mở rộng tốt. Đối với các tác vụ sử dụng nhiều CPU trong thời gian dài (mã hóa hình ảnh/phim cũ), việc giảm tải các tác vụ cho các nút worker vẫn được ưu tiên hơn. Trong hầu hết các ngôn ngữ, các thao tác I/O được xử lý theo cách đồng bộ, vì vậy nếu chúng yêu cầu được thực hiện trên luồng chính, chúng sẽ chặn thực thi cho đến khi hoàn thành. Lý do bạn không thấy một khoảng dừng đáng chú ý trong giao diện người dùng khi điều này xảy ra là do giao diện người dùng không đồng bộ/dựa trên sự kiện và chạy trên một chuỗi tách biệt với ngữ cảnh chính

        đi trốn

        Các hoạt động I/O cấp hệ thống (chẳng hạn như tệp, ổ cắm) trong Nút được xử lý bởi libuv sử dụng nhóm luồng nền. Sự khác biệt là, luồng chính có thể kích hoạt và quên nhiệm vụ đối với luồng nền và luồng nền sẽ thông báo cho luồng chính (thông qua kích hoạt một sự kiện) khi thao tác hoàn tất. Ngay cả với xử lý luồng nền, thực hiện nhiều thao tác I/O cũng không mở rộng tốt. Đối với các tác vụ sử dụng nhiều CPU trong thời gian dài (mã hóa hình ảnh/phim cũ), việc giảm tải các tác vụ cho các nút worker vẫn được ưu tiên hơn. Trong hầu hết các ngôn ngữ, các thao tác I/O được xử lý theo cách đồng bộ, vì vậy nếu chúng yêu cầu được thực hiện trên luồng chính, chúng sẽ chặn thực thi cho đến khi hoàn thành. Lý do bạn không thấy một khoảng dừng đáng chú ý trong giao diện người dùng khi điều này xảy ra là do giao diện người dùng không đồng bộ/dựa trên sự kiện và chạy trên một chuỗi tách biệt với ngữ cảnh chính

        đi trốn

        Không có gì ngăn cản bạn hiển thị API dưới dạng microservice. WebKit chỉ cho phép bạn chạy ứng dụng khách JS gốc. Tôi có thể sai nhưng theo những gì tôi hiểu, không giống như trình duyệt, ứng dụng khách webkit không được hộp cát nghiêm ngặt để bạn có thể thực hiện các cuộc gọi hệ thống (ví dụ: mở/lưu tệp mà không cần người dùng nhập)

        đi trốn

        Không có gì ngăn cản bạn hiển thị API dưới dạng microservice. WebKit chỉ cho phép bạn chạy ứng dụng khách JS gốc. Tôi có thể sai nhưng theo những gì tôi hiểu, không giống như trình duyệt, ứng dụng khách webkit không được hộp cát nghiêm ngặt để bạn có thể thực hiện các cuộc gọi hệ thống (ví dụ: mở/lưu tệp mà không cần người dùng nhập)

        đấtT

        Tôi nghĩ rằng bạn đã đưa ra quan điểm của mình cho tôi, nói ra những điều vô nghĩa thiếu suy nghĩ, vô nghĩa về cảm xúc, với rất ít sự thật, từ một tâm trí quá cuồng tín về một thứ mà nó thậm chí không thể nhìn thấy những thất bại của nó. Có vẻ như bạn đã đưa ra một vài giả định hợp lý về những gì tôi biết và không biết, tôi đã làm Javascript được 20 năm, tôi biết những hạn chế của nó, tôi có thể làm việc hiệu quả với hơn 30 ngôn ngữ, tôi sử dụng những gì phù hợp, . Bạn cần trưởng thành hoặc tìm một ngành mới để làm việc. Những người như bạn là vấn đề với Phát triển phần mềm, không biết gì về những người thậm chí không thể tạo ra một trường hợp cho một công nghệ, chứ đừng nói đến việc sử dụng một công nghệ. Vui lòng tránh xa bàn phím và giúp đỡ phần còn lại của chúng tôi

        đấtT

        Tôi nghĩ rằng bạn đã đưa ra quan điểm của mình cho tôi, nói ra những điều vô nghĩa thiếu suy nghĩ, vô nghĩa về cảm xúc, với rất ít sự thật, từ một tâm trí quá cuồng tín về một thứ mà nó thậm chí không thể nhìn thấy những thất bại của nó. Có vẻ như bạn đã đưa ra một vài giả định hợp lý về những gì tôi biết và không biết, tôi đã làm Javascript được 20 năm, tôi biết những hạn chế của nó, tôi có thể làm việc hiệu quả với hơn 30 ngôn ngữ, tôi sử dụng những gì phù hợp, . Bạn cần trưởng thành hoặc tìm một ngành mới để làm việc. Những người như bạn là vấn đề với Phát triển phần mềm, không biết gì về những người thậm chí không thể tạo ra một trường hợp cho một công nghệ, chứ đừng nói đến việc sử dụng một công nghệ. Vui lòng tránh xa bàn phím và giúp đỡ phần còn lại của chúng tôi

        đi trốn

        Bạn có sử dụng kiểm soát phiên bản với quy trình làm việc tiêu chuẩn (quy trình làm việc Gitflow cũ) nơi các nhà phát triển thực hiện các thay đổi trên các nhánh tính năng và mã được xem xét ngang hàng trước khi được hợp nhất không? . Tất cả các ví dụ có sẵn trực tuyến đều bị hỏng khá nhiều nên tôi đã theo dõi quá trình phát triển dự án trên Github. Tỷ lệ mà các nhà phát triển cốt lõi đang đạt được trên cơ sở mã thực sự đáng chú ý. Điều tuyệt vời hơn nữa là mọi PR đều được kiểm tra đơn vị và kiểm tra tích hợp liên tục đủ tốt để mọi bản phát hành được đảm bảo hoạt động đầy đủ (theo như họ đã triển khai cho đến nay)

        đi trốn

        Bạn có sử dụng kiểm soát phiên bản với quy trình làm việc tiêu chuẩn (quy trình làm việc Gitflow cũ) nơi các nhà phát triển thực hiện các thay đổi trên các nhánh tính năng và mã được xem xét ngang hàng trước khi được hợp nhất không? . Tất cả các ví dụ có sẵn trực tuyến đều bị hỏng khá nhiều nên tôi đã theo dõi quá trình phát triển dự án trên Github. Tỷ lệ mà các nhà phát triển cốt lõi đang đạt được trên cơ sở mã thực sự đáng chú ý. Điều tuyệt vời hơn nữa là mọi PR đều được kiểm tra đơn vị và kiểm tra tích hợp liên tục đủ tốt để mọi bản phát hành được đảm bảo hoạt động đầy đủ (theo như họ đã triển khai cho đến nay)

        đi trốn

        Làm theo những gì Tracker1 đang nói. Linting tương đương với việc kiểm tra thời gian biên dịch trong JS. Tôi thậm chí còn sử dụng tiện ích mở rộng Sublime hiển thị lỗi kẻ nói dối trực tiếp trong trình soạn thảo khi tôi đang viết mã. Nếu bạn muốn kiểm tra chặt chẽ hơn, bạn có thể thêm trình kiểm tra kiểu, chẳng hạn như ‘bán tiêu chuẩn’, đảm bảo kiểu mã trên cơ sở toàn dự án. Điều đó có nghĩa là dấu cách không phải tab, thụt lề 2 dấu cách, hàm nhất quán, dấu ngoặc nhọn, v.v. Kiểm tra kiểu tốt cho các lỗi bề ngoài (biến chưa khởi tạo cũ, nhánh chết, giá trị không hợp lệ) nhưng cuối cùng bạn sẽ phải xác minh mã không có lỗi logic thông qua kiểm tra đơn vị, kiểm tra tích hợp liên tục, kiểm tra api

        đi trốn

        Làm theo những gì Tracker1 đang nói. Linting tương đương với việc kiểm tra thời gian biên dịch trong JS. Tôi thậm chí còn sử dụng tiện ích mở rộng Sublime hiển thị lỗi kẻ nói dối trực tiếp trong trình soạn thảo khi tôi đang viết mã. Nếu bạn muốn kiểm tra chặt chẽ hơn, bạn có thể thêm trình kiểm tra kiểu, chẳng hạn như ‘bán tiêu chuẩn’, đảm bảo kiểu mã trên cơ sở toàn dự án. Điều đó có nghĩa là dấu cách không phải tab, thụt lề 2 dấu cách, hàm nhất quán, dấu ngoặc nhọn, v.v. Kiểm tra kiểu tốt cho các lỗi bề ngoài (biến chưa khởi tạo cũ, nhánh chết, giá trị không hợp lệ) nhưng cuối cùng bạn sẽ phải xác minh mã không có lỗi logic thông qua kiểm tra đơn vị, kiểm tra tích hợp liên tục, kiểm tra api

        đi trốn

        Nút sử dụng I/O dựa trên sự kiện không đồng bộ thông qua libuv (bao gồm một nhóm luồng dành riêng cho các yêu cầu I/O). Luồng chính hoàn toàn không bị chặn trong quá trình hoạt động I/O. Nó hoạt động giống như cách cụm ngoại trừ nó được tích hợp vào Node. Kiểm tra một trong những bài thuyết trình trên libuv để biết thêm chi tiết

        đi trốn

        Nút sử dụng I/O dựa trên sự kiện không đồng bộ thông qua libuv (bao gồm một nhóm luồng dành riêng cho các yêu cầu I/O). Luồng chính hoàn toàn không bị chặn trong quá trình hoạt động I/O. Nó hoạt động giống như cách cụm ngoại trừ nó được tích hợp vào Node. Kiểm tra một trong những bài thuyết trình trên libuv để biết thêm chi tiết

        đi trốn

        Hiệu suất khôn ngoan, PayPal dường như nghĩ những điều tốt về Node http. //đồng ghi chú. blogspot. com/2013/12/paypals-node js-vs-java-benchmark. html Để bảo mật, mô-đun ‘cors’ có thể cắm vào Express và có thể được sử dụng cho tất cả các nội dung kiểm soát CORS thông thường. Mô-đun ‘mũ bảo hiểm’ — cũng có thể cắm vào Express — hiển thị một bộ nhỏ các tính năng để bảo vệ chống lại những người dùng độc hại bao gồm bảo vệ tập lệnh chéo trang bổ sung. Tôi không chắc mình có gọi một nhà phát triển Fullstack JS là ‘thiếu kinh nghiệm’ hay không. Có một sự hiểu biết vững chắc về nhiều lĩnh vực trong một hệ sinh thái phát triển không ngừng phát triển thật khó chịu. bạn biết đấy, “10 năm kinh nghiệm so với 1 năm kinh nghiệm 10 lần”

        đi trốn

        Hiệu suất khôn ngoan, PayPal dường như nghĩ những điều tốt về Node http. //đồng ghi chú. blogspot. com/2013/12/paypals-node js-vs-java-benchmark. html Để bảo mật, mô-đun ‘cors’ có thể cắm vào Express và có thể được sử dụng cho tất cả các nội dung kiểm soát CORS thông thường. Mô-đun ‘mũ bảo hiểm’ — cũng có thể cắm vào Express — hiển thị một bộ nhỏ các tính năng để bảo vệ chống lại những người dùng độc hại bao gồm bảo vệ tập lệnh chéo trang bổ sung. Tôi không chắc mình có gọi một nhà phát triển Fullstack JS là ‘thiếu kinh nghiệm’ hay không. Có một sự hiểu biết vững chắc về nhiều lĩnh vực trong một hệ sinh thái phát triển không ngừng phát triển thật khó chịu. bạn biết đấy, “10 năm kinh nghiệm so với 1 năm kinh nghiệm 10 lần”

        Josh Morgan

        Nút. js thậm chí đã không tồn tại được 10 năm (thật buồn cười khi tôi đã thấy các bài đăng công việc thực sự yêu cầu 10 năm kinh nghiệm với nó). Tôi hiểu rằng việc theo kịp sự phát triển của công nghệ là một thách thức và sau 20 năm nữa, tôi có thể nói với bạn rằng vào thời điểm bạn hoàn toàn cảm thấy thoải mái với bất kỳ “full stack” nào thì nó sẽ ít liên quan hơn vì công nghệ luôn phát triển. Sẽ không có gì thay đổi được điều đó, đó chỉ là cách mọi thứ vận hành. Tuy nhiên, bạn không thể thực sự có bánh của bạn và ăn nó ở đó. Công nghệ mới ít được thử nghiệm hơn và do đó kém an toàn hơn, nhưng công nghệ cũ hơn không có nhiều tính năng. Luôn luôn có một sự đánh đổi ở đó. Bất cứ ai tuyên bố khác đang bán cho bạn thứ gì đó

        Josh Morgan

        Nút. js thậm chí đã không tồn tại được 10 năm (thật buồn cười khi tôi đã thấy các bài đăng công việc thực sự yêu cầu 10 năm kinh nghiệm với nó). Tôi hiểu rằng việc theo kịp sự phát triển của công nghệ là một thách thức và sau 20 năm nữa, tôi có thể nói với bạn rằng vào thời điểm bạn hoàn toàn cảm thấy thoải mái với bất kỳ “full stack” nào thì nó sẽ ít liên quan hơn vì công nghệ luôn phát triển. Sẽ không có gì thay đổi được điều đó, đó chỉ là cách mọi thứ vận hành. Tuy nhiên, bạn không thể thực sự có bánh của bạn và ăn nó ở đó. Công nghệ mới ít được thử nghiệm hơn và do đó kém an toàn hơn, nhưng công nghệ cũ hơn không có nhiều tính năng. Luôn luôn có một sự đánh đổi ở đó. Bất cứ ai tuyên bố khác đang bán cho bạn thứ gì đó

        Anil Verma

        Tôi được bán trên Node. JS (nếu ứng dụng của bạn đang xây dựng các ứng dụng mạng có khả năng mở rộng cao), Node. JS là con đường để đi vào năm 2015. Không có thắc mắc tại sao rất nhiều công ty mới thành lập và các tập đoàn lớn đang áp dụng nó. C ++, Java, Ruby và Python có vị trí của chúng trong các lĩnh vực tương ứng. Các công ty và sản phẩm mới sẽ được xây dựng trên nhiều ngôn ngữ. Tôi dự đoán việc áp dụng ROR sẽ vẫn cao trong những năm tới để xây dựng các ứng dụng web (đơn giản vì các nhà phát triển ROR dễ dàng có sẵn và thời gian đưa ra thị trường quá ngắn). Bài báo xuất sắc mặc dù Tomislav

        Anil Verma

        Tôi được bán trên Node. JS (nếu ứng dụng của bạn đang xây dựng các ứng dụng mạng có khả năng mở rộng cao), Node. JS là con đường để đi vào năm 2015. Không có thắc mắc tại sao rất nhiều công ty mới thành lập và các tập đoàn lớn đang áp dụng nó. C ++, Java, Ruby và Python có vị trí của chúng trong các lĩnh vực tương ứng. Các công ty và sản phẩm mới sẽ được xây dựng trên nhiều ngôn ngữ. Tôi dự đoán việc áp dụng ROR sẽ vẫn cao trong những năm tới để xây dựng các ứng dụng web (đơn giản vì các nhà phát triển ROR dễ dàng có sẵn và thời gian đưa ra thị trường quá ngắn). Bài báo xuất sắc mặc dù Tomislav

        Daniel Jawna

        rất đúng. Công việc của tôi là bảo trì các ứng dụng cũ, thường là truy cập SQL Server dB’s + ms hoặc giao diện người dùng php. Những thứ này thường được làm bởi “cháu trai giỏi máy tính”. Không có khóa ngoại, nhưng chức năng ngày + giờ tùy chỉnh. bài viết của bạn là tâm trạng của tôi chính xác

        Daniel Jawna

        rất đúng. Công việc của tôi là bảo trì các ứng dụng cũ, thường là truy cập SQL Server dB’s + ms hoặc giao diện người dùng php. Những thứ này thường được làm bởi “cháu trai giỏi máy tính”. Không có khóa ngoại, nhưng chức năng ngày + giờ tùy chỉnh. bài viết của bạn là tâm trạng của tôi chính xác

        JPoet

        Tôi thấy Java rất kém hiệu quả và rất tốn kém đối với nhiều công việc tẻ nhạt ở mức độ thấp. C ++ dành cho các lập trình viên có thể xử lý truy cập/con trỏ bộ nhớ. Hầu hết các lập trình viên của công ty không thể. Ngày trước, bạn có PL/1 và C cho kỹ sư phần mềm và COBOL cho lập trình viên công nghệ thông tin

        JPoet

        Tôi thấy Java rất kém hiệu quả và rất tốn kém đối với nhiều công việc tẻ nhạt ở mức độ thấp. C ++ dành cho các lập trình viên có thể xử lý truy cập/con trỏ bộ nhớ. Hầu hết các lập trình viên của công ty không thể. Ngày trước, bạn có PL/1 và C cho kỹ sư phần mềm và COBOL cho lập trình viên công nghệ thông tin

        joselie castañeda

        cảm ơn. điều này rất hữu ích vì tôi sẽ tạo một ứng dụng doanh nghiệp tính toán nặng. tôi nghĩ tôi sẽ thử nút. js trên ứng dụng khác. bây giờ, tôi sẽ sử dụng ruby ​​​​trên đường ray

        joselie castañeda

        cảm ơn. điều này rất hữu ích vì tôi sẽ tạo một ứng dụng doanh nghiệp tính toán nặng. tôi nghĩ tôi sẽ thử nút. js trên ứng dụng khác. bây giờ, tôi sẽ sử dụng ruby ​​​​trên đường ray

        Túlio Spuri

        Khi bài báo này được viết?

        Túlio Spuri

        Khi bài báo này được viết?

        vũ khí

        Bài báo tuyệt vời

        vũ khí

        Bài báo tuyệt vời

        Olivier

        Cảm ơn vì bài viết này, tôi nghĩ rằng lập luận về cùng một ngôn ngữ cho front và dev là điều tồi tệ nhất mà tôi có thể nghe hoặc đọc. Có tổ chức và mã hóa tốt với js là những điều khủng khiếp hơn xuất hiện trong một nhóm. Tôi làm việc từ năm ngoái trong dự án phụ trợ và đôi khi điều này sẽ được mã hóa với khung trưởng thành như django, mất quá nhiều thời gian để hiểu hàng trăm lỗi. Nơi mongodb cảm thấy mát mẻ? . Tôi thực sự nghĩ rằng nút js là một trò đùa lớn và không hay lắm. The package manager give us some cool package to patch and hide the bad side of node but there is nothing to do about the callback hell. Cuối cùng, mã trông giống như một hộp cát lớn hơn tôi không muốn mở tệp để gỡ lỗi hoặc thêm một số dòng mã. Vì vậy, kết luận của tôi là dành cho ứng dụng nhỏ tại sao không nhưng đối với dự án lớn và phát triển không sử dụng cũng như nodejs và mongodb. Trân trọng

        Olivier

        Cảm ơn vì bài viết này, tôi nghĩ rằng lập luận về cùng một ngôn ngữ cho front và dev là điều tồi tệ nhất mà tôi có thể nghe hoặc đọc. Có tổ chức và mã hóa tốt với js là những điều khủng khiếp hơn xuất hiện trong một nhóm. Tôi làm việc từ năm ngoái trong dự án phụ trợ và đôi khi điều này sẽ được mã hóa với khung trưởng thành như django, mất quá nhiều thời gian để hiểu hàng trăm lỗi. Nơi mongodb cảm thấy mát mẻ? . Tôi thực sự nghĩ rằng nút js là một trò đùa lớn và không hay lắm. The package manager give us some cool package to patch and hide the bad side of node but there is nothing to do about the callback hell. Cuối cùng, mã trông giống như một hộp cát lớn hơn tôi không muốn mở tệp để gỡ lỗi hoặc thêm một số dòng mã. Vì vậy, kết luận của tôi là dành cho ứng dụng nhỏ tại sao không nhưng đối với dự án lớn và phát triển không sử dụng cũng như nodejs và mongodb. Trân trọng

        khoa học tự nhiên

        Đây là một nhận xét khá thiếu thông tin vì ES6 vẫn hoạt động tốt như một năm trước. Bên cạnh OO từ ES6, còn có TypeScript bổ sung thêm OO cấp doanh nghiệp hơn và có thể thực thi kiểu gõ tĩnh cho JavaScript. Thích. NET được biên dịch thành clr thô, TypeScript cũng có thể được “phiên mã” thành Javascript thô. Hiện tại, NodeJS cho phép thực hiện gần như tất cả những điều này với việc sử dụng tài nguyên máy chủ thậm chí còn tốt hơn và không bị khóa hệ điều hành. Hãy nghĩ đến việc cắt giảm hơn 2000% chi phí cơ sở hạ tầng của bạn vì bạn thực sự không cần phải mở rộng quy mô theo chiều dọc hoặc trả tiền cho những chi phí đó. NET trên mỗi nút quy mô. Ngay cả khi bạn đang đi theo con đường Mono, lol. Tôi sẽ để bạn tự nghiên cứu cách so sánh đó. Các công ty công nghệ tài chính như Paypal biết một hoặc hai điều về tải cũng đang vui vẻ làm những điều tuyệt vời với nút, vì vậy tôi thực sự nghi ngờ nhận xét này của bạn xuất phát từ kiến ​​thức về những gì hệ sinh thái NodeJS thực sự cung cấp cho sản phẩm táo bạo được xây dựng . Ngoài ra, bất kể bạn có thể có ý kiến ​​cá nhân nào về ORM, thực tế hợp lý của tất cả là ORMS sử dụng nhiều tài nguyên bộ nhớ hơn mức cần thiết để chạy phụ trợ. Họ cũng đánh vào nguồn dữ liệu của bạn nhiều hơn mức cần thiết. Bạn cũng đã nói điều gì đó liên quan đến bộ nhớ đệm và ORM mà tôi đoán bạn đang đề cập đến bộ nhớ đệm cấp ORM (e. g. Bộ nhớ đệm L1/2 trong chế độ Ngủ đông). Tôi hy vọng bạn hiểu rằng bạn KHÔNG THỰC SỰ CẦN ORM để thực hiện bộ nhớ đệm cho bạn. Bạn có thể làm điều này bằng cách sử dụng các công cụ tách rời hiệu quả và đẹp mắt. và tại đó linh hoạt hơn. Điều quan trọng cần ghi nhớ là ngay cả bây giờ, vẫn có người bảo vệ Fortran là công cụ thực sự duy nhất để xây dựng phần mềm. Mọi thứ di chuyển khá nhanh trong ngành này. Niềm tự hào là điều dễ hiểu, nhưng lời khuyên của tôi dành cho bạn là hãy tham gia vào ít nhất 1 thế giới công nghệ mới nhiều nhất là vài năm một lần. Bạn sẽ ở lại có liên quan và cảm ơn tôi sau

        khoa học tự nhiên

        Đây là một nhận xét khá thiếu thông tin vì ES6 vẫn hoạt động tốt như một năm trước. Bên cạnh OO từ ES6, còn có TypeScript bổ sung thêm OO cấp doanh nghiệp hơn và có thể thực thi kiểu gõ tĩnh cho JavaScript. Thích. NET được biên dịch thành clr thô, TypeScript cũng có thể được “phiên mã” thành Javascript thô. Hiện tại, NodeJS cho phép thực hiện gần như tất cả những điều này với việc sử dụng tài nguyên máy chủ thậm chí còn tốt hơn và không bị khóa hệ điều hành. Hãy nghĩ đến việc cắt giảm hơn 2000% chi phí cơ sở hạ tầng của bạn vì bạn thực sự không cần phải mở rộng quy mô theo chiều dọc hoặc trả tiền cho những chi phí đó. NET trên mỗi nút quy mô. Ngay cả khi bạn đang đi theo con đường Mono, lol. Tôi sẽ để bạn tự nghiên cứu cách so sánh đó. Các công ty công nghệ tài chính như Paypal biết một hoặc hai điều về tải cũng đang vui vẻ làm những điều tuyệt vời với nút, vì vậy tôi thực sự nghi ngờ nhận xét này của bạn xuất phát từ kiến ​​thức về những gì hệ sinh thái NodeJS thực sự cung cấp cho sản phẩm táo bạo được xây dựng . Ngoài ra, bất kể bạn có thể có ý kiến ​​cá nhân nào về ORM, thực tế hợp lý của tất cả là ORMS sử dụng nhiều tài nguyên bộ nhớ hơn mức cần thiết để chạy phụ trợ. Họ cũng đánh vào nguồn dữ liệu của bạn nhiều hơn mức cần thiết. Bạn cũng đã nói điều gì đó liên quan đến bộ nhớ đệm và ORM mà tôi đoán bạn đang đề cập đến bộ nhớ đệm cấp ORM (e. g. Bộ nhớ đệm L1/2 trong chế độ Ngủ đông). Tôi hy vọng bạn hiểu rằng bạn KHÔNG THỰC SỰ CẦN ORM để thực hiện bộ nhớ đệm cho bạn. Bạn có thể làm điều này bằng cách sử dụng các công cụ tách rời hiệu quả và đẹp mắt. và tại đó linh hoạt hơn. Điều quan trọng cần ghi nhớ là ngay cả bây giờ, vẫn có người bảo vệ Fortran là công cụ thực sự duy nhất để xây dựng phần mềm. Mọi thứ di chuyển khá nhanh trong ngành này. Niềm tự hào là điều dễ hiểu, nhưng lời khuyên của tôi dành cho bạn là hãy tham gia vào ít nhất 1 thế giới công nghệ mới nhiều nhất là vài năm một lần. Bạn sẽ ở lại có liên quan và cảm ơn tôi sau

        biên tập

        Tôi thực sự muốn có thể dùng thử Node. js nhưng thật khó để có được một cái gì đó đang chạy. Cài đặt một ứng dụng “đơn giản” luôn dẫn đến một danh sách những việc bạn cần làm, cài đặt toàn cầu (không phải lúc nào cũng có thể), chỉnh sửa tệp, cố gắng tìm hiểu ý nghĩa của các nhà phát triển chết tiệt trong hướng dẫn ít ỏi của họ. Nó sẽ nhanh chóng trở nên tồi tệ nếu bạn làm sai một điều nhỏ nhất. Nếu nó tuyệt vời như vậy, tại sao không ai tìm ra cách tạo các trình cài đặt đơn giản với thứ này?

        biên tập

        Tôi thực sự muốn có thể dùng thử Node. js nhưng thật khó để có được một cái gì đó đang chạy. Cài đặt một ứng dụng “đơn giản” luôn dẫn đến một danh sách những việc bạn cần làm, cài đặt toàn cầu (không phải lúc nào cũng có thể), chỉnh sửa tệp, cố gắng tìm hiểu ý nghĩa của các nhà phát triển chết tiệt trong hướng dẫn ít ỏi của họ. Nó sẽ nhanh chóng trở nên tồi tệ nếu bạn làm sai một điều nhỏ nhất. Nếu nó tuyệt vời như vậy, tại sao không ai tìm ra cách tạo các trình cài đặt đơn giản với thứ này?

        Alexis Menest

        Nền tảng blog ma https. //github. com/TryGhost/Ghost/blob/master/package. json

        Alexis Menest

        Nền tảng blog ma https. //github. com/TryGhost/Ghost/blob/master/package. json

        David

        Vâng, thật tuyệt nếu có một buổi hẹn hò. Tôi cho rằng họ không hiển thị nó vì họ biết mọi người có thành kiến ​​như thế nào đối với thông tin mới – nhưng sẽ không có ý nghĩa gì nếu che giấu nó trong một bài báo về công nghệ đang phát triển nhanh chóng

        David

        Vâng, thật tuyệt nếu có một buổi hẹn hò. Tôi cho rằng họ không hiển thị nó vì họ biết mọi người có thành kiến ​​như thế nào đối với thông tin mới – nhưng sẽ không có ý nghĩa gì nếu che giấu nó trong một bài báo về công nghệ đang phát triển nhanh chóng

        Samuel_Ogden

        Nút sẽ là một ý tưởng tồi cho một cái gì đó như 9gag. com thì sao?

        Samuel_Ogden

        Nút sẽ là một ý tưởng tồi cho một cái gì đó như 9gag. com thì sao?

        chaitanya

        Này Tomislav, Bài báo tuyệt vời. Tôi muốn biết rằng nếu giả sử tôi muốn nhận đầu ra phần cứng bên ngoài trong ứng dụng của mình, e. g, máy quét hoặc chữ ký điện tử (nếu người dùng đang thực hiện chữ ký điện tử hoặc nhận bản sao được quét từ máy quét), thì tôi có thể truy cập trực tiếp vào ứng dụng của mình không?

        chaitanya

        Này Tomislav, Bài báo tuyệt vời. Tôi muốn biết rằng nếu giả sử tôi muốn nhận đầu ra phần cứng bên ngoài trong ứng dụng của mình, e. g, máy quét hoặc chữ ký điện tử (nếu người dùng đang thực hiện chữ ký điện tử hoặc nhận bản sao được quét từ máy quét), thì tôi có thể truy cập trực tiếp vào ứng dụng của mình không?

        Misha R

        TypeScript là trình bao bọc cú pháp trên JavaScript tiêu chuẩn và biên dịch thành JavaScript tiêu chuẩn. Nó được phát minh để làm cho mã có thể bảo trì được và cho phép nó được sử dụng giống như một ngôn ngữ lập trình thực sự. Cho rằng bạn phải sử dụng JS khi thích hợp, nó làm cho việc viết nó trở nên quen thuộc hơn với các lập trình viên thực thụ và làm cho nó có thể bảo trì được. Điều đó nói rằng, mọi thứ JS và Node đều phù hợp với các ứng dụng web mỏng, nhẹ cần được kết hợp với nhau một cách nhanh chóng và hiệu quả, cho những thứ như ASP. NET, JSP, Ruby, v.v. hơi quá mức cần thiết. Believing that one can not use the new magic Node for everything just because one guy can write front and back end is amateurish

        Misha R

        TypeScript là trình bao bọc cú pháp trên JavaScript tiêu chuẩn và biên dịch thành JavaScript tiêu chuẩn. Nó được phát minh để làm cho mã có thể bảo trì được và cho phép nó được sử dụng giống như một ngôn ngữ lập trình thực sự. Cho rằng bạn phải sử dụng JS khi thích hợp, nó làm cho việc viết nó trở nên quen thuộc hơn với các lập trình viên thực thụ và làm cho nó có thể bảo trì được. Điều đó nói rằng, mọi thứ JS và Node đều phù hợp với các ứng dụng web mỏng, nhẹ cần được kết hợp với nhau một cách nhanh chóng và hiệu quả, cho những thứ như ASP. NET, JSP, Ruby, v.v. hơi quá mức cần thiết. Believing that one can not use the new magic Node for everything just because one guy can write front and back end is amateurish

        ellisgl

        Đóng gói một ngôn ngữ bằng một ngôn ngữ khác mà bạn phải dịch sẽ thêm chi phí. Ngoài ra có những thứ không dịch được, chỉ là trong cuộc sống thực, dịch giữa các ngôn ngữ, bạn mất một cái gì đó. Trong trường hợp này, bạn mất tốc độ (phải dịch từ cái này sang cái khác) và tối ưu hóa, vì lý do một. ORM không làm tất cả. Ban đầu, tôi dành cho ORM, sau đó tôi tìm hiểu sâu về nó và bạn kết thúc với câu “Tôi làm điều này như thế nào?”, “Ồ, bạn không thể dễ dàng, bạn phải thực hiện 10 truy vấn khác”, hoặc bạn kết thúc . ORM đơn giản là “Chọn blah blah từ bảng trong đó x = y”. Yếu tố đổi thưởng nhỏ duy nhất của một số ORM là chúng sẽ chuyển đổi ngôn ngữ của chúng sang bất kỳ DB nào. Nhưng nếu bạn được trả tiền để làm việc trên một ứng dụng cấp doanh nghiệp, thì bạn chỉ đang xử lý 1 – 3 cơ sở dữ liệu, được sử dụng cho những thứ riêng biệt. Nếu bạn có 500 nhân viên và 10.000 khách hàng, ORM có thể bị tắc nghẽn

        ellisgl

        Đóng gói một ngôn ngữ bằng một ngôn ngữ khác mà bạn phải dịch sẽ thêm chi phí. Ngoài ra có những thứ không dịch được, chỉ là trong cuộc sống thực, dịch giữa các ngôn ngữ, bạn mất một cái gì đó. Trong trường hợp này, bạn mất tốc độ (phải dịch từ cái này sang cái khác) và tối ưu hóa, vì lý do một. ORM không làm tất cả. Ban đầu, tôi dành cho ORM, sau đó tôi tìm hiểu sâu về nó và bạn kết thúc với câu “Tôi làm điều này như thế nào?”, “Ồ, bạn không thể dễ dàng, bạn phải thực hiện 10 truy vấn khác”, hoặc bạn kết thúc . ORM đơn giản là “Chọn blah blah từ bảng trong đó x = y”. Yếu tố đổi thưởng nhỏ duy nhất của một số ORM là chúng sẽ chuyển đổi ngôn ngữ của chúng sang bất kỳ DB nào. Nhưng nếu bạn được trả tiền để làm việc trên một ứng dụng cấp doanh nghiệp, thì bạn chỉ đang xử lý 1 – 3 cơ sở dữ liệu, được sử dụng cho những thứ riêng biệt. Nếu bạn có 500 nhân viên và 10.000 khách hàng, ORM có thể bị tắc nghẽn

        quả cầu Nils

        Này, có thư viện/công cụ nào bạn đã sử dụng để tạo đồ họa không?

        quả cầu Nils

        Này, có thư viện/công cụ nào bạn đã sử dụng để tạo đồ họa không?

        Praveen kumar Pamani

        Cảm ơn bạn vì bài viết này, tôi sẽ đề xuất bài viết này nếu mọi người muốn biết nút là gì và chúng ta có thể làm gì với nodejs

        Praveen kumar Pamani

        Cảm ơn bạn vì bài viết này, tôi sẽ đề xuất bài viết này nếu mọi người muốn biết nút là gì và chúng ta có thể làm gì với nodejs

        dohkoo

        Bài viết hay, cảm ơn vì cái nhìn tổng quan. http. //www. steshadoku. com

        dohkoo

        Bài viết hay, cảm ơn vì cái nhìn tổng quan. http. //www. steshadoku. com

        subkuchsell. com

        cảm ơn vì bài viết tuyệt vời thực sự rất hữu ích để hiểu nút. js subkuchsell. com

        subkuchsell. com

        cảm ơn vì bài viết tuyệt vời thực sự rất hữu ích để hiểu nút. js subkuchsell. com

        Tomislav Capan

        Vâng, đây là sự thật, bài viết được tác giả và xuất bản vào tháng 8 năm 2013. (xin lỗi vì đã xác nhận muộn như vậy, chưa thấy điều này sớm hơn)

        Tomislav Capan

        Vâng, đây là sự thật, bài viết được tác giả và xuất bản vào tháng 8 năm 2013. (xin lỗi vì đã xác nhận muộn như vậy, chưa thấy điều này sớm hơn)

        người chơi gôn484

        Trong vũ trụ nào Mongodb có thể được gọi là DB đối tượng? . Đó là DB hướng tài liệu không phải DB hướng đối tượng. Tôi chỉ không muốn bất kỳ đứa trẻ nào bị nhầm lẫn

        người chơi gôn484

        Trong vũ trụ nào Mongodb có thể được gọi là DB đối tượng? . Đó là DB hướng tài liệu không phải DB hướng đối tượng. Tôi chỉ không muốn bất kỳ đứa trẻ nào bị nhầm lẫn

        người chơi gôn484

        Chúng tôi đã chuyển sang một ngôn ngữ cho phụ trợ và giao diện người dùng nhưng chúng tôi quyết định giữ lại ngôn ngữ chạy nhanh như chớp trong thời gian chạy và có loại an toàn cũng như hỗ trợ các ORM tiêu chuẩn với tính năng tải chậm, v.v. , Chúng tôi không muốn vứt bỏ tất cả những thứ đó, đó là điều bạn phải làm khi sử dụng giải pháp JS trên phần phụ trợ của mình. Java trên phần phụ trợ là điều không cần bàn cãi (miễn là bạn không quá kỹ sư và làm phức tạp quá mức ứng dụng của mình với bộ nhớ và CPU đang làm cạn kiệt Spring). Chìa khóa để sử dụng Java cho giao diện người dùng là sử dụng một khung công tác Java thực hiện tất cả JS cho bạn – vì vậy bạn có thể sống trong một thế giới không phải xử lý JS và gắn bó với mã được biên dịch, an toàn về kiểu chữ, phù hợp với doanh nghiệp. Giải pháp này cũng có thể mở rộng – J2SE đã hỗ trợ phân cụm trong gần hai thập kỷ nay. Một khung giao diện người dùng Java như vậy đáp ứng tất cả các nhu cầu JS của chúng tôi và cung cấp cho chúng tôi tất cả tính năng ‘cập nhật một phần’ với mô hình điều khiển sự kiện AJAX với tùy chọn websockets là Wicket

        người chơi gôn484

        Chúng tôi đã chuyển sang một ngôn ngữ cho phụ trợ và giao diện người dùng nhưng chúng tôi quyết định giữ lại ngôn ngữ chạy nhanh như chớp trong thời gian chạy và có loại an toàn cũng như hỗ trợ các ORM tiêu chuẩn với tính năng tải chậm, v.v. , Chúng tôi không muốn vứt bỏ tất cả những thứ đó, đó là điều bạn phải làm khi sử dụng giải pháp JS trên phần phụ trợ của mình. Java trên phần phụ trợ là điều không cần bàn cãi (miễn là bạn không quá kỹ sư và làm phức tạp quá mức ứng dụng của mình với bộ nhớ và CPU đang làm cạn kiệt Spring). Chìa khóa để sử dụng Java cho giao diện người dùng là sử dụng một khung công tác Java thực hiện tất cả JS cho bạn – vì vậy bạn có thể sống trong một thế giới không phải xử lý JS và gắn bó với mã được biên dịch, an toàn về kiểu chữ, phù hợp với doanh nghiệp. Giải pháp này cũng có thể mở rộng – J2SE đã hỗ trợ phân cụm trong gần hai thập kỷ nay. Một khung giao diện người dùng Java như vậy đáp ứng tất cả các nhu cầu JS của chúng tôi và cung cấp cho chúng tôi tất cả tính năng ‘cập nhật một phần’ với mô hình điều khiển sự kiện AJAX với tùy chọn websockets là Wicket

        Rumana Amin

        Xin chào Tomislav, bài viết của bạn rất hay và nhiều thông tin. Nó đã giúp tôi rất nhiều để hiểu về Node. js và nó sử dụng

        Rumana Amin

        Xin chào Tomislav, bài viết của bạn rất hay và nhiều thông tin. Nó đã giúp tôi rất nhiều để hiểu về Node. js và nó sử dụng

        đại bàng chiến tranh

        Câu trả lời đơn giản là không sử dụng Node. js cho điều đó. Bạn đang thiếu phần nào trong đó? . dễ dàng. Thực hiện một câu lệnh THAM GIA lớn trên một triệu hàng trên RDBS? . Bác sĩ phẫu thuật không làm việc với cưa máy. Các lập trình viên cũng không nên

        đại bàng chiến tranh

        Câu trả lời đơn giản là không sử dụng Node. js cho điều đó. Bạn đang thiếu phần nào trong đó? . dễ dàng. Thực hiện một câu lệnh THAM GIA lớn trên một triệu hàng trên RDBS? . Bác sĩ phẫu thuật không làm việc với cưa máy. Các lập trình viên cũng không nên

        người chơi gôn484

        Bạn đánh giá thấp ORM vì hầu hết những người chưa bao giờ xây dựng hệ thống OO với ORM hiệu suất cao tốt mà đá làm được (và bởi ORM ‘tốt’, tôi KHÔNG đề cập đến ORM mà hầu hết mọi người nghĩ đến khi sử dụng, Hibernate. )

        người chơi gôn484

        Bạn đánh giá thấp ORM vì hầu hết những người chưa bao giờ xây dựng hệ thống OO với ORM hiệu suất cao tốt mà đá làm được (và bởi ORM ‘tốt’, tôi KHÔNG đề cập đến ORM mà hầu hết mọi người nghĩ đến khi sử dụng, Hibernate. )

        người chơi gôn484

        Tôi đồng ý – bài viết này và các nhận xét liên quan của các chàng trai hâm mộ JS xác nhận nỗi sợ hãi của tôi rằng hầu hết các ứng dụng JavaScript phải có các mô hình miền thiếu máu (https. //martinfowler. com/bliki/AnemiaDomainModel. html) khá tầm thường và hầu như ít biểu thức hơn – tất cả công việc sẽ được thực hiện trong logic nghiệp vụ tách rời (không được đóng gói và chắc chắn không đa hình)

        người chơi gôn484

        Tôi đồng ý – bài viết này và các nhận xét liên quan của các chàng trai hâm mộ JS xác nhận nỗi sợ hãi của tôi rằng hầu hết các ứng dụng JavaScript phải có các mô hình miền thiếu máu (https. //martinfowler. com/bliki/AnemiaDomainModel. html) khá tầm thường và hầu như ít biểu thức hơn – tất cả công việc sẽ được thực hiện trong logic nghiệp vụ tách rời (không được đóng gói và chắc chắn không đa hình)

        người chơi gôn484

        Tôi đoán trải nghiệm của bạn với ‘ORM’ chỉ giới hạn ở Hibernate. Tôi đã có một trải nghiệm tương tự cho đến khi tôi nghĩ rằng phải có những ORM tốt hơn ngoài kia – hãy nhìn xung quanh – những ORM khác tồn tại

        người chơi gôn484

        Tôi đoán trải nghiệm của bạn với ‘ORM’ chỉ giới hạn ở Hibernate. Tôi đã có một trải nghiệm tương tự cho đến khi tôi nghĩ rằng phải có những ORM tốt hơn ngoài kia – hãy nhìn xung quanh – những ORM khác tồn tại

        người chơi gôn484

        Điểm hay Adin – Tôi sắp làm những cái giống nhau. Liên quan đến tuyên bố của bài báo rằng các khung truyền thống “sinh ra một luồng mới cho mỗi kết nối (yêu cầu)”. Vì vậy, rất sai. Chắc hẳn đã khiến nhiều người tức giận khi thấy một lỗi như vậy mà a) tác giả biết rõ ràng là sai và kiên trì với quan điểm hoặc b) chưa bao giờ sử dụng bất kỳ khung phụ trợ nào khác và vì vậy không nhận ra rằng mình đã sai. Sự kết hợp của kết nối với yêu cầu cũng rất thú vị. Kiến thức của anh ấy không mở rộng để hiểu khái niệm kết nối “keep lives”. Một kết nối không có mối quan hệ 1-1 với các yêu cầu như anh ấy đề xuất. Loại quan điểm sai lệch, méo mó này về mức độ thông minh, trưởng thành, phát triển cao của các khuôn khổ (ví dụ:. , Java/Tomcat và tôi chắc chắn. net/ASP) khiến tôi cảm thấy như bài viết này bị vấy bẩn và không đại diện cho sự thật về các lựa chọn thay thế. Liên quan đến việc loại bỏ tâm lý Yêu cầu/Phản hồi – nhiều khung hiện tại cũng đã thực hiện điều này và tạo ra một kiến ​​trúc hướng thành phần hỗ trợ các bản cập nhật dựa trên mô hình không đồng bộ. ví dụ. , Java Wicket hoặc Angular JS. Nó gần giống như chạy JS (một loại ngôn ngữ không an toàn, không phải OO – nếu bạn là người tin tưởng rằng tính kế thừa ‘nguyên mẫu’ thủ công, tự lắp ráp theo đúng tinh thần OO thực sự) trên máy chủ không phải là một khái niệm có đủ giá trị mà không cần xoắn . Nó là như vậy hoặc có thể nó là như vậy

        người chơi gôn484

        Điểm hay Adin – Tôi sắp làm những cái giống nhau. Liên quan đến tuyên bố của bài báo rằng các khung truyền thống “sinh ra một luồng mới cho mỗi kết nối (yêu cầu)”. Vì vậy, rất sai. Chắc hẳn đã khiến nhiều người tức giận khi thấy một lỗi như vậy mà a) tác giả biết rõ ràng là sai và kiên trì với quan điểm hoặc b) chưa bao giờ sử dụng bất kỳ khung phụ trợ nào khác và vì vậy không nhận ra rằng mình đã sai. Sự kết hợp của kết nối với yêu cầu cũng rất thú vị. Kiến thức của anh ấy không mở rộng để hiểu khái niệm kết nối “keep lives”. Một kết nối không có mối quan hệ 1-1 với các yêu cầu như anh ấy đề xuất. Loại quan điểm sai lệch, méo mó này về mức độ thông minh, trưởng thành, phát triển cao của các khuôn khổ (ví dụ:. , Java/Tomcat và tôi chắc chắn. net/ASP) khiến tôi cảm thấy như bài viết này bị vấy bẩn và không đại diện cho sự thật về các lựa chọn thay thế. Liên quan đến việc loại bỏ tâm lý Yêu cầu/Phản hồi – nhiều khung hiện tại cũng đã thực hiện điều này và tạo ra một kiến ​​trúc hướng thành phần hỗ trợ các bản cập nhật dựa trên mô hình không đồng bộ. ví dụ. , Java Wicket hoặc Angular JS. Nó gần giống như chạy JS (một loại ngôn ngữ không an toàn, không phải OO – nếu bạn là người tin tưởng rằng tính kế thừa ‘nguyên mẫu’ thủ công, tự lắp ráp theo đúng tinh thần OO thực sự) trên máy chủ không phải là một khái niệm có đủ giá trị mà không cần xoắn . Nó là như vậy hoặc có thể nó là như vậy

        người chơi gôn484

        Không phải mọi khách hàng có phiên hoạt động đều cần được phân bổ chuỗi riêng của họ – các chuỗi được chia sẻ và mỗi người dùng chỉ cần một chuỗi cho các yêu cầu dịch vụ. Các yêu cầu đến trong các đợt ngắn và không cần phải kết nối một luồng quá lâu nếu mã phía sau đang thực thi bằng ngôn ngữ được biên dịch, tối ưu hóa cao và cơ sở dữ liệu nhanh. Vì lý do này, bạn không thể nói “Hệ thống A có thể hỗ trợ 10.000 luồng do đó hệ thống chỉ có thể hỗ trợ 10.000 máy khách”. Số lượng khách hàng được hỗ trợ là các đơn đặt hàng lớn hơn số lượng luồng có sẵn do tính đa dạng. Hầu hết các giao diện người dùng, nếu được viết tốt, chỉ ‘điện thoại về nhà’ cho máy chủ khi thực sự cần thiết – không phải “mọi lúc”

        người chơi gôn484

        Không phải mọi khách hàng có phiên hoạt động đều cần được phân bổ chuỗi riêng của họ – các chuỗi được chia sẻ và mỗi người dùng chỉ cần một chuỗi cho các yêu cầu dịch vụ. Các yêu cầu đến trong các đợt ngắn và không cần phải kết nối một luồng quá lâu nếu mã phía sau đang thực thi bằng ngôn ngữ được biên dịch, tối ưu hóa cao và cơ sở dữ liệu nhanh. Vì lý do này, bạn không thể nói “Hệ thống A có thể hỗ trợ 10.000 luồng do đó hệ thống chỉ có thể hỗ trợ 10.000 máy khách”. Số lượng khách hàng được hỗ trợ là các đơn đặt hàng lớn hơn số lượng luồng có sẵn do tính đa dạng. Hầu hết các giao diện người dùng, nếu được viết tốt, chỉ ‘điện thoại về nhà’ cho máy chủ khi thực sự cần thiết – không phải “mọi lúc”

        người chơi gôn484

        Nó giống như nút. js mọi người nghĩ rằng JS là ngôn ngữ duy nhất hỗ trợ đồng thời (mặc dù họ quảng bá giải pháp máy chủ web một luồng -WTF?) và không chặn I/O – tất nhiên không phải vậy nhưng bạn có vẻ rất hào hứng với những thứ như vậy mà tôi có thể

        người chơi gôn484

        Nó giống như nút. js mọi người nghĩ rằng JS là ngôn ngữ duy nhất hỗ trợ đồng thời (mặc dù họ quảng bá giải pháp máy chủ web một luồng -WTF?) và không chặn I/O – tất nhiên không phải vậy nhưng bạn có vẻ rất hào hứng với những thứ như vậy mà tôi có thể

        Tomislav Capan

        Tất nhiên bạn hiểu đây là hình minh họa. Trong thực tế, đó là một nhóm luồng, bị giới hạn bởi bộ nhớ khả dụng và có độ lớn theo thứ tự nhỏ hơn những gì giao diện sự kiện có thể hỗ trợ. Cảm ơn vì nhận xét, mặc dù

        Tomislav Capan

        Tất nhiên bạn hiểu đây là hình minh họa. Trong thực tế, đó là một nhóm luồng, bị giới hạn bởi bộ nhớ khả dụng và có độ lớn theo thứ tự nhỏ hơn những gì giao diện sự kiện có thể hỗ trợ. Cảm ơn vì nhận xét, mặc dù

        Trưởng khoa Radcliffe

        Chết tiệt, đây là một oldie nhưng goodie. Tôi nói chuyện như thế này, và có thể mượn slide của bạn. Theo những ý định ban đầu này của nút để thực hiện những điều tuyệt vời như ghi db theo hàng đợi và đẩy máy chủ, thật đáng ngạc nhiên là hầu hết các ứng dụng nút ngày nay vẫn được xây dựng trên mô hình yêu cầu/phản hồi và chờ đợi ghi db một cách đồng bộ (nhưng không theo khối)

        Trưởng khoa Radcliffe

        Chết tiệt, đây là một oldie nhưng goodie. Tôi nói chuyện như thế này, và có thể mượn slide của bạn. Theo những ý định ban đầu này của nút để thực hiện những điều tuyệt vời như ghi db theo hàng đợi và đẩy máy chủ, thật đáng ngạc nhiên là hầu hết các ứng dụng nút ngày nay vẫn được xây dựng trên mô hình yêu cầu/phản hồi và chờ đợi ghi db một cách đồng bộ (nhưng không theo khối)

        Ulyana

        Nội thất tuyệt vời, cảm ơn vì bài viết. Nút. js có rất nhiều lợi thế. nó nhẹ, hiệu quả và cung cấp khả năng sử dụng Javascript trên cả giao diện người dùng và phụ trợ mở ra những khả năng mới. Tuy nhiên, nó cũng có nhược điểm bạn cần lưu ý. Chúng tôi đã cố gắng mô tả một số trong bài viết https. //www. chuyên gia mạng. co/blog/pros-cons-use-node. js-backend Ý kiến ​​​​của bạn sẽ được đánh giá cao

        Ulyana

        Nội thất tuyệt vời, cảm ơn vì bài viết. Nút. js có rất nhiều lợi thế. nó nhẹ, hiệu quả và cung cấp khả năng sử dụng Javascript trên cả giao diện người dùng và phụ trợ mở ra những khả năng mới. Tuy nhiên, nó cũng có nhược điểm bạn cần lưu ý. Chúng tôi đã cố gắng mô tả một số trong bài viết https. //www. chuyên gia mạng. co/blog/pros-cons-use-node. js-backend Ý kiến ​​​​của bạn sẽ được đánh giá cao

        Maq Said

        Điều tuyệt vời. MongoDB tôi chưa bao giờ khám phá. Bạn có thể nói thêm về nó không và tại sao nó hoạt động tốt với Node. js

        Maq Said

        Điều tuyệt vời. MongoDB tôi chưa bao giờ khám phá. Bạn có thể nói thêm về nó không và tại sao nó hoạt động tốt với Node. js

        Misha Kov

        Đây chính xác là bài viết tôi đang tìm kiếm, Ví dụ về nơi Node. js có thể được sử dụng. Cảm ơn

        Misha Kov

        Đây chính xác là bài viết tôi đang tìm kiếm, Ví dụ về nơi Node. js có thể được sử dụng. Cảm ơn

        Jessica Barnes

        Node.js has the concept of asynchronous execution of Input-output based events through a thread pool. And it concentrates in execution and topping well for low-CPU, highly I/O-bound operations. Just starting to work on Node.js will allow a developers to analyze how to exploit it for maximum performance.

        Jessica Barnes

        Node.js has the concept of asynchronous execution of Input-output based events through a thread pool. And it concentrates in execution and topping well for low-CPU, highly I/O-bound operations. Just starting to work on Node.js will allow a developers to analyze how to exploit it for maximum performance.

        Janguk James Lee

        Đây là một bài viết khá hay thúc đẩy tôi tiếp nhận Node. js

        Janguk James Lee

        Đây là một bài viết khá hay thúc đẩy tôi tiếp nhận Node. js

        Magdalena Mbn

        nếu họ không thể học cách xử lý con trỏ thì họ không thể lập trình

        Magdalena Mbn

        nếu họ không thể học cách xử lý con trỏ thì họ không thể lập trình

        web đặt hàng

        TwaT – bạn có thể cho tôi biết quán rượu / quán bar nào bạn ghé thăm để tôi có thể tránh bạn không. Tôi sẽ không ngạc nhiên nếu bạn OrgASM khi bạn đọc lại bình luận của mình

        web đặt hàng

        TwaT – bạn có thể cho tôi biết quán rượu / quán bar nào bạn ghé thăm để tôi có thể tránh bạn không. Tôi sẽ không ngạc nhiên nếu bạn OrgASM khi bạn đọc lại bình luận của mình

        philippe

        Tôi muốn có nhiều Java hơn cho phía máy khách hơn là nhiều Javascript hơn cho phía máy chủ. Tái cấu trúc Javascript là một cơn ác mộng. Bạn nào làm phần mềm 4000 – 10000 class như mình thì biết mình đang nói cái gì. Tôi thấy việc quản lý luồng là một điểm cộng (nếu bạn nhắm mục tiêu chạy một trang web như Facebook thì bạn không quan tâm. Nội dung tĩnh của bạn sẽ sử dụng đám mây bùng phát là 4000 kết nối CÙNG LÚC chỉ là lưu lượng truy cập điên cuồng nên tôi sẽ không ảnh hưởng đến khả năng bảo trì VS khả năng mở rộng) Ít nhất là không hợp lệ từ các ứng dụng mạng nội bộ. Tôi tò mò liệu phiên bản tương lai của Tomcat có sử dụng mẫu lò phản ứng hay không, bản thân Java cũng cung cấp hỗ trợ cho việc này. Bạn có thể xử lý nội dung tĩnh bằng Nginx có mẫu lò phản ứng được triển khai https. //www. pascaldimassimo. com/2011/02/10/java-and-the-reactor-pattern Vẫn cho các trang động, tôi chưa tìm thấy bất kỳ manh mối nào. A thread does not hold the session context so i am really skeptical about having 2Mb in there. Trừ khi được mã hóa kém

        philippe

        Tôi muốn có nhiều Java hơn cho phía máy khách hơn là nhiều Javascript hơn cho phía máy chủ. Tái cấu trúc Javascript là một cơn ác mộng. Bạn nào làm phần mềm 4000 – 10000 class như mình thì biết mình đang nói cái gì. Tôi thấy việc quản lý luồng là một điểm cộng (nếu bạn nhắm mục tiêu chạy một trang web như Facebook thì bạn không quan tâm. Nội dung tĩnh của bạn sẽ sử dụng đám mây bùng phát là 4000 kết nối CÙNG LÚC chỉ là lưu lượng truy cập điên cuồng nên tôi sẽ không ảnh hưởng đến khả năng bảo trì VS khả năng mở rộng) Ít nhất là không hợp lệ từ các ứng dụng mạng nội bộ. Tôi tò mò liệu phiên bản tương lai của Tomcat có sử dụng mẫu lò phản ứng hay không, bản thân Java cũng cung cấp hỗ trợ cho việc này. Bạn có thể xử lý nội dung tĩnh bằng Nginx có mẫu lò phản ứng được triển khai https. //www. pascaldimassimo. com/2011/02/10/java-and-the-reactor-pattern Vẫn cho các trang động, tôi chưa tìm thấy bất kỳ manh mối nào. A thread does not hold the session context so i am really skeptical about having 2Mb in there. Trừ khi được mã hóa kém

        Cody Donelson

        Sự kiện mặc dù bài viết đã được vài năm nhưng nó đưa ra một số điểm tuyệt vời về Node. js. Đọc qua các bình luận, tôi đã thấy một số bài đăng về cách Node. js là một điều tuyệt vời và những thứ khác về cách các ngôn ngữ hàng đầu là C#, Java hoặc Ruby. Chúng tôi biết rằng JavaScript sẽ mang đến một số phức tạp vì nó liên quan đến Lập trình hướng đối tượng, Ánh xạ quan hệ đối tượng, cơ sở dữ liệu quan hệ, v.v. Tôi nghĩ rằng hầu hết các nhà phát triển/người quản lý dự án đang đánh mất điều gì tạo nên JavaScript và Node. js (cũng như AngularJS) thật tuyệt vời. Chúng tôi có thể triển khai ngôn ngữ phía máy khách ở phía máy chủ và làm cho nó thực hiện chính xác như bất kỳ ngôn ngữ phía máy chủ nào khác. I personally love using Node. js, mặc dù thật khó để tôi hoàn toàn chìm đắm trong một ngôn ngữ không có kiểu chữ. Một khi tôi nắm bắt được thực tế rằng bầu trời là giới hạn khi nói đến các đối tượng của tôi và tôi không phải ánh xạ các đối tượng của mình từ loại này sang loại khác (như bạn làm trong C# hoặc Java), khả năng viết mã của tôi đã thực hiện . Gần đây tôi đã dạy một vài kỹ thuật viên PC tại công ty mà tôi làm việc về lập trình. Sếp của tôi rất kiên quyết rằng Node. js là con đường của tương lai (đặc biệt là việc ngừng sử dụng các trình cắm Java trong những năm tới) Tôi có xu hướng đồng ý. Tôi không hiểu tại sao lại có một cuộc tranh luận như vậy khi có liên quan đến các đối tượng trong Node. js/JavaScript. Tôi thấy việc sử dụng các đối tượng dễ dàng hơn và tôi có thể sử dụng chúng linh hoạt hơn VÌ có JavaScript. Tôi sẽ sớm triển khai các thuộc tính HTML trong các đối tượng cho các ứng dụng Express 4 của mình. Tôi nhận thấy rằng PUG (trước đây là Jade) cực kỳ có khả năng xử lý các đối tượng và mảng, do đó, giúp ai đó dễ dàng thay đổi động loại, giá trị hoặc thẻ dựa trên đối tượng được gửi qua GET hoặc . Tôi tin rằng một khi mọi người tham gia với sự hiểu biết về cách Node. js hoạt động, cách bạn có thể triển khai hiệu quả các tiêu chuẩn thường được thực thi bằng ngôn ngữ đánh máy và thực tế là Node. js có một số điều kỳ quặc về nó, liệu chúng ta có thực sự có thể tiến lên phía trước và làm cho ngôn ngữ này trở nên mạnh mẽ như các ngôn ngữ trước nó không. Cuối cùng, tôi sẽ nói thêm rằng khả năng sử dụng Node. js hầu như ở mọi nơi làm cho nó tốt hơn nhiều. Cho dù đó là ứng dụng Express được triển khai trên máy chủ Linux, ứng dụng Electron được triển khai trên máy chủ đầu cuối, Node. js thực tế là một sự phù hợp hoàn hảo cho bất kỳ khối lượng công việc nào cần phải hoàn thành

        Cody Donelson

        Sự kiện mặc dù bài viết đã được vài năm nhưng nó đưa ra một số điểm tuyệt vời về Node. js. Đọc qua các bình luận, tôi đã thấy một số bài đăng về cách Node. js là một điều tuyệt vời và những thứ khác về cách các ngôn ngữ hàng đầu là C#, Java hoặc Ruby. Chúng tôi biết rằng JavaScript sẽ mang đến một số phức tạp vì nó liên quan đến Lập trình hướng đối tượng, Ánh xạ quan hệ đối tượng, cơ sở dữ liệu quan hệ, v.v. Tôi nghĩ rằng hầu hết các nhà phát triển/người quản lý dự án đang đánh mất điều gì tạo nên JavaScript và Node. js (cũng như AngularJS) thật tuyệt vời. Chúng tôi có thể triển khai ngôn ngữ phía máy khách ở phía máy chủ và làm cho nó thực hiện chính xác như bất kỳ ngôn ngữ phía máy chủ nào khác. I personally love using Node. js, mặc dù thật khó để tôi hoàn toàn chìm đắm trong một ngôn ngữ không có kiểu chữ. Một khi tôi nắm bắt được thực tế rằng bầu trời là giới hạn khi nói đến các đối tượng của tôi và tôi không phải ánh xạ các đối tượng của mình từ loại này sang loại khác (như bạn làm trong C# hoặc Java), khả năng viết mã của tôi đã thực hiện . Gần đây tôi đã dạy một vài kỹ thuật viên PC tại công ty mà tôi làm việc về lập trình. Sếp của tôi rất kiên quyết rằng Node. js là con đường của tương lai (đặc biệt là việc ngừng sử dụng các trình cắm Java trong những năm tới) Tôi có xu hướng đồng ý. Tôi không hiểu tại sao lại có một cuộc tranh luận như vậy khi có liên quan đến các đối tượng trong Node. js/JavaScript. Tôi thấy việc sử dụng các đối tượng dễ dàng hơn và tôi có thể sử dụng chúng linh hoạt hơn VÌ có JavaScript. Tôi sẽ sớm triển khai các thuộc tính HTML trong các đối tượng cho các ứng dụng Express 4 của mình. Tôi nhận thấy rằng PUG (trước đây là Jade) cực kỳ có khả năng xử lý các đối tượng và mảng, do đó, giúp ai đó dễ dàng thay đổi động loại, giá trị hoặc thẻ dựa trên đối tượng được gửi qua GET hoặc . Tôi tin rằng một khi mọi người tham gia với sự hiểu biết về cách Node. js hoạt động, cách bạn có thể triển khai hiệu quả các tiêu chuẩn thường được thực thi bằng ngôn ngữ đánh máy và thực tế là Node. js có một số điều kỳ quặc về nó, liệu chúng ta có thực sự có thể tiến lên phía trước và làm cho ngôn ngữ này trở nên mạnh mẽ như các ngôn ngữ trước nó không. Cuối cùng, tôi sẽ nói thêm rằng khả năng sử dụng Node. js hầu như ở mọi nơi làm cho nó tốt hơn nhiều. Cho dù đó là ứng dụng Express được triển khai trên máy chủ Linux, ứng dụng Electron được triển khai trên máy chủ đầu cuối, Node. js thực tế là một sự phù hợp hoàn hảo cho bất kỳ khối lượng công việc nào cần phải hoàn thành

        Gage Poon

        Nhanh như chớp, nhẹ, phát triển mượt mà và hiệu suất tốt hơn, đây là một số thay đổi mang tính cách mạng do Node js mang lại trong lĩnh vực phát triển web. Node js mang đến sự tự do sáng tạo, nguồn tài nguyên phong phú như NPM (Trình quản lý gói nút), là thư viện chia sẻ các mô-đun và công cụ. Ngoài ra, các ứng dụng web được phát triển bằng khung phát triển web này có khả năng mở rộng hơn. Khung JavaScript này rất phổ biến trong số các phần khởi động. Tuy nhiên, những tên tuổi lớn như Netflix, Paypal, eBay, Microsoft, Uber, DivBox. trong vv. cũng đang sử dụng khung phát triển web giàu tính năng này

        Gage Poon

        Nhanh như chớp, nhẹ, phát triển mượt mà và hiệu suất tốt hơn, đây là một số thay đổi mang tính cách mạng do Node js mang lại trong lĩnh vực phát triển web. Node js mang đến sự tự do sáng tạo, nguồn tài nguyên phong phú như NPM (Trình quản lý gói nút), là thư viện chia sẻ các mô-đun và công cụ. Ngoài ra, các ứng dụng web được phát triển bằng khung phát triển web này có khả năng mở rộng hơn. Khung JavaScript này rất phổ biến trong số các phần khởi động. Tuy nhiên, những tên tuổi lớn như Netflix, Paypal, eBay, Microsoft, Uber, DivBox. trong vv. cũng đang sử dụng khung phát triển web giàu tính năng này

        rajivkumar bonam

        what is node js how to write code in node js

        rajivkumar bonam

        what is node js how to write code in node js

        Chế độ quân chủ dẫn đến tự do

        Bài báo tuyệt vời, cảm ơn

        Chế độ quân chủ dẫn đến tự do

        Bài báo tuyệt vời, cảm ơn

        csps1343

        Nice node.js tutorials, thanks for sharing.

        csps1343

        Nice node.js tutorials, thanks for sharing.

        Rahul Raut

        thank you so much. learn node https://monkelite.com/what-is-node-js-learn-step-by-step/

        Rahul Raut

        thank you so much. learn node https://monkelite.com/what-is-node-js-learn-step-by-step/

        Chương 247- Nhà Phát Triển Phần Mềm

        “Why The Hell Would I Use Node.js? A Case-by-Case Tutorial”. Every beginner must required to read this article. It’s so easy to understand main Node.Js concept and programming overviews. Hire Node js development company

        Sam Watt

        Wow, đây là một bài viết rất chi tiết và sâu sắc dựa trên các trường hợp. Tôi thích đọc nó, và hy vọng sẽ thấy nhiều bài báo như vậy. Cảm ơn bạn

        ThinkStart Pvt Ltd

        bài hữu ích. Cảm ơn bạn đã chia sẻ thông tin tuyệt vời này

        w3villa

        Hi, I like to read your informative blog. Cám ơn vì đã chia sẻ

        marie adams

        I made several successful investments with this broker before losing 40% of my savings to the trading scam. Tôi đã tốn rất nhiều tiền và đau đớn khi đầu tư vào một khoản đầu tư thậm chí không có thật. Tôi đã có thể thu hồi phần lớn số tiền và chúng tôi vẫn đang cố gắng thu hồi phần còn lại. Tôi thực sự khuyên bạn nên AN TOÀN ĐỂ ĐẦU TƯ TỐT cho bất kỳ ai tham gia vào một vụ lừa đảo giao dịch trực tuyến Lừa đảo giao dịch đã thu hồi 350.000 đô la DƯỚI ĐÂY LÀ LIÊN HỆ CỦA HỌ. safe2investwell@gmail. comcall/whatsapp. +14638887391

        marie adams

        Tôi đã thực hiện một số khoản đầu tư thành công với nhà môi giới này trước khi mất 40% số tiền tiết kiệm của mình vì trò lừa đảo giao dịch. Tôi đã tốn rất nhiều tiền và đau đớn khi đầu tư vào một khoản đầu tư thậm chí không có thật. I was able to recover the majority of the funds, and we are still attempting to recover the rest. I highly recommend SECURE TO INVEST WELL for anyone involved in an online trading scam Trading scam $350,000 recovered BELOW IS THEIR CONTACT. secure2investwell@gmail. cuộc gọi / whatsapp. +14638887391

        Joshua Flynn

        Viết rất hay nhưng bạn có thể làm điều tương tự bằng cách sử dụng ngăn xếp đèn thông thường với lệnh gọi JQuery thông qua AJAX giống như tất cả các trình nhắn tin tức thời trước đây đã thực hiện mà không gặp rắc rối nào không? . Tôi đã đọc hàng trăm bài báo trên web về lý do tại sao ai đó nên sử dụng nút nhưng tất cả chúng đều đề cập đến điều gì đó có thể được thực hiện với công nghệ mà chúng tôi đã có từ những năm 90. Vậy nút có gì đặc biệt mà tôi nên tìm hiểu về nó với công nghệ 30 năm tuổi đã hỗ trợ các loại ứng dụng giống như bạn đã đề cập trong bài viết này 15 năm trước khi nút xuất hiện và quay trở lại khi quay số nhanh. Vì vậy, nếu nó đủ nhanh để thực hiện điều tương tự qua kết nối quay số thì nút đã làm gì để cải thiện hệ sinh thái của internet

Bạn đang tìm hiểu bài viết Nodejs lấy url gốc 2024


HỆ THỐNG CỬA HÀNG TRÙM SỈ QUẢNG CHÂU

Điện thoại: 092.484.9483

Zalo: 092.484.9483

Facebookhttps://facebook.com/giatlathuhuongcom/

WebsiteTrumsiquangchau.com

Địa chỉ: Ngõ 346 Nam Dư, Trần Phú, Hoàng Mai, Hà Nội.