-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội
Thay đổi cả tương lai!
Vậy là đã 10 năm kể từ khi #AngularJS ra đời, và cũng là 10 năm đánh dấu sự phát triển ngoạn mục của #SPA, thứ đã giải thoát các back-end Web #Developer và phân chia thế giới lập trình viên thành 2 đội, #BackEnd và #FrontEnd. Vậy SPA là gì mà ghê gớm vậy? Browser và web vẫn là thứ chúng ta sử dụng nhiều nhất tính đến thời điểm hiện tại, từ thời xa xưa với những trang web tĩnh được viết bằng html, sau đó đến những trang web được viết bằng #php, #jsp. Cả một thời người ta say mê nói đến những trang web động được viết bằng #joomla #wordpress, #asp.net, #JavaEE hay #SpringMVC. Nhưng đó là khi chúng ta còn ít thông tin, web đa phần chỉ để hiển thị tin tức. Nhưng đứng trước sự bùng nổ thông tin, web đã thay đổi, ngày nay 1 trang web có thể dùng để bán hàng, chat, mạng xã hội, video, call hay tin tức, nội dung cũng vô cùng đa dạng từ văn bản, hình ảnh cho đến video. Thực tế đặt ra là việc click vào 1 cái link nào đó khiến chúng ta phải cân nhắc rất cẩn thận nếu không muốn phải đợi vài giây cho đến vài phút để có 1 trang web hoàn chỉnh.
Quy luật của tự nhiên
Trong cái khó bao giờ cũng ló cái khôn và sự ra đời của #SPA là quy luật của tự nhiên, một thứ kém hiệu quả sẽ được thay thế bằng một thứ tốt hơn. Và tổ chức ứng dụng thành công nhất SPA có lẽ là #Facebook. Với khối lượng thông tin khổng lồ của mình, facebook đã thay đổi phiên bản web của họ từ multi-page site thành SPA, họ đã tạo ra những trải nghiệm mượt mà, dễ chịu cho người dùng không kém gì việc sử dụng app. Và cũng chính họ đã tạo ra #ReactJS để phục vụ cho chính họ và cho cộng đồng, cảm ơn #Facebook.
Mục tiêu ra đời
Ý tưởng của SPA rất đơn giản, đó quy tất cả các trang của 1 site về làm 1, và khi người dùng click vào 1 link chúng ta sẽ chỉ gọi api để lấy dữ liệu tương ứng với phần bị thay đổi mà không ảnh hưởng gì đến các thành phần khác của trang, điều này làm giảm thiểu đáng kể thời gian tải lại các phần không bị thay đổi, từ đó tạo ra cảm giác mượt mà và tăng trải nghiệm của người dùng. Ưu điểm của SPA đó là:
- Tốc độ hiển thị rất nhanh và mượt, người dùng gần như không cảm thấy bị giật lag hay bị khó chịu vì họ không cần chờ cả trang web được load lại như trước nữa
- Chỉ các phần thay đổi mới bị load lại, giúp người dùng thoát khỏi ức chế khi bị mất các thông tin quan trọng, ví dụ họ đang nhìn thấy 1 sản phẩm họ rất thích đang sale 50% nhưng khi vô tình click vào 1 sản phẩm khác, cả trang bị load lại và họ không nhìn thấy sản phẩm cũ đâu nữa (do chúng ta chèn sản phẩm mới vào)
- Giảm thiểu các câu lệnh truy vấn cho server từ đó giảm thiểu được áp lực cho toàn bộ hệ thống phần cứng, phần mềm và tiết kiệm được chi phí vận hành cho doanh nghiệp.
- Phân chia việc phát triển dự án ra thành 2 bên (FE và BE), từ đó tạo ra sự chuyên biệt, nâng cao được tốc độ phát triển cũng như chất lượng của dự án
Một số nhược điểm
Tuy vậy SPA cũng có nhược điểm:
- Tốc độ tải trang đầu chậm vì nó phải load cả 1 packet js về browser của người dùng
- Không chắc chắn google có thể đánh được index trang, và các trang con của bạn hay không, vì lập trình với SPA là #async, cũng giống như #ajax, Googlebot không thể biết chắc chắn khi nào toàn bộ nội dung của trang đã được render xong.
Các dự án phù hợp
Trải qua rất nhiều dự án mình thấy SPA phù hợp với:
- Những dự án phục vụ cho việc quản lý, ví dụ cho các phòng ban trong doanh nghiệp, admin tool, và mình tin trong tương lai tất cả các dự án dạng này sẽ dùng SPA hết
- Những dự án phần mềm bán hàng cho tạp hóa, siêu thị hoặc cửa hàng
- Những dự án thương mại điện tử, rất nhiều mặt hàng, các bước thanh toán, thông tin khuyến mại, thông báo, chat, support, ...
- Những dự án mạng xã hội
- Những dự án được sử dụng để thay thế cho các ứng dụng chạy trên desktop như #Skype, #GoogleDocs, #DropBox
- Những dự án dành cho các tập đoàn lắm tiền nhiều của, nơi họ có đội ngũ mạnh, và việc SEO là tách biệt hoặc họ có quá nhiều tiền để quảng cáo Và mình nghĩ chúng ta đừng lạm dụng SPA để:
- Làm các blog cá nhân, nơi nội dung của chúng ta chỉ đơn giản là các bài viết
- Các trang web tin tức đơn thuần
- Các trang landing page Nếu các bạn là các cá nhân với số vốn ít ỏi thì Wordpress có lẽ là lựa chọn phù hợp hơn, và hiện tại thì cá nhân mình cũng đang dùng Wordpress là chính.
Một số framework
Nếu bạn có ý định xây dựng 1 SPA thì đây là một số framework mà mình đã từng trải qua và mình nghĩ nó đủ tốt cho mọi người:
- vue.js: https://vuejs.org/
- react.js: https://reactjs.org/
- angular.js: https://angularjs.org/
- ember.js: https://emberjs.com/
Tổng kết
Theo quan điểm cá nhân của mình thì SPA là sự dịch chuyển không thể khác, khi cả thế giới đang chung tay vào phát triển nó, các search engine như Google hay Yahoo cũng sẽ cần có những sự thay đổi để phù hợp với SPA nếu không muốn bị những kẻ đi sau thông mình và nhanh nhẹn hơn thay thế.
Tham khảo
1.wiki
-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội