Có khung JavaScript MVC (micro-) không? [đóng cửa]


133

Có bất kỳ khung JavaScript MVC (micro-) phía máy khách nào không?

Tôi có một hình thức HTML khá phức tạp và nó sẽ được hưởng lợi từ mẫu MVC.

Tôi tưởng tượng một giải pháp tốt sẽ cung cấp như sau:

  • Model và View cập nhật Bộ điều khiển khi giá trị thay đổi (Mẫu quan sát)
  • Điền mô hình từ dữ liệu biểu mẫu khi tải trang
  • Tạo biểu mẫu từ mô hình khi mô hình thay đổi

Ajax, sao chổi, JSONP và tất cả những gì jazz là quá mức cần thiết.


2
Tôi có sai không hay đây chỉ là một ý tưởng tồi (hoặc có lẽ một khuôn khổ tuân thủ từ thông dụng)?.

2
Tôi đã bắt đầu làm việc gì đó một thời gian trước đây bởi vì tôi có cùng cảm giác như bạn. Nó tối thiểu như nó có được, AMD và không bị ảnh hưởng như tôi có thể có được nó. Điều đó có nghĩa không có jQuery vv Tôi biết điều này đã bị đóng cửa bây giờ, nhưng tôi nghĩ rằng đây có thể là loại điều bạn đang tìm kiếm: github.com/Wolfy87/tarmac - Tôi đã không làm nhiều với nó thời gian gần đây vì tôi nghĩ tôi sẽ là người dùng duy nhất.
Olical


Hãy xem TodoMVC , so sánh (gần) tất cả các khung JavaScript có sẵn bằng cách triển khai Ứng dụng TODO đơn giản.
koppor

Câu trả lời:


71

Xương sống là một khung trọng lượng nhẹ tuyệt vời. Hãy dùng thử: http://backbonejs.org/


2
Tôi rất vui vì tôi đã tìm thấy xương sống.
Aaron Greenlee

Tôi đồng ý, một để kiểm tra chắc chắn!
Ivanhoe

Làm thế nào để sử dụng Backbone theo cách MVC?
IsmailS

1
@TristanJuricek có thay thế miễn phí cho peepcode không?
Matt

Bỏ qua xương sống và đi đúng cho cột sống. Nó có một triển khai MVC hợp lý hơn nhiều.
Chris Jaynes

33

JavaScriptMVC là một giải pháp tuyệt vời. Đó là tất cả mọi thứ là một cách tiếp cận plugin cho phép bạn chỉ chọn các tính năng bạn cần. Kể từ 2.0, nó dựa trên jQuery.

Về việc tăng cường dần dần trang web của bạn, điều đó tùy thuộc vào người dùng vì JMVC chỉ cung cấp một lớp giữa để phát triển - bạn phải tự mình lựa chọn thiết kế đó.

Tuy nhiên, JavaScriptMVC đơn giản là thư viện JavaScriptMVC có mục đích chung tốt nhất vì các bộ điều khiển dựa trên ủy nhiệm sự kiện mạnh mẽ.

Phân quyền sự kiện cho phép bạn thoát khỏi việc phải đính kèm các trình xử lý sự kiện và chỉ cần tạo quy tắc cho trang của bạn.

Cuối cùng, JMVC không chỉ là một kiến ​​trúc MVC. Nó có tất cả các phần của chu trình phát triển được bao phủ bởi:

  • Trình tạo mã
  • Thử nghiệm tích hợp Selenium và Env.js
  • Công cụ tài liệu
  • Tự động concat + Nén
  • Phát hiện lỗi và báo cáo

1
+1 cho JavascriptMVC - Hiện tại tôi đã sử dụng nó cho một vài ứng dụng và nó khá hay. Bỏ qua các ví dụ tạo mã trên trang web. Tôi tưởng tượng những người chỉ ở đó để bình định các fanboy Rails. :) Bắt đầu với mô hình đối tượng JQueryMX cơ bản và tạo một bộ điều khiển.
Chris Jaynes

