StealJS и CanJS

У меня проблемы с использованием canJS вместе со stealjs, я клонировал репозиторий javascriptmvc (3.3 использую canJS). Теперь у меня есть эта структура папок

/js
   /can
   /documentjs
   /funcunit
   /plugins
   .
   .
   .

В другой части моего приложения у меня есть "автономный модуль", например, макет (генерируется с помощью инструмента скаффолдинга). Я загружаю этот модуль, используя "js / steal / steal.js? Path / to / module / layout" внутри моей страницы, и он работает. Если я украл некоторые плагины jquery (например, расположенные в главной папке js) внутри моего layout.js примерно так:

steal('plugins/jqueryplugin.js', 'plugins/jqueryplugin.css', function() {
    // my code here
});

это все еще работает, но когда я пытаюсь добавить в список "зависимостей" какой-то компонент из "canJS" (даже fixture.js, сгенерированный с помощью инструмента... потому что он украл can.fixture), он просто перестает работать и ломает все, Я также пытался использовать:

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

Но у меня такие же результаты..... не удалось!!! У кого-нибудь есть намеки?

3 ответа

Решение

Хорошо, я нашел проблему. Нет ничего плохого в stealjs и canjs, но

Canjs просто загрузить свою собственную версию JQuery

это сломает мое заявление. Теперь мне нужно найти способ загружать canjs и jquery отдельно (я использую yii, и в некоторых расширениях нужно загружать jquery в определенное время, поэтому я не могу ждать canjs).

У меня тоже были проблемы со stealJs, я знал, что это хорошо работает с JavascriptMVC,
теперь я использую AMD requireJs для управления зависимостями, и он отлично работает с canjs. вот документация http://canjs.com/guides/using-require.html, я надеюсь, что она поможет вам!

Является ли проблема версией jQuery или порядком зависимостей?

Вы можете настроить steal через stealconfig.js для использования другой версии 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"
   }
});

Примечание: это непроверенный пример, надеюсь, это поможет.

Другие вопросы по тегам