Tản mạn về những ngày đầu sử dụng Vue
Cân nhắc về sự lựa chọn front-end framework khi bắt đầu dự án luôn là một đề tài nóng hổi. Hầu như khi nhắc tới front-end framework, ai cũng chỉ nghĩ đến Angular hoặc là React. Vốn dĩ 2 framework này đã quá nổi tiếng, người không dùng cũng biết đến tên. Và khi tôi nhắc đến VueJS, ai cũng tỏ ra ngạc ...
Cân nhắc về sự lựa chọn front-end framework khi bắt đầu dự án luôn là một đề tài nóng hổi. Hầu như khi nhắc tới front-end framework, ai cũng chỉ nghĩ đến Angular hoặc là React. Vốn dĩ 2 framework này đã quá nổi tiếng, người không dùng cũng biết đến tên. Và khi tôi nhắc đến VueJS, ai cũng tỏ ra ngạc nhiên như kiểu, đó là cái quái gì vậy =))
Lần đầu tiếp cận
Tôi cũng mới chỉ biết đến VueJS vào cuối năm ngoái, khi cùng một người bạn làm dự án Laravel cho khách. Ban đầu tôi cũng đặt ra câu hỏi, tại sao không dùng Angular hoặc React mà dùng thứ khỉ ho cò gáy này. Thằng bạn trả lời rất tỉnh: "Do Laravel tích hợp nó vào nên dùng luôn". Nghe tới câu trả lời mà tôi ngớ người ra luôn. Nhưng mà tính tôi lại thích tìm tòi cái mới, vậy là bu vô làm thử vài cái examples. Chả biết là do trước giờ ít viết bằng Framework hay sao mà vừa code vài cái examples tôi đã yêu luôn Vue =)). Cú pháp nó rất dễ nhớ, dễ sử dụng. Nếu không biết cấu hình nhiều thì chỉ cần import file JS vào và chơi luôn. Tôi nghĩ như thế này thì một người chỉ cần có tí kiến thức về HTML, JS là có thể chơi nó vô tư.
Tôi không quảng cáo, chỉ là có niềm tin vào Vue
Tôi không cố quảng cáo để các bạn chuyển sang dùng Vue và tôi có tiền, đây là một mã nguồn mở, và các bạn có thể đóng góp cho nó. Chỉ là tôi muốn các bạn đừng nên đánh giá thấp những thứ ít nổi tiếng. Đây là vài lí do tôi cho rằng Vue rất tuyệt:
- Vue rất dễ để học! Sẽ mất không tới 10 phút để các bạn có thể đọc các ví dụ cơ bản về Vue, và hiểu được nó làm gì.
- Nó vẫn có tính "Reactive" như React vậy, nhưng làm tốt hơn! Mọi người thích React bởi vì khả năng "Reactive" bằng cách áp dụng một Observer pattern vào một VirtualDOM, vì thế actual DOM chỉ refresh khi cần. Vâng, Vue cũng có thể làm như vậy, nhưng có thể hơn nữa. Sau đây là ví dụ về khả năng đó:
https://jsfiddle.net/coligo/vyfkhad6/
Ở đoạn code trên, mỗi lần giá trị "x" thay đổi, thì "doubleX" cũng sẽ được tính lại. Rất đơn giản đúng không nào?
- Vue là một "Team Player"! Nếu giả định mọi thứ đều ở trong "One Framework" (cách Angular nói) thì bạn đang tự làm khó mình thôi, vì có thể từng phần trong framework lại có thằng khác làm tốt hơn, mà bạn lại không thể tích hợp vào được. Vue thì khác, mặt dù Vue có tích hợp vài tính năng như vue-router, vuex,... nhưng nó lại không bắt buộc mình phải dùng, và mình có thể thay thế vue-router bằng các thư viện routing khác, vuex bằng Redux chẳng hạn,...
- Templates và Styles! Hồi trước mình có đọc qua React với JSX và mình bị ngu bởi nó, thật sự rất khó để học nhanh. Nhưng nếu bạn tiếp xúc với Vue thì sẽ khác. Các bạn có thể làm tất cả mọi thứ trong một file với đuôi mở rộng là ".vue". Có thể viết HTML trong thẻ <template>, JS trong thẻ <script> và CSS trong thẻ <style>, nếu muốn phần CSS đó chỉ được sử dụng trong phần HTML hiện tại thì chỉ cần khai báo thẻ style kèm scoped <style scoped>. Và file này được gọi là 1 component.
Ai là người chống lưng cho Vue
Chắc hẳn bạn sẽ nghĩ rằng Angular có Google đằng sau, React thì có Facebook, thằng Vue ni vô danh nên có khi chết sớm. Nhưng tôi sẽ cho bạn 1 câu trả lời tương tự như thế này: Nếu bạn có con, thì bạn nghĩ ai sẽ là người dành hết tình cảm cho nó nhất? Có phải là một người dưng hay một mạnh thường quân nào dư tiền?. Không, người tạo ra Vue đó là Evan You, và tôi tin chính ông sẽ đưa Vue tỏa sáng. Trước đây anh đã từng làm ở Meteor và Google. Nhưng bây giờ đã tập trung toàn lực cho Vue, anh cũng có cả một team support và luôn commit code đều đặn