2012-04-12 19 views
7

Tôi đã tải xuống số sample-project cho số latest-release của RequireJS. documentation implies bất kỳ thứ gì được tải của chúng được chuyển vào danh sách tham số của hàm liên quan (theo thứ tự tương ứng).Tại sao RequireJS không chuyển jQuery thành bí danh chức năng?

Vì vậy, tôi đã quyết định thử ... nhưng có vẻ như nó không hoạt động!

  • Firebug (tab net) cho thấy jQuery như được nạp: nên RequireJS obvioulsy đã làm phần đó thành công
  • Firebug (giao diện điều khiển tab) show '$ không phải là một chức năng'

Câu hỏi của tôi là : Tại sao không phải là bí danh nhận được dân cư?

MY mã trông như thế:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="Scripts/require.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) { 

      // jQuery is not passed-into the function, so the alias fails! 
      $(function() { 
       var stop = ""; 
      }); 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    </form> 
</body> 
</html> 

của họ MẪU trông giống như:

//Inside scripts/main.js 
require(["some/module", "a.js", "b.js"], function(someModule) { 
    //... 
}); 
+1

Bueller? Beuller? –

Trả lời

16

jQuery nên được nạp thông qua tên đặc biệt "jquery", nếu không nó đã giành' t đăng ký chính nó (kể từ khi jQuery sử dụng một định nghĩa có tên).

// create an alias that points to proper file 
require.config({ 
    paths : { 
    jquery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min" 
    } 
}); 

// require jquery usign the path config 
require(["jquery"], function ($) { 
    console.log($); 
}); 

Đó là lý do chính khiến đặt tên được xác định là chống mẫu và chỉ được sử dụng khi cần thiết (khi bạn có nhiều mô-đun bên trong cùng một tệp).

+0

Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn, cảm ơn bạn! Điều này đã thúc đẩy tôi NUTS! –

+0

cảm ơn bạn! câu trả lời duy nhất làm việc cho tôi để bao gồm một tập tin jQuery đứng một mình. – nirazul

0

Thư mục tập lệnh của bạn là 'Tập lệnh' hoặc 'tập lệnh'?

Bạn đang thực hiện yêu cầu cho "Scripts/require.js" cũng như cho "scripts/jQuery/Core/jquery-1.7.2.min". Hãy nhìn vào tab Net của Firebug ... Tôi đặt cược bạn đang tạo ra một 404 ở đó.

2

Hãy chắc chắn đọc "README.md" cho dự án mẫu RequireJS + jQuery. Có nhiều biến chứng với việc sử dụng jQuery mà bạn cần phải quyết định cách tốt nhất để giải quyết nó cho dự án của bạn trong quá trình thiết lập ban đầu. Một khi bạn đã tìm ra những gì tốt nhất cho bạn và thực hiện nó, mặc dù, nó không phải là một vấn đề một lần nữa.

Phần lớn các biến chứng cũng xuất phát từ thực tế là jQuery không phải là mô-đun AMD thực sự, chúng chỉ có một hack trong codebase để xác định nếu nó phát hiện hàm xác định có sẵn. Ví dụ, điều này có nghĩa là tên mô-đun jQuery sẽ luôn là "jquery" (lưu ý chữ thường 'q') trừ khi bạn tự quấn nó, vì vậy nếu bạn xác định đường dẫn cho nó trong cấu hình của bạn, bạn phải có khóa có tên "jquery" (một lần nữa, với chữ thường 'q') hoặc sẽ không khớp. Điều đó bit chúng tôi khi lần đầu tiên thiết lập RequireJS trên dự án của chúng tôi (chúng tôi đặt tên là chìa khóa "jQuery").

+0

Tôi sẽ ... cảm ơn người đàn ông! –

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