2009-05-14 3 views
13

Tôi đang triển khai cơ sở dữ liệu khách hàng cho phép tôi tìm kiếm người dùng và công ty, duyệt và chỉnh sửa chi tiết của họ và nhiều thứ khác bằng ASP.NET MVC và javascript (jQuery).Thực tiễn không tốt để trả lại một phần lượt xem chứa javascript?

Bất cứ khi nào một bài đăng hoặc xảy ra, tôi làm điều đó thông qua jQuery.load và chèn PartialView vào DOM.

Một số chế độ xem một phần bao gồm biểu mẫu. Tôi muốn những người được ajax hình thức là tốt, do đó, những người xem có part.ready handlers đã biến các hình thức thành các hình thức ajax (thông qua jquery.form).

Lúc đầu, tôi đã xử lý điều này trong mã gọi lại/mã mà chèn chế độ xem một phần vào DOM. Tuy nhiên, điều này dẫn đến một tập lệnh lớn chứa nhiều hàm javascript tham chiếu đến các trang khác nhau. Tôi đã tái cấu trúc javascript lớn bằng cách chèn các tập lệnh vào các trang tương ứng.

Bây giờ mã có kiểu dáng đẹp hơn (tôi có nhiều trình xử lý OnXXXPartialView ít hơn nhiều) và mã nằm gọn bên trong khung nhìn một phần của nó. Hầu hết các tệp đó chỉ bao gồm 3-4 dòng mã javascript, vì vậy chi phí trên không thực sự đáng kể.

Vì vậy, hiệu quả tôi không chỉ thêm các yếu tố vào DOM tài liệu, nhưng đôi khi tôi cũng thêm một đoạn javascript. Trong thực tế điều này hoạt động tốt, nhưng có vẻ như Firebug can't debug the dynamically loaded scripts.

Có nhiều cách giải quyết vấn đề Firebug, nhưng tôi tự hỏi liệu kiến ​​trúc của tôi có thể là thủ phạm thực sự ở đây không. Bạn đặt javascript ở đâu để xem một phần? Có cách nào tốt nhất không?

+0

bạn có thể viết lại câu hỏi của mình bằng cách thay đổi "include" thành "contains", nếu đúng như vậy. –

+0

điểm tốt, được thực hiện. –

+0

Bạn vẫn coi đây là phương thức hợp lệ (tức là một phần xem có chứa javascript để tổ chức rõ ràng hơn) hay bạn đã chuyển sang một thứ khác? –

Trả lời

7

Nếu bạn đang gặp rắc rối trong việc bao gồm javascript trong một phần lượt xem, tôi sẽ chuyển sang trả về JSON trong cuộc gọi ajax của bạn, theo cách đó bạn có thể xử lý tất cả trên máy khách. Mặc dù, tôi sẽ thừa nhận tôi luôn thích phương pháp này.

Để thực hành tốt nhất, tôi luôn coi xấu khi trả lại html được tạo trong cuộc gọi ajax thay vì json, nhưng đó chỉ là tôi (KHÔNG đánh bạn, lựa chọn cá nhân của nó). Rõ ràng Microsoft không nghĩ rằng thực tế xấu của nó như họ đã xây dựng đặc biệt trong chức năng để hỗ trợ nó. Dù sao, tôi sẽ không xem xét bao gồm javascript với html của bạn bất kỳ tồi tệ hơn chỉ cần gửi html trở lại ở nơi đầu tiên.

Tôi rất tò mò, có gì trong javascript?

Chỉnh sửa: Để cụ thể, tôi ưu tiên thực hiện cuộc gọi ajax để nhận json, sau đó sử dụng JS phía máy khách để xây dựng "xem một phần" đó và chèn nó vào vị trí. Trái ngược với việc thực hiện một cuộc gọi ajax để có được máy chủ rendered html cho khách hàng sau đó chèn vào dom.

Một số chế độ xem một phần bao gồm biểu mẫu. Tôi muốn những người được ajax hình thức là tốt, do đó, những người xem có part.ready handlers đã biến các hình thức thành các hình thức ajax (thông qua jquery.form).

Tôi sẽ nghĩ rằng bạn có thể xử lý điều này trong mã gọi lại/mã mà chèn chế độ xem một phần vào phần vòm.

Chỉnh sửa: Nếu có trật tự, hiệu quả, được tổ chức tốt và hoạt động cho bạn thì tôi sẽ gắn bó với nó. Ý tưởng của việc có mọi thứ đẹp và nhỏ gọn vào một góc nhìn rõ ràng là hấp dẫn vì vậy tôi sẽ không quá quan tâm đến việc vi phạm bất kỳ thực hành tốt nhất nào. Mối quan tâm duy nhất của tôi là JS có thể được tái sử dụng, đó là trường hợp nếu bạn chèn cùng một tập lệnh vào nhau.Nhưng trong trường hợp này, có vẻ như bạn có một thỏa thuận tốt về việc phân chia sẽ xảy ra vì vậy tôi sẽ gắn bó với nó trừ khi bạn có thể khái quát hóa các tập lệnh của mình và đưa chúng vào phần còn lại của JS của bạn.

+0

Cảm ơn bạn đã suy nghĩ về điều này. Tôi cũng đã xem xét JSON, nhưng tôi muốn giữ phần javascript càng nhỏ càng tốt, đó là lý do tại sao tôi muốn hiển thị lượt xem trên máy chủ. Về câu hỏi của bạn: Một số chế độ xem một phần bao gồm biểu mẫu. Tôi muốn những người được ajax hình thức là tốt, do đó, những người xem có part.ready handlers đã biến các hình thức thành các hình thức ajax (thông qua jquery.form). –

+0

Lúc đầu, tôi đã xử lý này trong callback/code mà chèn xem một phần vào dom như bạn đề nghị. Tuy nhiên, điều này dẫn đến một tập lệnh lớn chứa nhiều hàm javascript tham chiếu đến các trang khác nhau. Tôi đã tái cấu trúc nó vào cách tiếp cận hiện tại của mình vì nó dường như không có cấu trúc với tôi. Bây giờ mã là kiểu dáng đẹp hơn (tôi có nhiều trình xử lý OnXXXPartialView ít hơn) và mã nằm gọn bên trong khung nhìn một phần mà nó thuộc về. –

+0

Tôi sẽ trả lời trong câu trả lời của tôi –

3

Cuối cùng - JavaScript được cho là nằm trong một tệp (vì mỗi http GET đều tốn một số thời gian quý báu) và được rút gọn. Các liên kết này có thể khiến bạn quan tâm: herehere.

Cách xử lý JS của bạn tạo ra một số chuyển dữ liệu không cần thiết - thay vì gửi JS, làm cho nó tĩnh, lưu trữ nó ở phía máy khách và tham số.

Đăng ở trên cung cấp gợi ý hay (JSON) cách tham số JS của bạn :)

+0

Điểm tốt, đã cho tôi một thời gian để nhận ra những gì bạn có nghĩa là mặc dù bởi vì tôi cho rằng câu hỏi ban đầu đã nói về "chứa" javascript chứ không phải là "bao gồm". Bạn nói đúng, một kịch bản bao gồm (src = script.js) sẽ là một điều xấu để làm trong tình huống đó và chắc chắn nhất sẽ là thứ mà bạn muốn tránh. –