2012-05-07 37 views
21

Tôi đang cố gắng tìm hiểu cách sử dụng require.js. Vì vậy, tôi đã tạo một trang HTML với các thẻ sau trong phần thân.ví dụ đơn giản để sử dụng require.js

<script type="text/javascript" data-main="../js/shirt" src="../js/require.js"></script> 
<script type="text/javascript"> 
    alert("Shirt color is " + shirt.color); 
</script> 

Các ../js/shirt.js có đoạn mã sau

define({ 
    color: "black", 
    size : "large" 
}); 

Làm thế nào tôi có thể sử dụng các cặp giá trị đơn giản trong html của tôi?

+0

tại sao bạn bao gồm 'require.js' như' ' thay vì sử dụng browserify? –

Trả lời

15

nội dung của tệp chính should be a require call. Ví dụ, bạn có một mô-đun values.js chứa:

define({ 
    color: "black", 
    size : "large" 
}); 

trong tập tin chính của bạn (shirt.js), tải values.js như một sự phụ thuộc (giả sử họ đang ở trong cùng một thư mục):

require(['values'],function(values){ 
    //values.color 
    //values.size 
}); 
+0

Tôi đã thay đổi 'alert ("Màu áo sơ mi là" + shirt.color);' dòng để 'yêu cầu (["áo sơ mi"], chức năng (áo sơ mi) {cảnh báo ("áo sơ mi màu sắc là" + shirt.color);});', và tôi có những gì tôi đang tìm kiếm. Cảm ơn ví dụ của bạn. – Ibrahim

+0

Một đề xuất. Tên tệp trong câu trả lời của bạn không tương ứng với tên tệp trong câu hỏi. Tốt hơn là sử dụng tên tệp trong câu hỏi..hoặc sử dụng hoàn toàn các tên tệp khác nhau. – dips

+0

Nhưng nếu bạn cần những giá trị đó sau thì sao? Bạn có phải tải lại chúng bằng một cuộc gọi yêu cầu mới không? – Kokodoko

18

Ngoài câu trả lời của Joseph, bạn cũng có thể viết các mô-đun khác phụ thuộc vào shirt (đó là nơi mà sức mạnh thực sự của RequireJS đến).

// shirt.js 
define({ 
    color: "black", 
    size : "large" 
}); 

// logger.js 
define(function (require) { 
    var shirt = require("./shirt"); 

    return { 
     logTheShirt: function() { 
      console.log("color: " + shirt.color + ", size: " + shirt.size); 
     } 
    }; 
}); 

// main.js 
define(function (require) { 
    var shirt = require("./shirt"); 
    var logger = require("./logger"); 

    alert("Shirt color is: " + shirt.color); 
    logger.logTheShirt(); 
}); 

Rồi HTML của bạn chỉ có thể

<script data-main="../js/main" src="../js/require.js"></script> 
+1

Tại sao main.js cũng có mã "xác định"? Không phải là mã này có nghĩa là để tạo mô-đun? – Kokodoko

33

Ngoài câu trả lời Domenic của thể bạn thích cách này bằng cách sử dụng chức năng xác định mà không sử dụng yêu cầu chức năng bên trong mô-đun.

// shirt.js 
define({ 
    color: "black", 
    size : "large" 
}); 

// logger.js 
define(["shirt"], function (shirt) { 
    return { 
     logTheShirt: function() { 
      console.log("color: " + shirt.color + ", size: " + shirt.size); 
     } 
    }; 
}); 

// main.js 
define(["shirt", "logger"],function (shirt, logger) {  
    alert("Shirt color is: " + shirt.color); 
    logger.logTheShirt(); 
}); 

Tôi thích cách này, nhưng đó chỉ là vấn đề về hương vị mà tôi đoán. (Tôi giả định rằng tất cả các tập lệnh đều nằm trong cùng một thư mục.)

+0

Tại sao main.js cũng có mã "xác định"? Không phải là mã này có nghĩa là để tạo mô-đun? – Kokodoko

+0

@Kokodoko: main.js là một mô-đun chính nó, và nó phụ thuộc vào hai mô-đun khác, nó không tạo ra chúng. Các mô-đun được "tạo" hoặc được xác định bằng cách sử dụng hàm xác định. –

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