2011-07-27 35 views
6

Tôi hiện đang xây dựng một ứng dụng web trên đầu trang của KnockoutJS - chân thành, lập trình hạnh phúc để sử dụng!Có thể Sencha Touch phù hợp tốt với mẫu MVVM giống như của KnockoutJS không?

Tôi đã đạt đến một giai đoạn là tôi cần thêm khung phát triển di động và đang dự tính các lựa chọn của mình.

Tôi hiện đang có xu hướng đi với Sencha Touch vì sự trưởng thành và các plugin độc đáo mà tôi cần.

Lo lắng duy nhất của tôi là Sencha Touch, mã hóa khai báo OO + của javascript, phù hợp với khung MVVM như Knockout?

Ý tôi là Knockout tận dụng khái niệm rằng Chế độ xem (trang HTML) sẽ gọi mô hình bằng ràng buộc dữ liệu. ExtJS (Sencha Touch) không làm phong phú thêm một View ... thay vào đó nó hy vọng rằng tất cả các nội dung HTML được viết một cách khai báo.

Tôi có đang xử lý dầu và nước ở đây không? Suy nghĩ của bạn là gì

Lưu ý: Tôi muốn biết liệu hai kiến ​​trúc khác nhau này có hoạt động tốt với nhau hay không. Ít quan tâm để nghe về cách Sencha Touch so sánh với các khung công tác khác ngoài kia.

Trả lời

4

Đây là dầu và ... một loại dầu khác. Sencha Touch có kiến ​​trúc MVC'ish của riêng mình với dữ liệu ràng buộc và templating, và cũng có một số lượng lớn các công cụ khác như widget di động, xử lý sự kiện, theming, biểu đồ & thư viện visualization vv Tôi sẽ dự báo rằng bạn sẽ gặp khó khăn nghiêm trọng cố gắng trộn hai. Nhưng nếu bạn quản lý để làm điều đó, chúng tôi muốn nghe về nó (tôi là một người sencha)

Cập nhật: Như Tony đề cập dưới đây - glu.js cho Sencha đã xuất hiện kể từ khi tôi trả lời câu hỏi này - http://www.conarrative.com/glujs.html . Nó khá chính xác những gì bạn đang tìm kiếm nếu bạn muốn một phong cách MVVM so với một MVC (và chúng tôi thích cách tiếp cận của họ)

3

Nó chắc chắn có thể và tôi đã sử dụng cả hai cho dự án cuối cùng của tôi. Tuy nhiên bạn cần phải cho đi knockout phần thú vị nhất: ràng buộc phần tử dom và hầu hết các khả năng của cửa hàng. Thay vào đó, bạn cần phải lắng nghe các thay đổi của mô hình xem và cập nhật các khung nhìn ExtJS cho phù hợp. Không phải tất cả các thành phần ExtJS đều có thể xem được ràng buộc, cho phép lấy các thanh trượt chẳng hạn. Vì tôi là một người Flex (bạn có thể ràng buộc bất cứ điều gì trong flex và phải trung thực tất cả mọi thứ khác sucks (yep thậm chí sencha) sau khi được sử dụng ràng buộc với chỉ cần gõ {}) Tôi cảm thấy một cái gì đó sai và sử dụng knockout cho mô hình của tôi. Chúng tôi đang nói về var một cập nhật var b cập nhật var c về thay đổi ở đây để loại trực tiếp là hoàn hảo ở đó. Rất nhiều việc phải được thực hiện bằng tay, như ràng buộc xem mô hình và cuối cùng tôi không thể nói tôi tự hào về kết quả vì nó không phải là mã được tổ chức nhiều nhất (trông khá xấu xí thực sự) và tôi sẽ không khuyên bạn nên trừ khi bạn có nhiều phụ thuộc giữa các mô hình của mình.

+0

Nếu tôi hiểu chính xác, bạn chỉ sử dụng Chế độ xem của SechaTouch. Các mô hình hoàn toàn từ Knockout. Plus Sencha Views được hỗ trợ bởi các khung nhìn Knockout cho mục đích ràng buộc dữ liệu. Bất kỳ lý do cụ thể nào bạn phải đi với lớp Sencha View? –

5

GluJS cung cấp MVVM cho cả ExtJS 3.x và 4.x. Sencha Touch ràng buộc là trong đường ống. Những người này cũng cung cấp một cách tiếp cận đặc điểm kỹ thuật gọn gàng (SVVM). Công cụ này thực sự nên là một phần của cơ sở mã lõi Sencha và mô hình lớp ExtjS 4.x sẽ là một sự phù hợp hoàn hảo như 4.x có thể cung cấp các móc cho ràng buộc hai chiều mà GluJS sử dụng.

DeftJS: Một tùy chọn tốt khác đã được hỗ trợ tốt là DeftJS; một lib nguồn mở có thêm MVC với ViewControllers (vì vậy không hoàn toàn đầy đủ MVVM) cho cả Sencha ExtJS và Touch. Nó cũng thêm đảo ngược kiểm soát (IoC) và Promises/Deferreds cho mã hóa không đồng bộ sạch hơn.

Cập nhật ...

Sencha ExtJS 5.x hiện hỗ trợ đầy đủ MVVM với Mô hình xem và chúng tôi hy vọng rằng bản phát hành chính tiếp theo ... Sencha Touch 3.x ... có thể sẽ làm tương tự. ExtJS 5.x cũng được cập nhật để bao gồm cùng các lớp cốt lõi và mô hình lớp như Sencha Touch vì vậy điều này làm cho nó thậm chí nhiều khả năng là Touch 3.x sẽ phù hợp với cùng một mô hình xem như ExtJS 5.x.

KnockoutJS làm những gì nó làm rất tốt nhưng nó chỉ là một phần của những gì bạn cần. Phía bên dưới là bạn sẽ phải đi săn tất cả các phần còn thiếu và sau đó chơi "phiên bản tôi nếu bạn có thể" vượt qua các ngón tay của bạn rằng tất cả các bit vẫn được hỗ trợ vào năm tới bởi "ai đó". Ngược lại, API Sencha cung cấp hầu hết những gì bạn cần để xây dựng và duy trì toàn bộ ứng dụng trong một chu kỳ phiên bản. Xem tiêu đề "Ngăn xếp web hiện đại" dưới this blog post.

+0

Tôi nghĩ rằng tôi sẽ bắt đầu sử dụng điều này, bất kỳ _ "bắt đầu" _ lời khuyên? – blong

0

Tôi đã viết một bài đăng blog phác thảo one approach to a MVVM pattern in Sencha Touch sử dụng công nghệ MVC tích hợp của Sencha Touch mà không trả lời trên một khung công tác khác. Về cơ bản ý tưởng xoay quanh thực tế rằng Sencha Touch là rất "lưu trữ dựa trên": khi một kỷ lục được thay đổi, sự kiện cháy trên cửa hàng của bản ghi (s), không phải trên bản ghi chính nó. Vì vậy, nếu chúng ta liên kết các xtypes của các khung nhìn mô hình với một cửa hàng, chúng ta chỉ có thể lặp qua các khung nhìn đó và cập nhật chúng khi cần thiết khi một bản ghi thay đổi.

Tổng số giải pháp này chỉ là vài chục dòng. Đó là một lựa chọn thay thế nhẹ nếu bạn không học cách khác như GluJS.

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