Trước hết, một vài điều:
Một cách khác để xem JavaScript là 1 triệu và 1 điều bạn có thể làm với chức năng như một cấu trúc. Đó là tất cả nếu bạn tìm kiếm nó. Nó không bao giờ xa chức năng.
Điều đó tác giả trình cắm thêm jQuery là khủng khiếp. Tôi không biết tại sao họ lại ủng hộ điều đó. Các tiện ích mở rộng $ phải là công cụ sử dụng chung mà $ đã có các phương thức tiện ích hoàn chỉnh không được xây dựng tốt. Đây là một công cụ chuẩn hóa DOM-API. Nó được sử dụng tốt nhất được chôn trong các đồ vật của riêng bạn. Tôi không thấy sự hấp dẫn của việc sử dụng nó như một kho lưu trữ thư viện UI đầy đủ.
Các gói trên Web phía khách hàng là vô nghĩa
Điều cá nhân tôi không thích về các gói trên web phía khách hàng là về cơ bản chúng tôi đang giả vờ rằng chúng tôi đang làm một việc mà chúng tôi thực sự không làm. Trong một bài viết .NET webforms và gobs-of-horrifying-Stuff-that-never-pans-out-from-our-Java-friends, tôi thà nghĩ về một đống HTML với các tài nguyên được liên kết như những gì nó thực sự là và không cố gắng xoa dịu các nhà phát triển ứng dụng hệ điều hành mới chống lại việc học bằng cách giả vờ đó là một cái gì đó khác. Trong JS trên web phía máy khách, không có gì bị chặn "nhập khẩu" khi làm điều gì đó khủng khiếp với Ajax hoạt động trong sự thờ ơ của bộ nhớ đệm trình duyệt, điều mà vâng, nhiều người đã cố gắng làm. Tất cả những gì quan trọng đối với trình duyệt là nó đã được tải vào và diễn giải hoặc không. Chúng tôi không có thêm mã được lưu trữ trên máy khách ở đâu đó có sẵn để sử dụng "chỉ trong trường hợp" vì những lý do tốt # 1 là tôi vừa mô tả một phụ thuộc bổ trợ trình cắm và trình duyệt cho các ứng dụng web vì hiện tượng nhìn chung không hoạt động tốt lắm. Chúng tôi muốn có web ngay bây giờ. Không phải sau khi Adobe hay Sun hoàn thành cập nhật lần thứ ba trong tuần này.
Ngôn ngữ có những gì nó cần cho cấu trúc
Các đối tượng JS có tính đột biến cao. Chúng ta có thể phân nhánh các không gian tên ở bất kỳ mức độ nào mà chúng ta thấy hữu ích để làm như vậy và nó rất dễ thực hiện. Nhưng vâng, đối với bất cứ điều gì có thể sử dụng lại, bạn phải bám vào thư mục gốc của bất kỳ thư viện nào trên không gian toàn cầu. Tất cả các phụ thuộc đều được liên kết và tải cùng một lúc, vì vậy quan điểm của việc làm gì khác là gì? Điểm tránh không gian tên toàn cầu không phải là bất cứ điều gì xấu. Đó là quá nhiều thứ xấu vì bạn có nguy cơ va chạm không gian tên hoặc vô tình ghi đè các tính năng ngôn ngữ cốt lõi.
Chỉ vì nó phổ biến không có nghĩa là chúng ta đang làm đúng
Bây giờ khi bạn thấy tất cả điều này trên một ứng dụng web phía khách hàng:
(function(){
//lots of functions defined and fired and statement code here
})()
Vấn đề không phải là chúng ta thiếu công cụ để cấu trúc một ứng dụng, vấn đề là mọi người không định giá cấu trúc. Đối với các trang web vứt bỏ tạm thời 2-3 trang tại một cơ quan thiết kế, tôi thực sự không có vấn đề gì với điều đó. Nơi nó trở nên xấu xí là khi bạn phải xây dựng một thứ gì đó có thể bảo trì và dễ đọc và dễ sửa đổi.
Nhưng khi bạn đến nơi chỉ cần thực hiện tất cả các đối tượng và nhà máy có thể sử dụng lại và có thể một hoặc hai bình tạm thời mới có thể len lỏi vào quá trình đó, thật tiện lợi.
Nhưng có triển khai JS với các gói / mô-đun
Hãy nhớ rằng trong Node.js, nơi những thứ như vậy có ý nghĩa hơn nhiều, chúng có các mô-đun. JS, giả sử chúng ta có thể tránh uber-config-hell gây khó khăn cho các ngôn ngữ khác, là điều duy nhất trong phương trình và mỗi tệp được thực thi là phạm vi riêng biệt của nó. Nhưng trên một trang web, liên kết một tệp js tự nó là câu lệnh nhập. Việc nhập nhiều hơn một cách nhanh chóng chỉ là lãng phí thời gian và tài nguyên vì việc lấy tài nguyên đòi hỏi nhiều nỗ lực hơn là chỉ cần thêm liên kết vào tệp khi bạn cần chúng biết rằng chúng sẽ được lưu trong bộ nhớ cache nếu một trang khác cần lại chúng. Vì vậy, đang cố gắng phân tách không gian toàn cầu bằng cách làm bất cứ điều gì khác ngoài việc tạo các nhà máy đối tượng bộ điều hợp như jQuery hoặc các đối tượng truyền thống hơn bao gồm một tập hợp lớn các nhiệm vụ trong một miền nhất định trong khi chiếm một vị trí trên toàn cầu. Cóhttp://wiki.ecmascript.org/doku.php?id=harmony:modules
Vì vậy, không có gì sai với những người tự động sử dụng để tránh ô nhiễm không gian tên toàn cầu khi có lý do chính đáng để sử dụng những thứ đó (thường xuyên hơn là không có). Và chúng ta có các thuộc tính tương đương riêng tư liên tục trong các đối tượng của mình (chỉ cần xác định một var trong hàm tạo và không hiển thị nó như một thuộc tính).
Thực tế là chúng ta CÓ THỂ làm những việc như vậy, tuy nhiên, thật tuyệt vời. Việc sử dụng nhiều là một dấu hiệu cho thấy các nhà phát triển JS vẫn đang trưởng thành, nhưng đó không phải là lỗ hổng trong ngôn ngữ đối với bất kỳ ai không cố gắng áp dụng một mô hình vào web phía khách hàng mà không có ý nghĩa ở đây.