【问题标题】:StealJS and CanJSStealJS 和 CanJS
【发布时间】:2013-04-30 04:39:28
【问题描述】:

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

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

【问题讨论】:

    标签: javascriptmvc canjs stealjs


    【解决方案1】:

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

    canjs 只加载它自己的 jquery 版本

    这会破坏我的应用程序。现在我需要找到一种方法来分别加载canjs和jquery(我使用yii并且一些扩展需要在特定时间加载jquery所以不能等待canjs)。

    【讨论】:

      【解决方案2】:

      问题是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"
         }
      });
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多