2012-07-12 24 views
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 một chút của một người mới khi nói đến lập trình web.node.js và meteor.js sự khác biệt là gì?

Tôi đã thử qua một tháng rưỡi để thực sự tìm hiểu node.js và tìm hiểu cách mọi thứ kết hợp với nhau. Tôi thích cách nhanh chóng và dễ dàng để bắt đầu và chạy, và cộng đồng đi kèm với nó (được minh họa bằng tâm trí số lượng các khuôn khổ bạn có thể nhận được cho Node).

Nhưng sao về sao băng? 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 như là một người sử dụng node.js và 'chuyển đổi' hay nó vẫn còn nhiều hơn một khuôn khổ mới lạ?

Trả lời

159

Tương tự lỏng lẻo là "Meteor là Node là Rails là Ruby". Đó là một khuôn khổ lớn, có ý kiến ​​sử dụng Node trên máy chủ. Nút chính nó 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 tham vọng: Theo mặc định, mỗi trang mà nó phân phát thực sự là mẫu Handlebars được giữ đồng bộ với máy chủ. Hãy thử Leaderboard example: Bạn tạo mẫu chỉ cần nói "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, trang sẽ cập nhật dữ liệu mới — không chỉ cho khách hàng đó mà còn cho mọi người xem trang .

Một điểm khác biệt: Trong khi bản thân Node ổn định và được sử dụng rộng rãi trong sản xuất, Meteor ở 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 trung tâm dữ liệu của Meteor (như hình động) là 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 cho Meteor một vòng quay. Nếu bạn muốn có một khung công tác web ổn định hơn, truyền thống được xây dựng trên Node, hãy xem Express.

+2

Meteor có cải thiện “các 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 bây giờ là khá khả thi, cũng như một niềm vui tuyệt đối để phát triển. –

+4

Cũng 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 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, hy vọng đưa nó ra khỏi giai đoạn "xem trước". – Goddard

12

Meteor là một ontop được xây dựng trong khuôn khổ của 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 riêng của mình thay vì hệ thống dựa trên mô-đun của nút. Nó làm cho nó dễ dàng để làm cho các ứng dụng web bằng cách sử dụng Node. Nút có thể được sử dụng cho nhiều thứ khác nhau và trên chính nó là khủng khiếp khi phục vụ nội dung web động. Thư viện của Meteor làm cho mọi thứ trở nên dễ dàng.

+4

phiên bản 0.6.0 hiện có hỗ trợ trực tiếp cho các mô-đun NPM http://meteor.com/blog/2013/04/ 04/meteor-060-brand-new-distribution-system-app-packages-npm-integration –

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 nhìn thấy nội dung 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 tập trung xung quanh việc sao chép các tập con của một bộ sưu tập MongoDB bên dưới bìa như các bản cập nhật cơ sở dữ liệu nhỏ trên máy tính của bạn (khiến cho 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 cập nhật hiển thị cũng là điểm yếu. Nếu bạn muốn giao diện người dùng 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 lên HTML và kiểm soát tất cả các cuộc gọi AJAX và cập nhật giao diện người dùng), bạn sẽ chiến đấu với cơ chế này.

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

Vì vậy, giống như tất cả "khung ngăn xếp đầy đủ", mọi thứ hoạt động tuyệt vời miễn là ứng dụng của bạn phù hợp với mục đích.Khi bạn vượt ra khỏi phạm vi đó và đẩy ranh giới cạnh, bạn có thể kết thúc chiến đấu với khung ...

+2

Meteor V0.6.0 + có tích hợp npm: http://www.meteor.com/blog/2013/04/04/meteor-060-brand-new-distribution-system-app-packages-npm-integration –

Các vấn đề liên quan