node.js so với meteor.js sự khác biệt là gì? [đóng cửa]


88

Vì vậy, tôi đã nghe / đọc rất nhiều về meteor.js. Các hướng dẫn làm cho nó có vẻ rất thể thao như một khuôn khổ, nhưng tôi vẫn còn là một người mới làm quen với lập trình web.

Tôi đã cố gắng hơn nửa tháng qua để thực sự tìm hiểu node.js và tìm ra cách tất cả kết hợp với nhau. Tôi thích sự nhanh chóng và dễ dàng để bắt đầu và vận hành, cũng như cộng đồng đi kèm với nó (được minh chứng bằng số lượng framework bạn có thể nhận được cho Node).

Nhưng sao băng thì sao? Những lợi thế thực sự của nó là gì, và sự khác biệt là gì? Có ai đã bắt đầu với tư cách là người dùng node.js và 'đã chuyển đổi' hay vẫn là một khung công tác mới gây tò mò hơn?

Câu trả lời:


159

Một phép tương tự lỏng lẻo là, "Meteor là Node như Rails đối với Ruby." Đó là một khung công tác lớn, kiên định sử dụng Node trên máy chủ. Bản thân Node chỉ là một khung cấp thấp cung cấp các chức năng để gửi và nhận các yêu cầu HTTP và thực hiện các I / O khác.

Meteor hoàn toàn có tham vọng: Theo mặc định, mọi trang mà nó phân phát thực sự là một mẫu Handlebars được giữ đồng bộ với máy chủ. Hãy thử ví dụ về Bảng xếp hạng : Bạn tạo một mẫu có nội dung đơn giản là "Liệt kê tên và điểm số" và mỗi khi bất kỳ khách hàng nào thay đổi tên hoặc điểm số, trang sẽ cập nhật dữ liệu mới — không chỉ cho khách hàng đó mà cho tất cả mọi người đang xem trang.

Một điểm khác biệt khác: Trong khi bản thân Node đã ổn định và được sử dụng rộng rãi trong sản xuất thì Meteor lại ở trạng thái "xem trước". Có những lỗi nghiêm trọng và một số thứ không phù hợp với mô hình khái niệm lấy dữ liệu làm trung tâm của Meteor (chẳng hạn như hình ảnh động) rất khó thực hiện.

Nếu bạn thích chơi với các công nghệ mới, hãy thử quay Meteor. Nếu bạn muốn có một khung web truyền thống, ổn định hơn được xây dựng trên Node, hãy xem Express .


2
Meteor có cải thiện được những “lỗi nghiêm trọng” kể từ năm ngoái không?
danorton

3
@danorton Vâng, tôi chắc chắn sẽ nói như vậy. Đối với một số ứng dụng nhất định, Meteor hiện khá khả thi, cũng như là một niềm vui tuyệt đối để phát triển cùng.
Trevor Burnham

4
Cũng xin lưu ý rằng câu trả lời này cuối cùng sẽ không hoàn toàn chính xác vì Meteor đang trong quá trình phát triển tích cực và đã nhận được những đóng góp tài chính đáng kể để tăng tốc thời gian phát triển với hy vọng đưa nó ra khỏi giai đoạn "xem trước".
Goddard

12

Meteor là một khung công tác được xây dựng trên node.js. Nó sử dụng node.js để triển khai nhưng có một số khác biệt.

Điều quan trọng là nó sử dụng hệ thống đóng gói của riêng mình thay vì hệ thống dựa trên mô-đun của nút. Nó giúp bạn dễ dàng tạo các ứng dụng web bằng Node. Node có thể được sử dụng cho nhiều thứ khác nhau và riêng nó thì rất tệ trong việc cung cấp nội dung web động. Thư viện của Meteor làm cho tất cả điều này trở nên dễ dàng.


4
phiên bản 0.6.0 hiện đã hỗ trợ trực tiếp cho các mô-đun NPM meteor.com/blog/2013/04/04/…
Max Hodges

9

Điểm mạnh của Meteor là ở tính năng cập nhật theo thời gian thực, hoạt động tốt cho một số ứng dụng xã hội mà bạn thấy ngày nay, nơi bạn thấy các cập nhật của mọi người về những gì bạn đang làm. Các bản cập nhật này xoay quanh việc sao chép các tập hợp con của bộ sưu tập MongoDB bên dưới bìa dưới dạng cập nhật cơ sở dữ liệu mini-mongo cục bộ (tập con MongoDB phía máy khách của họ) trên trình duyệt web của bạn (khiến nhiều sự kiện hiển thị được kích hoạt trên các mẫu của bạn). Phần sau về nhiều bản cập nhật kết xuất cũng là điểm yếu. Nếu bạn muốn giao diện người dùng của mình kiểm soát khi giao diện người dùng làm mới (ví dụ: các trang jQuery AJAX cổ điển nơi bạn tải HTML lên và bạn kiểm soát tất cả các lệnh gọi AJAX và cập nhật giao diện người dùng), bạn sẽ phải chống lại cơ chế này.

Meteor sử dụng một đống plugin Node.js đẹp mắt (Handlebars.js, Spark.js, Bootstrap css, v.v. nhưng sử dụng cơ chế đóng gói riêng của nó thay vì npm) bên dưới cùng với w / MongoDB cho lớp lưu trữ mà bạn không cần phải nghĩ về. Nhưng đôi khi bạn cũng phải chiến đấu với nó ... ví dụ: nếu bạn muốn tùy chỉnh chủ đề Bootstrap, nó sẽ làm rối loạn trình tự tải tệp responsive.css của Bootstrap nên nó không còn phản hồi nữa (nhưng điều này có thể sẽ tự khắc phục khi Bootstrap 3.0 sẽ sớm được phát hành).

Vì vậy, giống như tất cả các "khuôn khổ ngăn xếp đầy đủ", mọi thứ hoạt động tốt miễn là ứng dụng của bạn phù hợp với những gì dự định. Một khi bạn vượt ra ngoài phạm vi đó và vượt qua các ranh giới cạnh, bạn có thể sẽ chiến đấu với khuôn khổ ...


2
Meteor V0.6.0 + có tích hợp NPM: meteor.com/blog/2013/04/04/...
Manav Kataria
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.