Được rồi, chỉ cần gọi tôi là người giữ mật mã trên tất cả các hoại tử tôi làm nhưng tôi chưa bao giờ cảm thấy giá trị thực sự của điều này đã được hiểu đúng. Trong lịch sử, người ta đã khẳng định rằng "JavaScript không phô trương" hoặc, giữ cho JS của bạn ra khỏi HTML thông qua các thuộc tính của trình xử lý sự kiện HTML nội tuyến và các thẻ script không liên kết đến một tệp nhiều nhất có thể là một yếu tố chính rất lớn của:
- Mối quan tâm tiếp cận
- SEO
- Và tăng cường tiến bộ
DỐI TRÁ! (tốt, bây giờ họ sẽ)
Sự thật của vấn đề là, bạn có thể thực hiện JavaScript gây khó chịu về mặt kỹ thuật và vẫn rút được ba mục trên. Trừ khi bạn đang xây dựng nội dung HTML một cách linh hoạt, đó là một SEO lớn không có trong ngày.
Nhưng hãy dừng lại và suy nghĩ ... Về BẠN!
Thực sự, lợi ích lớn, chiến thắng lớn và được đánh giá cao nhất trong việc duy trì sự tách biệt luôn là lợi ích trực tiếp mà nhà phát triển nhận được từ nó. Bạn có thể có nhiều trình xử lý sự kiện như bạn muốn trên cùng một phần tử html cho cùng một sự kiện là thuận tiện. Điều đó có nghĩa là nếu một thẻ class="some_class"
luôn có một hành vi nhất định nhưng cũng có một số hành vi thưởng khi nó ở trong id="bonus_behavior"
div, chúng ta không phải bắt đầu lộn xộn với logic bên trong trình xử lý sự kiện được phép của mình để phân nhánh cho điều đó. Chúng tôi chỉ có thể thêm hoặc không thêm trình xử lý tùy thuộc vào ngữ cảnh.
Dễ đọc quá
Một lợi ích khác là mức độ dễ đọc. Đây là một mối quan tâm nghiêm trọng hơn khi các công cụ trình duyệt bao gồm thông báo lỗi độc quyền của IE cho bạn biết rằng có gì đó không ổn [object]
nhưng IMO, nó vẫn là một vấn đề lớn. CSS ở đây, JS ở đó và HTML là nơi cả họ và máy chủ gặp nhau. Với tất cả những điều đó kết hợp ở một nơi, thật hợp lý khi dựa vào các móc nối (ID, lớp và phân cấp) để tạo ra một lớp trừu tượng mà mọi thứ sử dụng để kết nối với HTML.
IMO, bạn càng có thể tách HTML, CSS và JS của mình ra một cách dễ dàng hơn, không chỉ đọc mà còn sửa đổi và hiểu những gì đang diễn ra. Tôi thấy một div trống với "Dynamic_combo_box" là một lớp và tôi có một ý tưởng hay là một cái gì đó đang thực hiện một lựa chọn ưa thích tải dữ liệu một cách linh hoạt. Tôi có một hướng dẫn về cách tìm thấy điều đó trong JS và CSS và nếu tôi gặp phải lớp học trong những mối quan tâm đó, tôi sẽ có ý tưởng hay về cách tìm và tìm thấy nó trong HTML.
Quá dễ dàng để làm cho thậm chí Sloppier
Và tất nhiên mức độ dễ đọc có xu hướng đi đôi với khả năng bảo trì. Khi bạn thực hiện mọi thứ trực tiếp bằng cách bỏ tất cả vào các thẻ script nơi HTML có liên quan xảy ra, thông thường, mọi người sẽ dễ dàng hơn khi cắt và dán tập lệnh đó vào HTML của một trang khác mà họ đang làm việc khi họ muốn có chức năng tương tự, điều đó có nghĩa là bây giờ bạn có một thứ rất có thể cuối cùng sẽ trở thành hai thứ giống nhau đến khó chịu nhưng không giống nhau 100% mà hành vi của họ có thể trở nên rắc rối theo thời gian bằng cách thách thức các kỳ vọng và yêu cầu thêm phân nhánh vô nghĩa để xử lý các trường hợp ngoại lệ. cái khác thì không.
Vì vậy, hành vi gian lận đối với các móc HTML đó khuyến khích sử dụng lại mã một cách thông minh. Nếu bạn cần phân nhánh hành vi cho một triển khai thay thế, bạn chỉ cần đi đến cùng chức năng và xử lý nó ở đó với phân cấp HTML hoặc có thể là dữ liệu kích hoạt một số hành vi thay thế. Đây là một điểm dừng dành cho bất kỳ ai muốn hiểu làm thế nào các yếu tố UI của một loại nhất định hoạt động và các loại cắt và dán đáng ghét lười biếng sẽ làm điều đúng đắn / dễ bảo trì hơn chỉ vì đó là điều dễ nhất làm ngay bây giờ và đó là cách tốt nhất để làm cho khả năng bảo trì xảy ra. Làm cho nó trở thành điều "duh" dễ dàng nhất ngay cả đối với những người không quan tâm đến việc do hoảng loạn hay thờ ơ.
Nhưng còn năm 2014 thì sao?
Nó có thể là một điểm hợp pháp rằng trong các ứng dụng một trang hiện đại, một số thứ dính vào đó có lẽ không nên bị mắc kẹt như giáo điều như chúng đã từng nhưng tin tôi khi tôi nói tôi không nghĩ tôi là người duy nhất đã được bán trên đó bởi vì nó cuối cùng làm cho công việc dễ dàng hơn. Tôi lười biếng theo cách (tôi hy vọng) chủ yếu là tốt. Tôi thích nó khi tôi chỉ phải thay đổi mọi thứ ở một nơi để thay đổi tất cả trên một ứng dụng, khi tôi chỉ phải tìm ở một nơi để tìm ra lỗi là gì và khi tôi có thể dễ dàng hiểu được cái quái gì là đang diễn ra và làm thế nào để sử dụng lại mã đó tốt nhất để làm một cái gì đó rất giống nhau.
Nó tốt như tách ra một DB hoặc lớp dữ liệu là tốt. Cuối cùng, đó là một lý do tại sao tôi không làm như vậy, tiết kiệm thời gian như dành tất cả năm phút để giặt đồ vào đêm hôm trước thay vì dành 10 phút cho việc đóng băng các võ sĩ của bạn và tiến hành kiểm tra mùi hoang tưởng vào sáng hôm sau.
Đối với tôi, chính những động lực ích kỷ đó luôn là điểm chính khiến tôi không chỉ quan tâm đến JS mà còn tách biệt các mối quan tâm về phong cách / hành vi / nội dung ngay cả khi WHAT-freaking-WG làm gì giải quyết những lo ngại đó theo những cách dễ hiểu và tuyệt vời / tiện dụng.
Bây giờ mọi người đang làm SPA và gần như ngớ ngẩn khi cố gắng thuyết phục doanh nghiệp rằng chúng ta nên quan tâm đến những người chạy mà không có JS (khả năng truy cập bây giờ, được cho là, được xử lý với nội dung do JS tạo ra), có vẻ như thế hệ tiếp theo của các nhà phát triển JS ít quan tâm về điều này nhưng IMO, vẫn có một chiến thắng ở đó và chủ yếu là cho bạn, nhà phát triển viết và duy trì công cụ này. Và thực sự, chiến thắng đó đáng lẽ phải luôn là điểm thiếu nhất nhưng chưa bao giờ vì một lý do nào đó vì cuối cùng nó mang lại lợi ích cho bạn và cả sản phẩm một cách tình cờ thông qua việc dễ dàng điều chỉnh / sửa đổi / gỡ lỗi.
Có bao giờ được không?
Vâng, tôi đoán vậy. Trong một ứng dụng ném đi dùng một lần cho một cuộc thi hoặc một cái gì đó có thể. Nhưng tôi vẫn sẽ làm điều đó chỉ vì tôi theo thói quen của nó và nó không thực sự khó hơn để làm.