1
Vì tôi đã nhận xét này, tôi đã chuyển sang sử dụng Yêu cầu và Cột sống. Cuối cùng, chúng nhỏ hơn, thanh lịch hơn và ít 'Enterprisey' hơn JMVC. JMVC đã rất tốt khi nhóm các nhà phát triển Java của chúng tôi thực hiện điều chỉnh cho JS, nhưng nó chỉ không giữ được một khi bạn bắt đầu hiểu rõ hơn về JS ...
Chris Jaynes

Phần MVC của JMVC hiện là can.js
PHearst

21

Spine có API tương tự như Backbone nhưng nó nhỏ hơn rất nhiều. Nó có tính kế thừa nguyên mẫu.


2
Nó cũng được viết bằng CoffeeScript và sử dụng các lớp học theo phong cách của CoffeeScript - không phải đó là một chiến thắng lớn, nhưng nó khá hay.
một mọt sách được trả tiền

1
Tôi cho rằng đó là lý do tại sao nó nhỏ hơn xương sống? Mã Coffeescript nhỏ gọn hơn ...
Brenden

Tôi yêu cột sống. Sử dụng nó với RequireJS cho sự tuyệt vời thuần túy. Đừng để thực tế là CoffeeScript làm bạn sợ, nó cũng hoạt động tốt với JS bình thường ...
Chris Jaynes

Hỗ trợ trình duyệt là IE> = 9, vì vậy hãy kiểm tra xem có phù hợp với hồ sơ của khách truy cập của bạn không.
Richard

20

AngularJS hoạt động tốt cùng với jQuery và sẽ giúp bạn rất nhiều với cấu trúc MVC và sự phân tách chặt chẽ các mối quan tâm.

Môi trường thử nghiệm đầy đủ và tiêm phụ thuộc bao gồm ...

Kiểm tra nó tại http://angularjs.org


Angularjs là thứ tốt nhất cho đến cuối năm 2013 .... Tôi nghĩ ....
Tony Bao

15
angular không phải là một khung vi mô: /
iConnor

1
Đồng ý, Angular không phải là một khung vi mô.
Vojta

2
vâng, đường cong học tập không tỷ lệ thuận lợi so với các khung khác.
vsync

4
góc là đối diện của một khuôn khổ vi mô. đó là một con thú
hasen


14

Tôi nghĩ rằng cái này trông giống như một cái gì đó bạn nên xem: http://knockoutjs.com/

.


Là một lập trình viên Silverlight / wpf, tôi đã đánh giá loại trực tiếp, xương sống và một vài người khác. Cuối ngày tôi chuyển sang Angular. Nó có ràng buộc và nhiều hơn nữa.
jonperl


8

Ember.js

Đây là ba tính năng khiến Ember thích thú khi sử dụng:

  1. Ràng buộc
  2. Tính chất tính toán
  3. Mẫu tự động cập nhật

Ràng buộc

Sử dụng các ràng buộc để giữ các thuộc tính giữa hai đối tượng khác nhau đồng bộ. Bạn chỉ cần khai báo một ràng buộc một lần và Ember sẽ đảm bảo các thay đổi được lan truyền theo một trong hai hướng.

Đây là cách bạn tạo một ràng buộc giữa hai đối tượng:

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

Ràng buộc cho phép bạn kiến ​​trúc ứng dụng của mình bằng cách sử dụng mẫu MVC (Model-View-Controller), sau đó yên tâm rằng dữ liệu sẽ luôn chảy chính xác từ lớp này sang lớp khác.

Thuộc tính

Các thuộc tính được tính toán cho phép bạn coi một hàm giống như một thuộc tính. Các thuộc tính được tính toán rất hữu ích vì chúng có thể hoạt động với các ràng buộc, giống như bất kỳ thuộc tính nào khác.

Mẫu tự động cập nhật

Ember sử dụng Tay cầm, một thư viện khuôn mẫu ngữ nghĩa. Để lấy dữ liệu từ ứng dụng JavaScript của bạn và đưa nó vào DOM, hãy tạo thẻ và đưa nó vào HTML của bạn, bất cứ nơi nào bạn muốn giá trị xuất hiện:

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
Ember có lợi khi sử dụng xương sống theo bất kỳ cách nào .... nếu các thông số kỹ thuật không rõ ràng ở giai đoạn ban đầu ..
Bijendra

