StealJS和CanJS

时间:2013-04-30 04:39:29

标签: javascriptmvc canjs stealjs

我在使用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() {});

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

3 个答案:

答案 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)

我也知道stealJs的问题我知道它与JavascriptMVC一起工作,
现在我使用AMD requireJs进行依赖管理,它与canjs配合得很好。 这里是文档http://canjs.com/guides/using-require.html,我希望它能帮到你!