2012-12-26 40 views
23

Tôi đã xem xét Ember.js, và nó trông thực sự tuyệt vời, nhưng một điều mà tôi quan tâm, và rằng tôi không thể có được tâm trí của tôi xung quanh nó, là nếu tôi bắt đầu sử dụng nó trên một dự án đã chạy.Emberjs, phía máy chủ và phía máy khách, Tất cả trong?

Cuối cùng tôi sẽ phải di chuyển mọi thứ phía khách hàng và làm cho ứng dụng của tôi trở thành một ứng dụng đơn lẻ tại một thời điểm nào đó?

hãy để tôi làm rõ ...

Cho đến nay, cách tốt nhất để giao tiếp giữa máy khách và máy chủ bằng cách sử dụng Ember là REST. và điều đó có vẻ tuyệt vời, nhưng những gì tôi không thích là có tất cả các mẫu được tải lần đầu tiên. và di chuyển tất cả logic trong máy chủ của tôi tới máy khách (hoặc tôi nhận được tất cả điều này sai?), có vẻ như phía máy chủ của tôi sẽ trở thành một API REST ít logic hơn.

Ngoài ra, tôi đang sử dụng Yii Framework có một số thành phần JavaScript (Ajax đã bật) như grids. làm thế nào tôi có thể có ember tương tác với tất cả điều này trên navigation mà không cần phải viết lại một loạt các công cụ đã làm việc trên ứng dụng của tôi?

Tôi đang ở trang đăng nhập (hoặc tiểu bang), và sau khi đăng nhập, tôi phải hiển thị grid, dễ dàng với Yii và tải trang đầy đủ, nhưng nếu tôi đang sử dụng Ember, cách Tôi có thể có màn hình lưới như bình thường không? sao tôi phải tải trước một mẫu thanh điều khiển cho lưới và cũng là JavaScript điều khiển nó?

+0

Về logic, thực sự bạn không di chuyển toàn bộ logic ở phía máy khách, bạn chỉ chuyển logic chuyển trạng thái cho máy khách và phần còn lại của phép tính chỉ nằm trong máy chủ của bạn. – Hyder

Trả lời

10

Không, bạn không nên di chuyển mọi thứ sang phía máy khách, đặc biệt là xác thực và xác thực có thể bị bỏ qua nếu không.

Những gì bạn di chuyển đến Emberjs là phần xem yii-s của MVC, bộ điều khiển sẽ xuất tức là JSON.

Đó Dữ liệu sau đó được ánh xạ tới Embers mẫu phần thông qua Ember định tuyến và điều khiển, vv

Vì bạn đang thay thế logic trình bày Yii với ember bạn không nên sử dụng các lớp UI Yii của như CGridView. Trộn chúng có thể là có thể nhưng điều đó dường như không phải là một ý tưởng hay. Bạn phải chạy của riêng bạn trong Ember.

http://www.yiiframework.com/wiki/409/ember-js-with-yii-rest-backend-demo-application/

+0

Điều này trông giống như cách chính xác để đi, Cuối cùng tôi đã phải bắt đầu xuất ra JSON từ các bộ điều khiển và có tất cả các "V" một phần của MVC di chuyển vào Ember.JS SlickGrid dường như một sự thay thế tốt đẹp cho CGridView – Asgaroth

7

Chỉ cần thêm phối cảnh Yii vào đây. Rất nhiều "ma thuật" của chế độ xem lưới/danh sách xảy ra trong nhà cung cấp dữ liệu (để tìm kiếm, sắp xếp và lọc phức tạp) và bằng cách định dạng dữ liệu với các trường được phân tích cú pháp trên mô hình.

Vì vậy, bạn có thể sử dụng cùng một khái niệm phía máy chủ và chỉ xuất JSON cuối cùng, được phân trang và tất cả, từ bên trong tiện ích của riêng bạn; hoặc thậm chí chỉ cần ghi đè chế độ xem lưới và đầu ra json thay vì chế độ xem sau khi xử lý tất cả dữ liệu/cấu hình.

Khi bạn đã có JSON xuống thay vì HTML, rất dễ dàng để sao chép giao diện người dùng của lưới, thực sự không có nhiều chức năng đang diễn ra ở đó.

Điều này có thể không lý tưởng, nhưng điều đó có nghĩa là bạn không phải di chuyển tất cả logic để phân trang, tìm kiếm và lọc sang phía máy khách.

TL; DR;
Ghi đè các tiện ích Yii mà bạn đã có chức năng được xây dựng và sử dụng chúng để xuất JSON thay vì HTML.

+0

Đây là những gì tôi đã suy nghĩ, nhưng tôi yêu cầu một số công việc và viết lại. Cảm ơn – Asgaroth

+0

Vâng, tôi nghĩ rằng đó là cách duy nhất bạn sẽ có được tốt nhất của cả hai thế giới mặc dù. Thậm chí có thể bạn có thể sao chép chế độ xem 'CGridView' và điều chỉnh nó thành định dạng mẫu? Nhưng đó là ra khỏi lĩnh vực của tôi và vào Ember.js – Paystey

2

Trong kinh nghiệm của tôi, bạn chỉ cần có thể truy cập vào bộ điều khiển và hành động hiện tại (bằng cli hay http) với serverside bạn JS. Tôi đã làm tương tự với ứng dụng hiện có được tích hợp với node.js.

Lợi ích từ việc này là bạn có thể giữ mã exisitng làm dự phòng cho các trình duyệt không hỗ trợ đầy đủ các triển khai mới của bạn hoặc cho các bot tìm kiếm, những người tuyệt vời với javascript ngay từ đầu.

Tôi đã viết toàn bộ app in my models anyway, tôi có nghĩa là kiểm soát dữ liệu vv, chức năng thực tế là trong các lệnh. Và nếu trình duyệt không được hỗ trợ hoặc vô hiệu hóa javascript, mọi thứ sẽ trở lại bình thường với các neo và tải trang, sử dụng UrlManager và các bộ điều khiển và hành động thực tế. Một bộ điều khiển một hành động đơn giản call the commands. Ofcourse với một helper chuyển đổi đầu ra json thành dữ liệu có thể sử dụng cho các khung nhìn.

Và trang tải mặc định là mặc định là php và bộ điều khiển vì nó đã có sẵn.

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