Trường hợp jQuery phù hợp với các khung như JavaScriptMVC, BackboneJS, SproutCore và Knockout?


14

Tôi đã vui vẻ sử dụng JQuery trong 2 năm qua và đã khá thành công khi tạo ra một số chức năng thực sự tuyệt vời với nó ... vì vậy tôi rất thoải mái với nó. Tôi cũng tin rằng tương lai của web sẽ tiếp tục trên con đường phía khách hàng hiện tại.

Tuy nhiên...

Thử thách tiếp theo dường như sắp diễn ra dưới dạng các khung điều khiển khác nhau: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (danh sách vẫn tiếp tục).

Ngoài ra, có một số công cụ AMD Loader tuyệt vời để sử dụng như RequireJS hoặc LabJS, v.v. Tuy nhiên, jQuery hiện có definevà có thenkhả năng tích hợp sẵn.

Càng ngày càng khó hơn để theo dõi tất cả ...

Và bây giờ, nhiệm vụ của tôi dường như là đánh giá / quyết định - định hướng chiến lược cho việc sử dụng một số hình thức của phía máy khách khung MVC hoặc MVVM ... nhưng tôi có rất nhiều câu hỏi.

  • Nơi nào JQuery phù hợp với các khung điều khiển khác nhau được đề cập ở trên?
  • JQuery sử dụng cùng với mỗi hoặc làm một số trong số họ có riêng của họ ' JQuery -styled phiên bản' nướng-in?
  • Là các công cụ như RequireJS vẫn cần thiết nếu bạn triển khai một trong các khung điều khiển khác nhau được đề cập ở trên?
  • Liệu definevà các thenkhả năng có được đưa vào JQuery không thay thế Trình tải AMD được đề cập ở trên không?
  • Cái nào có vẻ mô-đun nhất? (xem ghi chú bên dưới)

GHI CHÚ:
Một điều tôi không muốn trong bất kỳ khuôn khổ nào trong tương lai là yêu cầu phải có - với số lượng lớn chức năng mà tôi không sử dụng. Có nghĩa là, tôi muốn sử dụng một khung thực sự là mô-đun. Ví dụ, để sử dụng jQuery UI, bạn phải đưa vào rất nhiều thư viện cốt lõi khác mà bạn có thể không thực sự sử dụng.

Tôi sẽ thử nghiệm với từng người, nhưng một số phản hồi THỰC SỰ sẽ rất tuyệt. Tôi đã thấy một số câu hỏi 'tương tự', nhưng không có câu hỏi nào thực sự trả lời sai lệch ở trên.

Cảm ơn trước!

Câu trả lời:


11

jQuery một công cụ chuẩn hóa trình duyệt chéo. Nó cung cấp cho bạn như sau

  • Tiện ích DOM
  • Hệ thống sự kiện
  • Ajax
  • Ảnh động
  • Tiện ích ES5
  • một số điều khác

Backbone / knockout / yada / yada là các thư viện giống như MVC có sẵn để giúp bạn cấu trúc và viết ứng dụng mô-đun. Bạn chỉ cần những thứ này nếu bạn muốn cấu trúc của chúng.

RequireJS / yada / yada là các trình tải mô-đun. Bạn cần một số dạng trình tải mô-đun nếu bạn muốn viết một ứng dụng mô-đun.

Trường hợp JQuery phù hợp với các khung điều khiển khác nhau được đề cập ở trên?

Như đã đề cập, jQuery bình thường hóa các trình duyệt. khung điều khiển thì không. Bạn không cần jQuery nhưng bạn cần một số cách để bình thường hóa trình duyệt.

JQuery có được sử dụng cùng với nhau không hoặc một số trong số chúng có 'phiên bản theo kiểu JQuery' của riêng chúng không?

Xương sống / loại trực tiếp / JavaScriptMVC không có trình duyệt chuẩn hóa trình duyệt nên bạn cần một công cụ cho việc đó. Tôi không chắc chắn về SproutCore nó dường như có rất nhiều trong đó.

Các công cụ như RequireJS vẫn cần thiết nếu bạn triển khai một trong các khung điều khiển khác nhau được đề cập ở trên?

Đây chỉ là cần thiết nếu bạn viết để viết các ứng dụng mô-đun. Vì vậy, khá nhiều có.

Có ba hương vị của ứng dụng mô-đun

  • async yêu cầu các trình tải như requestJS
  • đồng bộ hóa yêu cầu bộ tải như modul8
  • sử dụng không gian tên và chỉ bao gồm các tệp
  • gói như ender

Liệu các định nghĩa và sau đó các khả năng được tích hợp vào JQuery có thể thay thế Trình tải AMD được đề cập ở trên không?

Không. Khả năng xác định được đưa vào jQuery cho phép bạn sử dụng nó với trình tải AMD mà không cần gói jQuery. Bạn vẫn cần một bộ tải AMD. Khả năng "sau đó" chỉ là một số đường của trì hoãn jQuery.

Cái nào có vẻ mô-đun nhất? (xem ghi chú bên dưới)

Đó là một câu hỏi có ý kiến. Ý kiến ​​cá nhân của tôi là tất cả các khung công tác này bao gồm cả jQuery đều cồng kềnh và không theo mô-đun.

Bạn muốn mô-đun, viết thư viện của riêng bạn, viết kiến ​​trúc của riêng bạn.

Tuy nhiên, nếu bạn muốn ít tệ nạn hơn, tôi sẽ chọn xương sống vì nó đơn giản và nhỏ hoặc cột sống tương tự nhau


Cảm ơn Raynos ... Tôi luôn có thể tin tưởng vào bạn cho một câu trả lời tuyệt vời!
Tù nhân ZERO