4
Tôi làm như emberJS, nhưng nó không phải là "vi mô" đó là HUGE vì một căn hộ của mình ra khỏi khuôn khổ
iConnor

1
Không nên sử dụng Ember và microframework trong cùng một câu.
Tiền tố

8

Stapes.js

Tiết lộ đầy đủ: Tôi là tác giả của thư viện này :)

Nếu bạn đang tìm kiếm thứ gì đó thực sự nhỏ bé (1,5kb rút gọn / gzipped), hãy xem và cho tôi biết nếu bạn thích nó.


Trông thật tuyệt ngay từ cái nhìn đầu tiên! Tôi thích sự tập trung của bạn vào kế thừa nguyên mẫu (không có lớp mô phỏng và không có newtoán tử gây nhầm lẫn ). Những gì có vẻ không cần thiết là khác eachmap. Tôi đã có chúng trong Underscore.jsjQuery .
feklee

7

Nếu yêu cầu của bạn thực sự đơn giản, bạn có thể viết MVC đơn giản của riêng bạn như Alex Netkachov đã làm.

Các ví dụ của anh ấy được xây dựng trên võ đường (Lưu ý: chúng không hoạt động với tôi trên trang của anh ấy vì tệp dojo.js bị thiếu), nhưng bạn có thể theo mô hình trong Javascript đơn giản.


4

Có thể nó quá mức cần thiết cho những gì bạn cần, nhưng SproutCore là một khung MVC và nó trông không nặng hơn JavaScriptMVC hoặc TrimPath's Junction .

Thật không may, không ai trong số này dường như được xây dựng trên nguyên tắc tăng cường tiến bộ .


1
Các thành phần MVC lõi của JavaScriptMVC lớn hơn khoảng 1k so với gạc của Backbone (trong khi có nhiều tính năng hơn). Và JMVC hoàn toàn có thể xây dựng các ứng dụng được tăng cường dần dần. Bạn chỉ cần vứt bỏ lớp Model.
Justin Meyer

3

Khung ActionScript MVC phổ biến PureMVC gần đây đã được chuyển sang JavaScript. Tôi chưa có cơ hội dùng thử, nhưng tôi tin rằng nó tốt.


Tôi thích nó cho flex. Đơn giản và mạnh mẽ.
Glenn

3

Xin vui lòng kiểm tra jquery-claypool .

jquery-claypool là một khung mvc nhỏ, nhanh, có sẵn được xây dựng trên jquery, dựa trên kinh nghiệm của tôi với django, đường ray, lò xo, v.v ... Trọng lượng rất nhẹ và chạy trên cả máy khách và trong môi trường máy chủ.

nó cung cấp một khung định tuyến cho mvc sạch, ghi nhật ký danh mục, bộ lọc (aop), lười tạo bộ điều khiển, đảo ngược điều khiển, cấu hình quá mức và không nhiều hơn theo thiết kế.

nó không làm bất cứ điều gì jquery đã làm, cảm thấy như jquery, và hoạt động như một khuôn khổ tốt nên: đơn giản.

jquery-đất sét

Hy vọng bạn kiểm tra nó.


Bạn thấy Claypool liên quan đến Backbone như thế nào?
Pepijn


2

Nếu bạn muốn giữ mọi thứ trong tầm kiểm soát và khá đơn giản, bạn có thể không cần một khung, mà chỉ cần thực hiện mẫu mvc của riêng bạn. Chỉ cần kiểm tra bài viết này: Model-View-Controller (MVC) với JavaScript của Alex Netkachov vào năm 2006.



2

Hãy thử mèo con . Nó chỉ có 1,4KB và phụ thuộc duy nhất của nó là EJS.


2

CẬP NHẬT 2016: Sammy.js dường như bị bỏ rơi.

Hãy xem Sammy.js

Văn bản từ trang web:

