Giới thiệu tổng quát về Meteor
Hỏi thật nhé, có bao giờ bạn thấy lập trình một ứng dụng Web là chuyện khó không? Chúng ta phải học cơ man đủ thứ: Từ front-end như HTML, CSS, JS, cho tới back-end như Java/C#/Ruby, SQL, …. Nếu muốn làm thêm ứng dụng bản trên di động, ta phải học Objective C, Java, … ...
Hỏi thật nhé, có bao giờ bạn thấy lập trình một ứng dụng Web là chuyện khó không?
Chúng ta phải học cơ man đủ thứ: Từ front-end như HTML, CSS, JS, cho tới back-end như Java/C#/Ruby, SQL, …. Nếu muốn làm thêm ứng dụng bản trên di động, ta phải học Objective C, Java, … Sau khi code, ta còn phải tìm hiểu về hosting, về domain, về appstore để đưa web/ứng dụng của mình lên Internet, phiền phức nhiều khê quá nhỉ?
Có cách nào để học ít ngôn ngữ, nhưng lại mau chóng đưa ra thành phẩm không? Nếu chỉ là web đơn giản/e-commerce thì bạn có thể xây dựng với Joomla, Drupal, WordPress,… còn với những yêu cầu phức tạp thì không có cách nào đâu.
À, mà thật ra là có đấy. Chỉ cần bạn chịu khó học javascript, sau đó học Meteor là xong. Chỉ cần chút kiến thức về HTML, JS, CSS và MongoDB, bạn có thể xây dựng 1 ứng dụng web và mobilerealtime trong 1 tiếng. (Nhanh gấp 5-10 lần Java, C#, PHP hay Rail để làm chuyện tương tự).
Không tin à? Hãy đọc bài viết để biết Meteor là gì, tại sao nó lại “bá đạo” như vậy nhé.
Meteor là gì?
Một số bạn hiểu lầm Meteor chỉ là một thư viện/framework như jQuery, AngularJS. Thật ra không phải vậy, Meteor không chỉ là 1 Javascriptframework mà là cả 1 hệ sinh thái (ecosystem). Meteor cũng cấp cho ta “gần như” toàn bộ những thứ để làm một ứng dụng web/mobile:
- Phần front-end sử dụng framework Blaze để bind dữ liệu.
- Phần back-end sử dụng NodeJS và Express để làm server, MongoDB là database chính. Bạn không cần biết gì về NodeJS hay Express, chỉ cần code Meteor bằng javascript thôi.
- Một hệ thống thư viện/module tương tự npm, Maven, Nuget.
- Một số tool để build/deploy web site và mobile app. Chỉ cần code một lần, bạn có thể deploy nó thành một web app, hoặc build nó thành một mobile app trên Android, IOS.
Meteor có gì hot?
Vậy tại sao Meteor lại trở nên hot như vậy? Sử dụng Meteor, việc phát triển một ứng dụng sẽ trở nên dễ dàng, nhanh chóng hơn. Meteor được tạo ra không phải chỉ cho developer, mà cho những người “bình dân” như anh Ba bán cháo lòng, chị Bảy chủ tiệm nail, anh Sáu chủ quán cafe có thể tự làm trang web/ứng dụng cho doanh nghiệp của mình. Trên thực tế, có khá nhiều bài viết về chuyện sinh viên đại học, chủ tiệm nail, thợ xăm,… xây dựng ứng dụng bằng Meteor.
Các lý do Meteor được ưa chuộng:
- Không cần quá nhiều kiến thức lập trình, chỉ cần HTML, CSS, javascript, chút kiến thức về OOP và database là được. Mọi thao tác tới database đều thông qua các API của Meteor, viết bằng javascript, chả cần phải biết SQL là gì.
- Meteor hướng tới các đối tượng không giỏi lập trình. Do đó, Meteor rất dễ học dễ làm, tài liệu về Meteor cũng rất phong phú và dễ tìm.
- Nhanh chóng tạo ra sản phẩm, được các công ty start-up, các doanh nghiệp nhỏ ưu chuộng (Ngày xưa Ruby on Rail cũng nổi tiếng nhờ lý do này).
- Có vô số module đã viết sẵn, chỉ cần gắn vào và sử dụng. Ví dụ việc đăng nhập, phân quyền khá phức tạp trong C#, Java, … trong Meteor chỉ cần gắn module vào, chỉnh sửa một chút là được.
- Dân Developer cũng thích Meteor, vì nó tích hợp đủ thứ công nghệ: Node.js, Express, MongoDB, WebSocket, Phonegap, …. Trời ơi, lại còn realtime nữa.
- Code ít, được nhiều, Deploy rất nhanh. Vừa code xong và muốn đưa lên web, chỉ cần “meteor deploy hoangph.meteor.com”. Muốn có ứng dụng di động, chỉ cần “meteor build android” là xong.
Mình có làm thử một cái to-do-list real-time bằng Meteor. Việc sign-in chỉ cần khoảng 3 dòng code (Mới đăng nhập thông thường và google, facebook mình chưa đăng ký). Việc deploy cũng rất nhanh, việc phát triển toàn bộ ứng dụng chỉ mất 1 tiếng vừa học vừa làm.
Edit (02/05/2016): Hiện tại do nhiều người dùng nên thằng Meteor không còn hỗ trợ deploy free như ngày xưa nữa nhé, phải trả phí cơ?).
Vẫn còn vài khuyết điểm
Đoạn đầu bài mình hơi quảng cáo quá mức cho Meteor. Thật ra, có một số mặt nó làm không tốt bằng các phương thức lập trình cũ với C#, Java, Ruby, … Nó vẫn còn một số khuyết điểm dưới đây:
- Chỉ mới hỗ trợ MongoDB làm database engine.
- View Engine Blaze khá cùi bắp. May là hiện tại ta có thể thay thế bằng AngularJS.
- SEO cũng chưa tốt, do Meteor tập trung vào phát triển ứng dụng real time, tương tác cao. Nếu cần làm web bán hàng, blog, trang tin tức, PHP & Joomla hay WordPress vẫn là lựa chọn hàng đầu nhé.
- Module nhiều nhưng document không rõ ràng (Tình trạng tương tự như npm của Nodejs, có rất nhiều module nhưng document rất mơ hồ, khó sử dụng).
Có nên thử sức với Meteor?
Thật ra mình vẫn chỉ giữ thái độ dè chừng, chỉ sử dụng Meteor để xây dựng các ứng dụng nhỏ, vừa học vừa chơi vì nó còn khá non trẻ. Các công ty cũng hơi dè chừng khi sử dụng Meteor. Tuy nhiên, theo mình tìm hiểu thì tương lai của Meteor khá tươi sáng, đội ngũ phát triển Meteor được tài trợ hơn 11 triệu $. Cộng đồng Meteor cũng rất đông đúc và ngày càng phát triển.
Nếu bạn là lập trình viên, muốn mở rộng kiến thức, hãy thử học Meteor xem. Biết đâu 1,2 năm nữa nó sẽ trở thành trào lưu thì sao, các công ty thi nhau tuyển Meteor thì sao? Nếu bạn mới học lập trình web, Meteor cũng là một lựa chọn không tồi. Chỉ cần chút kiến thức HTML/CSS/JS, bạn có thể build một website, một ứng dụng di động, đâu có gì khó phải không nào.
Một số tài liệu khá hay cho bạn nào muốn tìm hiểu thêm:
http://javascriptissexy.com/learn-meteor-js-properly/#more-1498
https://www.meteor.com/tutorials/blaze/creating-an-app
https://meteorhacks.com/meteor-js-web-framework-for-everyone
http://joshowens.me/what-is-meteor-js/
http://www.manuel-schoebel.com/blog/meteorjs-the-perfect-match-for-lean-startups
Techtalk via toidicodedao