@Marjan Tôi đang chờ đợi bất kỳ ai khác cũng có thể quan tâm để gửi bất kỳ đầu vào.
Tù nhân ZERO

@PrisonerZERO: không có vấn đề gì với điều đó cả. Vì bạn có vẻ hài lòng với câu trả lời của Raynos, nhận xét của tôi chỉ là trong trường hợp bạn không biết về việc chấp nhận câu trả lời (Tôi không kiểm tra hồ sơ của bạn và đại diện của bạn cho thấy bạn là một người dùng khá mới ở đây)
Marjan Venema

2

Tôi sẽ trả lời trên JavaScriptMVC vì tôi là cộng tác viên:

Trường hợp JQuery phù hợp với các khung điều khiển khác nhau được đề cập ở trên?

JavaScriptMVC phụ thuộc vào jQuery và sử dụng nó rộng rãi.

JQuery có được sử dụng cùng với nhau không hoặc một số trong số chúng có 'phiên bản theo kiểu JQuery' của riêng chúng không?

JavaScriptMVC không có chức năng cạnh tranh với jQuery. Điều này không đúng với Backbone có hệ thống sự kiện riêng. Nhưng, bất cứ điều gì xương sống hoặc cột sống thêm là rất tối thiểu.

Các công cụ như RequireJS vẫn cần thiết nếu bạn triển khai một trong các khung điều khiển khác nhau được đề cập ở trên?

JavaScriptMVC đi kèm với một hệ thống quản lý phụ thuộc -> ăn cắp. Bạn có thể sử dụng JavaScriptMVC với RequireJS, nhưng ăn cắp thực sự mạnh hơn nhiều và có kích thước tương đương được tải xuống bởi người dùng.

Cái nào có vẻ mô-đun nhất? (xem ghi chú bên dưới)

Đây không phải là ý kiến. JavaScriptMVC cực kỳ mô-đun. Bạn chỉ sử dụng những gì bạn cần. So với xương sống hoặc cột sống, bạn có thể sử dụng độc lập các bộ phận M, V hoặc C. Khi được lắp ráp với nhau, nó chỉ lớn hơn Backk 1k (khi sử dụng jQuery và Underscore). Bạn có thể xem các kích cỡ khác nhau của các thành phần cơ sở ở đây: https://github.com/jupiterjs/javascriptmvc/issues/26

Nhưng JavaScriptMVC mạnh hơn nhiều (về tính năng) so với Backbone hoặc Spine. Ví dụ, trình xử lý sự kiện được tạo khuôn mẫu ngăn chặn thực tế tất cả các rò rỉ bộ nhớ. Đây là một chú giải công cụ tự ẩn khi cửa sổ được nhấp:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Điều này thực sự quan trọng với cách tiếp cận MVC khi các điều khiển của bạn đang lắng nghe những thay đổi trong mô hình như:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Bộ điều khiển sẽ tự động hủy liên kết tất cả các trình xử lý sự kiện bên ngoài này.

Một vài điểm mạnh khác của chỉ các phần MVC:

  • $ .Class là một hệ thống lớp rất mạnh
  • $ .View và $ .Model hỗ trợ trả chậm
  • $ .Controll có thể 'rebind' xử lý sự kiện
  • $ .Model hỗ trợ các hiệp hội, getter / setters, mặc định, xác nhận

Bây giờ, JavaScriptMVC không chỉ là các phần MVC (là một phần của dự án con jQueryMX). Nó có:

  • jQueryMX - Chức năng bị thiếu của jQuery như các sự kiện đặc biệt, người trợ giúp, v.v.
  • Ăn cắp - một hệ thống quản lý phụ thuộc. Nhưng nó có thể làm những việc như lấy một ứng dụng ajax và làm cho nó có thể thu thập dữ liệu google.
  • FuncUnit - Một khung thử nghiệm cực kỳ mạnh mẽ.

Bây giờ, về những gì để sử dụng, rất nhiều phụ thuộc. Rất nhiều tùy thuộc vào việc bạn đang tạo một "ứng dụng" hay "trang". Một ứng dụng, cần thử nghiệm, quản lý phụ thuộc, nơi bạn quan tâm về rò rỉ bộ nhớ, tôi sẽ xem JMVC hoặc SproutCore.

Nếu bạn đang dán một vài vật dụng cơ bản với nhau, tôi sẽ nhìn vào cột sống hoặc xương sống.


"Xương sống hoặc cột sống, bạn có thể sử dụng độc lập các bộ phận M, V hoặc C." Ngoại trừ mỗi M, V và C chỉ lớn bằng xương sống và cột sống.
Raynos

Đo không phải sự thật. Xương sống là 5k với sự phụ thuộc gạch dưới. Tôi không chắc cột sống là gì. Nhưng đây là sự cố: Lớp: 1k, Trình điều khiển: 1.74k, Kiểu: 2.8k, $ .View: 1.6k, $ .String: .5k. Tổng cộng là 8,6k. Đó là hơn 3k, nhưng nhiều tính năng hữu ích hơn.
Justin Meyer

Bạn có sử dụng JavaScriptMVC với một cái gì đó giống như điều khiển Kendo UI không? Những điều khiển khác?
Tù nhân ZERO

Có, mọi thư viện UI dựa trên jQuery đều hoạt động tốt (miễn là nó sử dụng hệ thống sự kiện của jQuery cho các sự kiện).
Justin Meyer

Tôi nên lưu ý rằng Backbone có thể sử dụng Zepato thay vì jQuery, làm cho nó ít hơn nhiều so với các phụ thuộc JMVC MVC được kết hợp với jQuery. Nhưng, bạn mất khá nhiều nếu không có jQuery.
Justin Meyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.