2
我在寫jquery插件。由於插件包含很多代碼,我決定將代碼分成幾個文件並使用require.js。我試圖實現兩件事情:使用r.js爲了優化require.js文件
- 能夠運行我的測試頁使用require.js與插件的分離版本,並且由此能夠調試代碼。
- 能夠使用require.js優化器(稱爲r.js)並從這幾個插件的文件創建一個優化(組合和縮小)的文件。
我的index.html包含:
<script data-main="js/site" src="js/vendor/require.js"></script>
我的JS/site.js包含:
require([
'jquery',
....
....
'main' //<---- main plugin file
], function($) {
$(function() {
$('#elem').photosGrid();
});
});
而且我main.js文件包含:
define([
'photos-grid' //<---- Class that initialized and build the plugin
], function(PhotosGrid) {
jQuery.fn.photosGrid = function(options) {
var photosGrid = new PhotosGrid(this, options);
this.data('photosGrid', photosGrid);
return this;
};
return jQuery;
});
在爲了配置r.js,我添加了build.js文件:
({
baseUrl: '.',
name: "main",
out: "main-built.js"
})
當我運行我的index.html時,我的插件效果很好。但是,當我運行node r.js
,我得到以下錯誤:
Error: Mismatched anonymous define() module
當我定義一個名字main.js:
define('module-name', ['photos-grid'], function(PhotosGrid) { .....
node r.js
回報沒有錯誤,但沒有輸出出來。此外,index.html不會加載main.js('photos-grid')的依賴關係,因此網站無法運行。
我在做什麼錯?我如何正確使用r.js?
你確定你通過了'-o'標誌? (按照http://requirejs.org/docs/optimization.html#basics)你沒有提到它,所以誰知道? – kryger
@ kryger:你是對的!謝謝!請爲此創建一個答案。 – Naor