Một webframework nhỏ với lớp.

  • NHỎ lõi Sammy là chỉ 16K nén và 5.2K nén và gzip
  • MODULAR Sammy được xây dựng trên một hệ thống các plugin và bộ điều hợp. Chỉ bao gồm mã bạn cần. Thật dễ dàng để trích xuất mã của riêng bạn vào các plugin có thể tái sử dụng.
  • SẠCH Toàn bộ API được thiết kế để dễ hiểu và dễ đọc. Sammy cố gắng khuyến khích đóng gói tốt và thiết kế ứng dụng.
  • FUN Điểm quan trọng của sự phát triển là gì nếu nó không thú vị. Sammy cố gắng làm theo phương pháp MATZ. Nó được tối ưu hóa cho hạnh phúc của nhà phát triển.

Bạn có thể mở rộng, làm ơn, trên MATZ là gì?
kstep

Yukihiro Hồi Matz Hồi Matsumoto, người tạo ra ruby ​​thường nói rằng anh ta đang cố gắng làm cho Ruby trở nên tự nhiên, không đơn giản, theo cách phản ánh cuộc sống. Vì vậy, phần mềm nên cảm thấy tự nhiên cho người dùng. Điều này có nghĩa là phương pháp MATZ.
Bijan


1

CorMVC, dễ hiểu và dễ bắt đầu, dựa trên jquery và không phụ thuộc vào bất kỳ công nghệ máy chủ nào


1

Tôi đã phát triển một khung công tác Javascript MVC rất đơn giản gọi là MCV . Nó không làm chính xác những gì bạn yêu cầu, nhưng nó có thể dễ dàng mở rộng với những người trợ giúp. Dù sao, nó chắc chắn là vi mô (1,9kb đóng gói).

Nó hoạt động ít nhiều như Jamal, nhưng tôi quyết định tự lăn vì hai lý do:

  • loại bỏ sự phụ thuộc của jQuery (mặc dù tôi thường sử dụng nó cùng với jQuery)
  • làm cho nó mở rộng với người trợ giúp. Đây là tương tự với các hành vi, thành phần và người trợ giúp của CakePHP.


1

Tôi đã ủng hộ AngularJS (tiết lộ đầy đủ, tôi tham gia một cách hạn chế với nỗ lực dev góc) và rất vui mừng về nó. Tôi đã thực hiện một so sánh song song lấy một tính năng cho một dự án nội bộ (xin lỗi không có đăng nhập để chia sẻ nó) và thực hiện nó trong cả AngularJS và Backbone. Đó là một bài tập tuyệt vời và cuối cùng, tôi rất nghiêng về Angular. Các nhà phát triển cốt lõi rất giỏi trong việc trả lời các câu hỏi và họ đã thực hiện một công việc thực sự tốt với cơ sở dữ liệu dựng sẵn, kiểm tra đơn vị / e2e và tài liệu. Nó vẫn đang trong giai đoạn thử nghiệm với 1.0 sắp ra mắt trong tương lai gần. Bản beta rất ổn định.

Có một chút thay đổi mô hình, và họ sử dụng một cách tiếp cận khá khác so với hầu hết. Việc tích hợp các plugin jquery yêu thích của bạn cần một chút nỗ lực nhưng có thể thực hiện được và đã được thực hiện (góc cạnh trên github).

Tôi sẽ nói (và đây là một vấn đề đối với hầu hết các khung js-centric), hãy đảm bảo điều tra cách làm cho nội dung của bạn thân thiện với SEO (nếu nó quan trọng với bạn). Kể từ khi gia nhập cộng đồng góc cạnh vào tháng 6, tôi nhận thấy sự quan tâm ngày càng tăng và một số người đang đăng bài nói rằng họ đã xem Backbone và những người khác nhưng thực sự thích những gì họ đang thấy ở Angular.








0

Can.js có mọi thứ bạn cần và nặng chỉ 8 KB. Nó đã lấy các bit tốt nhất từ ​​JavaScriptMVC và chưng cất nó thành một khung nhỏ nhưng cực kỳ hấp dẫn với các trình quan sát, vật dụng, ràng buộc, các tác phẩm. Nó tương thích với các khung công tác chính ( jQuery , Dojo Toolkit , MooTools , v.v.). Tài liệu là tuyệt vời và tác giả là đáp ứng. Nó chắc chắn là đáng xem.

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.