Phi*_*hix 5 javascript dojo js-amd
我开始尝试围绕requirejs和新的Dojo AMD结构,但我有一些早期测试的问题:
CG/signup.js:
define(['dojo/_base/fx', 'dojo/dom'], function(fx, dom){
return function(){
this.hidePreloader = function(id){
var preloader = dom.byId(id);
fx.fadeOut({node : preloader}).play()
}
}
})
Run Code Online (Sandbox Code Playgroud)
这很好用.在master cg.js文件中:
require(['dojo/_base/kernel', 'dojo/_base/loader'])
dojo.registerModulePath('cg', '../cg')
require(['cg/signup', 'dojo/domReady!'], function(Signup){
var sp = new Signup();
sp.hidePreloader('preloader')
})
Run Code Online (Sandbox Code Playgroud)
巴姆.完成.但是,在使用Simplified CommonJS Wrapper结构时:
define(function(require){
var fx = require('dojo/_base/fx'),
dom = require('dojo/dom');
return function(){
this.hidePreloader = function(id){
var preloader = dom.byId(id);
fx.fadeOut({node : preloader}).play()
}
}
})
Run Code Online (Sandbox Code Playgroud)
我收到一个undefinedModule错误.它似乎来自这dojo/_base/fx条线,但我不知道为什么.
UPDATE
为了澄清.
index.html脚本
<script type="text/javascript" src="js/dojo/dojo.js.uncompressed.js" data-dojo-config="isDebug:true,async:true"></script>
<script type="text/javascript" src="js/cg.js"></script>
Run Code Online (Sandbox Code Playgroud)
cg.js
require(['dojo/_base/kernel', 'dojo/_base/loader'])
dojo.registerModulePath('cg', '../cg')
require(['cg/signup', 'dojo/domReady!'], function(signup){
signup.testFunc()
})
Run Code Online (Sandbox Code Playgroud)
JS/CG/signup.js
define(['require', 'exports'], function(require, exports){
var dom = require('dojo/_base/kernel');
// Any other require() declarations (with very very few exceptions like 'dojo/_base/array throw undefinedModule errors!!!
// without any error causing requires, this works fine.
exports.testFunc = function(){
alert("hello")
}
})
Run Code Online (Sandbox Code Playgroud)
dojo 完全支持简化的 CommonJS Wrapper 格式。但是,有一个前提条件......您必须没有依赖项数组。
define(function (require, exports, module) {
var fx = require('dojo/_base/fx'),
dom = require('dojo/dom');
// continue...
});
Run Code Online (Sandbox Code Playgroud)
这不会起到同样的作用
define(['require', 'exports', 'module'], function (require, exports, module) {
var fx = require('dojo/_base/fx'),
dom = require('dojo/dom');
// continue...
});
Run Code Online (Sandbox Code Playgroud)
这也不会...
// in this case require, exports and module will not even exist
define([], function (require, exports, module) {
var fx = require('dojo/_base/fx'),
dom = require('dojo/dom');
// continue...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2331 次 |
| 最近记录: |