1

我在使用canJS和stealjs时遇到问题,我克隆了javascriptmvc的repo(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
});

它仍然有效,但是当我尝试在“依赖项”列表中添加“ canJS ”中的一些组件时(甚至使用该工具生成的 fixture.js ......因为它偷走了can.fixture)它只是停止工作并破坏了一切. 我也尝试过使用:

steal('that').then('this', function() {});

但我有同样的结果.....失败!有人有任何提示吗?

4

3 回答 3

1

好的,我发现了问题。stealjscanjs没有错,但是

canjs 只是加载它自己的 jquery 版本

那会破坏我的申请。现在我需要找到一种方法来分别加载canjs和jquery(我使用yii,一些扩展需要在某个时间加载jquery,所以不能等待canjs)。

于 2013-04-30T09:05:40.997 回答
0

问题是jQuery的版本还是依赖的顺序?

您可以通过stealconfig.js 配置steal 以使用另一个版本的jQuery 并管理任何依赖项。

可以在 github 存储库中找到一个示例:(此示例未显示依赖项,因此我在下面添加了一个) 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"
   }
});

注意:这是一个未经测试的示例,希望对您有所帮助。

于 2013-05-01T14:48:52.963 回答
0

我对stealJs也有问题我知道它可以很好地与JavascriptMVC一起使用,
现在我正在使用AMD requireJs进行依赖管理,它与canjs一起工作得很好。这是文档http://canjs.com/guides/using-require.html,希望对您有所帮助!

于 2014-06-23T10:02:09.503 回答