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"
}
});
Примечание: это непроверенный пример, надеюсь, это поможет.