Một Ember.View hiện bị giới hạn ở các thẻ được W3C tạo cho bạn. Nhưng nếu bạn muốn xác định các thẻ HTML dành riêng cho ứng dụng của mình và sau đó triển khai hành vi của chúng bằng JavaScript? Bạn không thể làm điều này thực sự với Ember.View .
Đó chính xác là những gì các thành phần cho phép bạn làm. Trên thực tế, thật là một ý tưởng tốt khi W3C hiện đang hoạt động trên thông số Yếu tố tùy chỉnh .
Việc triển khai các thành phần của Ember cố gắng càng sát với đặc tả Thành phần Web càng tốt. Khi các yếu tố tùy chỉnh có sẵn rộng rãi trong các trình duyệt, bạn sẽ có thể dễ dàng di chuyển các thành phần Ember của mình sang tiêu chuẩn W3C và chúng có thể được sử dụng bởi các khung công tác khác cũng đã áp dụng tiêu chuẩn mới.
Điều này rất quan trọng đối với chúng tôi rằng chúng tôi đang hợp tác chặt chẽ với các cơ quan tiêu chuẩn để đảm bảo việc triển khai các thành phần của chúng tôi phù hợp với lộ trình của nền tảng web.
Cũng cần lưu ý rằng Ember.Component thực sự là Ember.View (một lớp con) nhưng nó hoàn toàn bị cô lập . Quyền truy cập thuộc tính trong các mẫu của nó đi đến đối tượng xem và các hành động cũng được nhắm mục tiêu vào đối tượng xem . Không có quyền truy cập vào xung quanh context
hoặc bên ngoài controller
tất cả thông tin theo ngữ cảnh được truyền vào , đó không phải là trường hợp với Ember.View thực sự có quyền truy cập vào bộ điều khiển xung quanh, ví dụ như trong chế độ xem bạn có thể làm gì this.get('controller')
đó sẽ cung cấp cho bạn bộ điều khiển hiện được liên kết với chế độ xem.
Vì vậy, sự khác biệt chính giữa một khung nhìn và một thành phần là gì?
Vì vậy, sự khác biệt chính bên cạnh các thành phần đó cho phép bạn tạo các thẻ của riêng mình và trong một thời điểm nào đó trong tương lai khi Các thành phần tùy chỉnh có sẵn cũng di chuyển / sử dụng các thành phần đó trong các khung khác sẽ hỗ trợ các thành phần tùy chỉnh, thực sự đến một lúc nào đó, một thành phần than hồng sẽ làm cho một cái nhìn hơi lỗi thời tùy thuộc vào trường hợp thực hiện cụ thể.
Và đâu là một ví dụ phổ biến mà tôi muốn sử dụng chế độ xem trên một thành phần và ngược lại?
Thực hiện theo các điều trên phụ thuộc rõ ràng vào các trường hợp sử dụng của bạn. Nhưng theo nguyên tắc thông thường, nếu bạn cần trong chế độ xem của mình truy cập vào bộ điều khiển xung quanh, v.v. hãy sử dụng Ember.View , nhưng nếu bạn muốn tách biệt chế độ xem và chỉ truyền thông tin mà nó cần để hoạt động khiến nó không thể biết được ngữ cảnh và có thể tái sử dụng nhiều hơn nữa, hãy sử dụng Ember.Component .
Hy vọng nó giúp.
Cập nhật
Với việc xuất bản Road to Ember 2.0, giờ đây bạn được khuyến khích sử dụng Thành phần thay vì Chế độ xem trong hầu hết các trường hợp.