2012-05-03 16 views
17

Khi lần đầu tiên tôi đọc nguyên tắc unobtrusive JavaScript trong Chương trình giảng dạy chuẩn của Web, tôi nghĩ đó là một điều thực sự tuyệt vời.JavaScript không phô trương có lỗi thời không?

JavaScript không phô trương là triết lý lập trình hơn là kỹ thuật. Cho đến nay thành phần quan trọng nhất của nó là một ý thức rõ ràng về chức năng nào thuộc về lớp nào. Tất cả các chức năng trang web cực kỳ quan trọng cần được mã hóa bằng HTML thuần túy, nhưng khi bạn đã tạo cơ sở đó, bạn có thể thêm một lớp JavaScript trên cơ sở để cung cấp cho các trình duyệt hỗ trợ giao diện đẹp hơn, rõ ràng hơn, nhanh hơn.

Hơn nữa, không phô trương JavaScript:

  1. tách cấu trúc và hành vi, để làm cho mã của bạn sạch và bảo trì kịch bản dễ dàng hơn trình duyệt

  2. trước empts không tương thích

  3. làm việc với một lớp HTML thuần túy, ngữ nghĩa

Đối với dự án hiện tại của tôi, tôi sử dụng phương pháp này. Khi tôi tắt JavaScript cho một số loại công việc khác mà tôi phải làm Tôi ngạc nhiên khi có bao nhiêu trang web bị phá vỡ hoàn toàn mà không có JavaScript: thiếu chức năng, cũng như vắng mặt của rất nhiều thông tin quan trọng, không có gì cả DOM.

Đây là các trang web mạng xã hội đặc biệt. Không nên ngạc nhiên khi đây là trường hợp, thời gian phát triển và trải nghiệm người dùng được yêu cầu có thể quan trọng hơn nhiều so với khả năng truy cập.

Tôi vẫn tự hỏi bản thân mình, dù JavaScript không phô trương không phải là lỗi thời. Tôi có nghĩa là trình duyệt nào không hỗ trợ JavaScript đã là nguyên bản? Nó vẫn là một cách tiếp cận phù hợp cho năm 2012? Tôi bắt đầu nghi ngờ điều đó.

+14

Tôi nghĩ điều đó phụ thuộc vào loại trang web. Trang tin tức sẽ hiển thị tin tức mà không bật javascript. Tôi sẽ không mong đợi một trang web tương tác phong phú như google tài liệu hoặc facebook để làm việc. Quan trọng hơn, tôi sẽ không chi thêm tiền để tạo ra một trang web tương tác làm việc cho một tỷ lệ nhỏ những người tắt JavaScript. –

+1

@BenClayton phải là câu trả lời – Joseph

+0

Nhưng cơ sở người dùng nào không có JavaScript hiện nay? –

Trả lời

17

Có hai cách tiếp cận một trang web và việc sử dụng JS:

  1. JS như một nâng cao

    Những loại trang web được như "tài liệu" trong một cảm giác rằng họ là tương tự như báo, sách và thư. Bạn không cần các hiệu ứng lạ mắt để đọc và sử dụng nội dung.Và với điều này đến tăng cường tiến bộ: Xây dựng một chức năng cơ bản và thêm vào sự phức tạp mà không bị mất mục đích.

    Hầu hết các trang web (lớn) sử dụng lược đồ này để duy trì tính hữu ích của nó ngay cả khi sử dụng trình duyệt không có khả năng. Một ví dụ là StackOverflow, mà thậm chí hoạt động trên một trình duyệt dòng lệnh lynx!

    ______ 
    | JS | - JavaScript for (optional) enhancements 
    |------| 
    | CSS | - CSS for (optional) style 
    |------| 
    | HTML | - (mandatory) HTML with base content 
    '------' 
    
  2. JS như một nền tảng

    Đối với các ứng dụng web, đó là hợp lý (giống như bắt buộc) rằng họ là xây dựng dựa trên JS cho thời gian thực, nội dung động và chức năng trong khi HTML và CSS đóng vai trò quan điểm . Nó đồng nghĩa với các ngôn ngữ lập trình khác, nơi bạn có thể "không đầu" với chương trình của bạn (không có giao diện người dùng) như thư viện và plugin.

    suy thoái Graceful đi kèm với phương pháp này: "ngược chỉ hỗ trợ đến một mức độ nhất định, nếu không bạn sẽ có được không có gì cả"

    ____________ 
    | HTML | CSS | - (optional) HTML and CSS view 
    |------------| 
    |  JS  | - (mandatory) JS platform 
    '------------' 
    

Nó thường sôi xuống đến một vấn đề "Có một tài liệu hoặc một ứng dụng? "

3

Các công ty khác nhau có các cách tiếp cận khác nhau. Ví dụ: Google cho tìm kiếm của họ sử dụng javascript không phô trương làm giảm sự duyên dáng, nhưng đối với GMail, họ duy trì một trang web HTML riêng biệt mà họ đã phát triển sau phiên bản GMail JS.

Đối với tôi nó phụ thuộc vào

  1. phức tạp
  2. Chức năng,
  3. Chi phí
  4. người dùng bị tác động đếm

để quyết định xem có nên làm suy thoái Graceful sử dụng JS không phô trương hoặc để xây dựng một trang web chỉ dành riêng cho HTML hoặc bỏ qua cơ sở người dùng đó hoàn toàn.