Я пытаюсь создать онлайн интерактивный тестовый стенд для программирования js. У меня есть окно кода и целевой iframe, в который код загружается для выполнения. Я оборачиваю код в html и загружаю его в iframe. Проблема в том, что код, который я хочу протестировать, обычно загружается через requirejs с использованием параметра data-main. Оказывается, код нужно загрузить из отдельного файла, чтобы я не мог включить его в сам html.
Что работает, но не помогает мне, так это создание файла на сервере для использования в качестве цели параметра data-main и отправка html в iframe, который требует requirejs, а затем загружает мой код.
HTML:
<html>
....
<script type="text/javascript" src="lib/requirejs/require.js" data-main="src/requireConfigTest"></script>
....
</html>
содержимое requireConfigTest.js:
/*globals require*/
require.config({
shim: {
},
paths: {
famous: 'lib/famous',
requirejs: 'lib/requirejs/require',
almond: 'lib/almond/almond',
'famous-polyfills': 'lib/famous-polyfills/index'
}
});
// this is the injection point where the dynamic code starts
define(function (require,exports,module) {
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var mainContext = Engine.createContext();
var surface = new Surface({
size: [100, 100],
content: "Hello World",
classes: ["red-bg"],
properties: {
textAlign: "center",
lineHeight: "20px"
}
});
alert('hi');
mainContext.add(surface);
});
//this is the end of the dynamic code
Это требует записи динамического кода обратно на сервер, а не разумного решения. Я пытаюсь реализовать что-то вроде этого...
HTML:
<html>
....
<script type="text/javascript" src="lib/requirejs/require.js"</script>
<script type="text/javascript">
/*globals require*/
require.config({
shim: {
},
paths: {
famous: 'lib/famous',
requirejs: 'lib/requirejs/require',
almond: 'lib/almond/almond',
'famous-polyfills': 'lib/famous-polyfills/index'
}
});
// this is the injection point where the dynamic code starts
define(function (require,exports,module) {
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var mainContext = Engine.createContext();
var surface = new Surface({
size: [100, 100],
content: "Hello World",
classes: ["red-bg"],
properties: {
textAlign: "center",
lineHeight: "20px"
}
});
alert('hi');
mainContext.add(surface);
});
//this is the end of the dynamic code
</script>
Это не удается с сообщением:
Неперехваченная ошибка: несоответствие анонимного модуля define(): function (require, exports, module) {...
Я надеюсь либо найти способ переформатировать приведенный выше код во втором теге script, либо найти способ передать фактическое содержимое requireConfigTest.js через data-main вместо передачи имени загружаемого файла.
Любая помощь здесь будет принята с благодарностью.