2011-12-05 24 views
37

Sự khác biệt giữa javascript khó chịu và kín đáo - bằng tiếng Anh đơn giản là gì. Brevity được đánh giá cao. Các ví dụ ngắn cũng được đánh giá cao.Sự khác biệt giữa javascript gây khó chịu và không phô trương

+0

bản sao có thể có của [Tại sao sử dụng onClick() trong HTML là thực tiễn không tốt?] (Http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice) –

+0

Một ("gây khó chịu") là một kiểu cũ (DOM 0) áp dụng các hành vi cho các phần tử. Cách khác ("không phô trương") là một phong cách được quảng cáo bởi John Resig (của danh tiếng jQuery). Cả hai đều có thể chấp nhận được –

Trả lời

32

Tách mối quan tâm. HTML và CSS của bạn không bị ràng buộc vào mã JS của bạn. Mã JS của bạn không phải là nội tuyến cho một số phần tử HTML. Mã của bạn không có một hàm lớn (hoặc không có chức năng) cho mọi thứ. Bạn có các hàm ngắn gọn, ngắn gọn.

Modular. Điều này xảy ra khi bạn tách riêng các mối quan tâm. Ví dụ: Hoạt ảnh canvas tuyệt vời của bạn không cần phải biết cách hoạt động của các vectơ để vẽ một hộp.

Đừng giết người nếu họ không cài đặt JavaScript hoặc không chạy trình duyệt mới nhất-- hãy làm những gì bạn có thể để làm giảm trải nghiệm một cách duyên dáng.

Không xây dựng những ngọn núi rác khi bạn chỉ cần làm gì đó nhỏ. Mọi người không ngừng phức tạp mã của họ bằng cách chọn lại các phần tử DOM, chuyển đổi HTML ngữ nghĩa và gửi ID được đánh số trong đó và những thứ lạ khác xảy ra do họ không hiểu mô hình tài liệu hoặc một số công nghệ khác-- các lớp trừu tượng "ma thuật" làm chậm mọi thứ xuống tốc độ rác và mang lại những ngọn núi trên cao.

+0

"Đừng xây dựng núi rác" - Bạn có thể đưa ra một ví dụ nhỏ hoặc trình diễn về điều này không? – Abdul

+1

Có phải là về việc thêm một cái gì đó như 'onkeypress =" someFilter(); "' trên mỗi trường văn bản riêng lẻ, trộn vào HTML thay vì sử dụng jQuery, và sử dụng nhiều bộ chọn và làm tất cả cùng một lúc? – Abdul

23

Không javascript trong dấu ấn lên là không phô trương:

<div id="informationHeader">Information</div> 

gây khó chịu:

<div onclick="alert('obstrusive')">Information</div> 
+7

Điều này hoàn toàn dựa trên quan điểm của lập trình viên: bạn có thể đặt mọi thứ vào một tệp JS riêng biệt và vẫn có một trang cực kỳ khó hiểu đối với người dùng ... – nnnnnn

+0

@nnnnnn StackOverflow là trang web dành cho các lập trình viên. – crmpicco

+0

@crmpicco - Vâng, tôi biết. Quan điểm của tôi là khái niệm "Javascript không phô trương" là nhiều hơn về tác động của nó đối với người dùng hơn là tác động của nó lên người lập trình. Người dùng không quan tâm liệu có JS trộn vào html hay không, họ chỉ quan tâm liệu trang web có hoạt động với trình duyệt của họ hay không. – nnnnnn

8
  1. Tách HTML và JavaScript (xác định JavaScript trong các tập tin JavaScript bên ngoài)
  2. suy thoái Graceful (quan trọng các phần của trang vẫn hoạt động với JavaScript bị vô hiệu hóa).

Để có giải thích dài, hãy kiểm tra Wikipedia page về chủ đề.

+0

Trang vẫn có thể giảm xuống một cách duyên dáng khi sử dụng trình xử lý nội tuyến DOM 0. –

+0

@ McMcDonald: Tôi không nói là họ không thể? Nhưng sau đó bạn phá vỡ nguyên tắc tách HTML và JavaScript – Matt

+0

Câu trả lời của bạn cần rõ ràng hơn sau đó. –

2

Để mở rộng câu trả lời của Mike: sử dụng hành vi UJS được thêm vào "sau".

<div id="info">Information</div> 

... etc ... 

// In an included JS file etc, jQueryish. 
$(function() { 
    $("#info").click(function() { alert("unobtrusive!"); } 
}); 

UJS cũng có thể bao hàm sự suy thoái nhẹ nhàng (loại yêu thích của tôi), ví dụ, phương tiện khác để có được các chức năng #info nhấp chuột, có lẽ bằng cách cung cấp một liên kết tương đương. Nói cách khác, điều gì xảy ra nếu không có JavaScript hoặc tôi đang sử dụng trình đọc màn hình, v.v.

+1

Tôi coi jQuery là khó chịu với JavaScript. Tôi thà chỉ thấy các sự kiện ở đó trong HTML tĩnh, vì chúng sẽ ở đó giống nhau trong DOM được tạo động. – austincheney

+0

@austincheney Điều đó không liên quan gì đến jQuery; UJS là trung lập khung. –

0

không phô trương - "không gây khó chịu; không dễ thấy, không phô trương hoặc kín đáo".

obtrusive - "có hoặc thể hiện một bố cục để phản đối, bằng cách áp đặt chính mình hoặc ý kiến ​​của người khác vào người khác."

ép - 'để lực đẩy (cái gì đó) về phía trước hoặc sau khi một người, đặc biệt là không bảo đảm hay lời mời'

Vì vậy, khi nói về việc áp đặt ý kiến ​​của một người, theo ý kiến ​​của tôi phần quan trọng nhất của không phô trương JavaScript rằng từ quan điểm của người dùng nó không cản trở, nghĩa là trang web sẽ vẫn hoạt động nếu JavaScript bị tắt theo cài đặt trình duyệt. Có hoặc không có JavaScript được bật trên trang web vẫn có thể truy cập được với những người đang sử dụng trình đọc màn hình, bàn phím và chuột không và các công cụ trợ năng khác. Có thể (có thể) trang web sẽ không được "ưa thích" đối với những người dùng như vậy, nhưng nó vẫn hoạt động.

Nếu bạn nghĩ rằng trong thuật ngữ "nâng cao tiến bộ", chức năng cốt lõi của trang web của bạn sẽ hoạt động cho mọi người bất kể họ truy cập nó như thế nào. Sau đó, đối với người dùng đã bật JavaScript và CSS (hầu hết người dùng), bạn tăng cường nó với các yếu tố tương tác hơn.

Yếu tố "không phô trương" quan trọng khác là "phân tách mối quan tâm" - một người lập trình quan tâm, chứ không phải người dùng, nhưng nó có thể giúp ngăn chặn mặt JavaScript của những thứ không phản đối về trải nghiệm của người dùng. Từ quan điểm của lập trình viên, tránh kịch bản nội tuyến không có xu hướng làm cho việc đánh dấu đẹp hơn và dễ dàng hơn để duy trì. Nó thường dễ dàng hơn nhiều để gỡ lỗi kịch bản mà không nằm rải rác trên một loạt các xử lý sự kiện nội tuyến.

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