2012-04-24 33 views
6

Tôi nghĩ rằng tôi hiểu kiểu mô-đun, nhưng tại sao một số ví dụ vượt qua JQuery như một tham số như thế này:Mô hình mô-đun - tại sao JQuery được truyền vào dưới dạng tham số?

Namespace.AppName = (function ($) { 
    // Code Here 
})(jQuery); 

Nếu tôi không vượt qua trong JQuery tôi vẫn có thể sử dụng thư viện Jquery tốt bằng cách làm $() cuộc gọi bên trong mô-đun. Vậy tại sao một số người làm điều này?

+0

trùng lặp có thể xảy ra [ký hiệu đô la jQuery ($) như là đối số chức năng?] (Http://stackoverflow.com/questions/4983150/jquery-dollar-sign-as-function-argument) –

Trả lời

16

Ý tưởng ở đây là bạn vượt qua jQuery làm $ với chức năng bên trong, đảm bảo rằng $ IS jQuery. Điều này thường được sử dụng để bảo vệ mã sử dụng $ đặc biệt là khi sử dụng jQuery cùng với các thư viện khác sử dụng $ như mootools.


Ví dụ, nếu bạn có mã này trong <head>

<!--load jQuery--> 
<script src="jquery.js"></script> 

<script> 
    //"$" is jQuery 
    //"jQuery" is jQuery 
</script> 

<!--load another library--> 
<script src="anotherlibrary.js"></script> 

<script> 
    //"$" is the other library 
    //"jQuery" is jQuery 

    //out here, jQuery code that uses "$" breaks 

    (function($){ 
     //"$" is jQuery 
     //"jQuery" is jQuery (from the outside scope) 

     //in here, jquery code that uses "$" is safe 

    }(jQuery)); 

</script> 
+0

Làm cho tinh thần! cảm ơn! – reach4thelasers

+0

"$" là thư viện khác khi anotherlibrary.js định nghĩa $ là toàn cầu. Tôi nghĩ –

1

Để sử dụng $ 'an toàn'. Hầu hết các nhà phát triển thoải mái hơn với '$' thay vì jQuery.

Khi sử dụng $ làm toàn cầu, nó có thể xung đột với các thư viện JS khác.

0

Điều này nếu để đảm bảo rằng không gian tên/phạm vi của bạn sử dụng $ là jQuery và không phải các thư viện JS khác như Prototype, cũng sử dụng $.

1

Điều này là để bạn có thể sử dụng phím tắt $ as cho jQuery. Điều này đôi khi có thể va chạm với các thư viện khác nếu bạn không đóng gói nó như thế này.

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