Я создал нечто похожее на это год назад. На самом деле, я нашел эту тему путем поиска, если это что-то новое в этой области. Вы можете увидеть, что я создал здесь: https://github.com/thiagomata/CanvasBox/blob/master/src/main/New.js
Мой проект, почти 100% ООП. Итак, я использовал этот факт, чтобы сфокусировать свое решение. Я создаю этот «Класс» с именем «Новый», к которому привыкли, сначала загружаю, а потом копирую объекты.
Вот пример того, кто его использует:
var objSquare = New.Square(); // Square is loaded and after that instance is created
objSquare.x = objBox.width / 2;
objSquare.y = objBox.height / 2;
var objSomeExample = New.Stuff("some parameters can be sent too");
В этой версии я не использую некоторые json со всеми позициями файла js. Отображение является хардкорным, как вы можете видеть здесь:
New.prototype.arrMap = {
CanvasBox: "" + window.MAIN_PATH + "CanvasBox",
CanvasBoxBehavior: "" + window.MAIN_PATH + "CanvasBoxBehavior",
CanvasBoxButton: "" + window.MAIN_PATH + "CanvasBoxButton",
// (...)
};
Но сделайте это более автоматическим, я думаю, что использовать gulp или grunt - это не так сложно.
Это решение было создано для использования в проекте. Таким образом, коду могут потребоваться некоторые изменения, чтобы его можно было использовать в любом проекте. Но может быть началом.
Надеюсь, это поможет.
Как я уже говорил, это все еще рабочий прогресс. Но я создал более независимый модуль, который использует gulp для его обновления.
Все магические очереди можно найти в этих ссылках:
https://github.com/thiagomata/CanvasBox/blob/master/src/coffee/main/Instance.coffee
https://github.com/thiagomata/CanvasBox/blob/master/src/node/scripts.js
https://github.com/thiagomata/CanvasBox/blob/master/gulpfile.js
Особый взгляд должен быть в этих строках Instance.coffee
###
# Create an instance of the object passing the argument
###
instaceObject = (->
ClassElement = (args) ->
window[args["0"]].apply this, args["1"]
->
ClassElement:: = (window[arguments["0"]])::
objElement = new ClassElement(arguments)
return objElement
)()
Эта строка позволяет мне инициализировать экземпляр некоторого объекта после загрузки его файла. Как используется в методе создания:
create:()->
@load()
return instaceObject(@packageName, arguments)