2011-01-13 14 views
5

Vì tôi đã học cách viết các plugin của riêng mình trong jQuery, tôi thấy tôi bị cám dỗ khi tiếp cận javascript của mình theo cách đó bất cứ lúc nào tôi đang xây dựng một trang có bất kỳ sự phức tạp nào với nó. Rõ ràng là nó ngớ ngẩn khi chúng ta nói về 10 dòng mã, nhưng khi tôi sẽ xây dựng một trang với vài trăm dòng javascript (hoặc hơn), có vẻ như cách dễ nhất để:Tôi có bị cám dỗ khi cấu trúc nhiều mã jQuery của mình dưới dạng plugin không?

  • truyền dữ liệu (hoặc thậm chí chỉ cần tùy chọn) từ kịch bản PHP của tôi vào javascript - $("#myform").myPagePlugin({options}, {data});
  • Cung cấp cho tôi một "bậc thầy" đối tượng trong DOM để đính kèm dữ liệu của tôi để, thay vì một cái gì đó hacky như biến toàn cục
  • làm cho mã tái của tôi -Sử dụng sau
  • "Cắm" javascript của tôi vào trang theo cách quen thuộc

Tôi có tự đào mình vào hố nếu tôi bắt đầu thực hiện việc này không? Có cái gì tôi đang mất tích?

Trả lời

5

Chỉ trích duy nhất của tôi là bạn đang tạo một plugin jQuery có vẻ như bạn chưa bao giờ thực sự lên kế hoạch sử dụng lại. Điều này cho biết thêm chi phí cho việc chạy JavaScript mà jQuery chạy để khởi tạo một plugin khi mà chi phí trên không đáng giá vì nó sẽ không bao giờ được sử dụng nữa.

Thay vì một plugin jQuery, tại sao bạn không tạo đối tượng JavaScipt được đặt tên không gian? Ví dụ:

var mypage = {}; 
mypage.controller = function(){ 

} //your preferred JavaScript object notation here. 

Hoặc cách tiếp cận không gian tên này bạn đang gọi là "hacky"? Nếu vậy, tôi sẽ trân trọng không đồng ý.

+0

Thú vị. Vì vậy, chỉ cần làm cho một đối tượng trống rỗng, và sau đó đính kèm tất cả mọi thứ vào nó? Tôi chắc chắn không nghĩ rằng đó là hacky. – keithjgrant

+0

yup, sử dụng băm trong JS là vô cùng thuận tiện. –

+0

Một chút theo dõi. Tôi đã tìm thấy một bài viết tuyệt vời về "Mô-đun mô-đun" cho javascript. Có vẻ rất hữu ích: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth. Kết quả tương tự như phương pháp trên, nhưng nó cũng cho biết thêm khả năng xử lý các thuộc tính riêng/công cộng. – keithjgrant

1

Vấn đề duy nhất với băm trên Zalavsky là trong khi băm tạo không gian tên khá duyên dáng, nó không tạo ra phạm vi. Thông thường, bạn cần các biến tĩnh toàn mô-đun là không phải là có sẵn cho thế giới bên ngoài. Trong những trường hợp đó, tôi sẽ viết

var mypage = function() { 
    var some_module_static ; 
    return { 
    controller :function(){ 
     // use some_module_static here 
    } 
    }; 
}(); 

Bất cứ khi nào bạn không cần phạm vi riêng biệt, vâng, hãy sử dụng hàm băm.

Viết trình cắm bất cứ khi nào bạn viết mô-đun hữu ích về mặt khái niệm ngoài bất kỳ điều gì bạn đang làm tại thời điểm này.

+0

Điểm tốt trên băm. –

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