我在使用canJS和stealjs时遇到问题,我已经克隆了javascriptmvc的回购(3.3使用canJS)。现在我有了这个文件夹结构
/js
/can
/documentjs
/funcunit
/plugins
.
.
.
在我的应用程序的另一部分中,我有一个“独立模块”,例如布局(使用脚手架工具生成)。 我在我的页面中使用“ js / steal / steal.js?path / to / module / layout ”加载此模块并且它可以正常工作。如果我在我的 layout.js 中偷了一些jquery插件(例如位于主js文件夹中),如下所示:
steal('plugins/jqueryplugin.js', 'plugins/jqueryplugin.css', function() {
// my code here
});
它仍然可以工作,但是当我尝试添加“dependecies”列表中的一些组件来自“ canJS ”(甚至使用该工具生成的fixture.js ...因为它stoles can.fixture )它停止工作并打破一切。我也尝试过使用:
steal('that').then('this', function() {});
但我有相同的结果.....失败!有人有任何提示吗?
答案 0 :(得分:1)
好的,我发现了问题。 stealjs 和 canjs 没有任何问题,但
canjs只加载自己的jquery版本
这将破坏我的申请。现在我需要找到一种方法来单独加载canjs和jquery(我使用yii和一些扩展需要在某个时间加载jquery所以不能等待canjs)。
答案 1 :(得分:0)
问题是jQuery的版本还是依赖的顺序?
您可以通过stealconfig.js配置steal以使用其他版本的jQuery并管理任何依赖项。
可以在github repo中找到一个例子:(这个例子没有显示依赖关系所以我在下面添加了一个) https://github.com/bitovi/steal/blob/master/stealconfig.js
steal.config({
map: {
"*": {
"jquery/jquery.js": "jquery", // Map to path
"bootstrap/bootstrap.js": "bootstrap",
"can/util/util.js": "can/util/jquery/jquery.js"
}
},
paths: {
"jquery": "can/lib/jquery.1.8.3.js", // Path to jQuery
"bootstrap": "lib/bootstrap.js"
"yui/yui.js" : "can/lib/yui-3.7.3.js",
},
shim : {
jquery: {
exports: "jQuery"
},
bootstrap: { // A dependency example
'deps': ['jquery']
}
},
ext: {
js: "js",
css: "css",
less: "steal/less/less.js",
coffee: "steal/coffee/coffee.js",
ejs: "can/view/ejs/ejs.js",
mustache: "can/view/mustache/mustache.js"
}
});
注意:这是一个未经测试的例子,希望这有帮助。
答案 2 :(得分:0)