Есть ли инверсия управляющих структур для javascript? - PullRequest
16 голосов
/ 15 сентября 2009

Есть ли инверсия управляющих структур для javascript?

Ближайший доступный ответ о стековом потоке, который я смог найти, находится здесь: Как правильно соединить вместе 2 объекта javascript? . Это выглядит как хорошее начало, но я подумал, что смогу найти что-то с более длинной историей разработки.

Я сам использовал только Виндзорский замок, и мне действительно не хватает его в стране веб-клиентов.

Ответы [ 12 ]

4 голосов
/ 15 сентября 2009

Я искал последний год и наткнулся на Белка-IOC . Было что-то, что мне не нравилось в этом - я думаю, что он поддерживал только экземпляры в стиле singleton

Белка - это контейнер IoC реализовано в Javascript для продвижения лучшее использование архитектуры и шаблоны в браузерном Javascript приложения

Я начал писать свое собственное и довольно далеко (инжекция в конструктор и установщик, значения и ссылки, поддержка синглтонов, тесты JsUnit), но мне это никогда не требовалось в моем приложении. Возможно, мне придется проверить проект Люка. Для справки, вот пример формата конфигурации, с которым я столкнулся.

var iocConfig = {
  "a" : { Type : A },
  "b1" : { Type : B, Props : [{Name : 'Letter', Ref : "a"}]  },
  "b2" : { Type : B, Props : [{Name : 'Letter', Val : "a"}]  },
  "c2" : { Type : C, Args : [{Ref : "a"}, {Val : "a"}]  },
  "d" : { Type : D, Props : [{Name : 'Letter', Ref : "a"}]  },
  "date" : { Type : Date, Props : [{Name : 'FullYear', Val : 2008}, {Name : 'Month', Val : 0}, {Name : 'Date', Val : 1}]  },
  "array3" : { Type : Array, Args : [{Val : 3}]  },
  "number1" : { Type : Number, Args : [{Val : 1}]  },
  "string1" : { Type : String, Args : [{Val : "1"}]  },
  "s-true" : { Type : S, Singleton : true},
  "s-false" : { Type : S, Singleton : false}
};
4 голосов
/ 15 сентября 2009

Я начал писать тот, который так и не дошел до финиша. Не уверен, буду ли я когда-либо, поскольку накладные расходы, вероятно, не стоят того. если вам интересно, это по адресу: http://code.google.com/p/jasproject/wiki/JasFac (это часть IoC, полный набор по http://code.google.com/p/jasproject/)

Библиотека макетов довольно полна (хотя ожиданий нет, на данный момент я просто использую утверждения на макетах / заглушках), но отсутствует инфраструктура модульного тестирования. Часть IoC довольно полная, но может иметь несколько ошибок (хотя не думаю)

Не стесняйтесь использовать его и / или внести свой вклад, я могу помочь там, где вам нужно.

РЕДАКТИРОВАТЬ: больше использования можно увидеть в модульных тестах для jasfac: https://jasproject.googlecode.com/svn/trunk/Jas.Tests/JasFacTests.js

3 голосов
/ 07 августа 2010

Я собрал простой легкий контейнер ioc, названный его JsfIoc.

http://github.com/fschwiet/JsfIoc

1 голос
/ 14 января 2013

Извлечение Inverted http://philmander.github.com/inverted/, упакованный Javascript IOC контейнер, который я создал. Он работает поверх AMD в браузере, а также работает с Node.

Используемый совместно с AMD, Inverted использует отдельный файл конфигурации, чтобы выразить, как создаются экземпляры классов и как они взаимодействуют. Как только эти значения по умолчанию и отношения были определены, может быть создан контекст приложения и могут использоваться экземпляры классов.

http://dailyjs.com/2013/01/04/controldeck-xlsx-inverted/

0 голосов
/ 06 октября 2015

Попробуйте canDI . Это простая библиотека внедрения зависимостей и создания объектов. Вы можете создавать синглтоны, экземпляры и переменные, которые автоматически регистрируются при создании.

https://github.com/bflemi3/canDI

0 голосов
/ 11 мая 2015

У меня есть контейнер create и IoC для приложений JavaScript, пожалуйста, проверьте его на http://blog.wolksoftware.com/introducing-inversifyjs

0 голосов
/ 30 мая 2014

Мы создали простой контейнер JavaScript IoC с именем hilary.js: https://github.com/Acatar/hilaryjs.

С помощью hilary вы можете регистрировать и разрешать услуги и фабрики. Он также поддерживает дочерние контейнеры, если вам нужно или вы хотите охватить ваши контейнеры.

EDIT Я добавил примеров с использованием hilary , а также пример достижения внедрения зависимостей с помощью require.js :

0 голосов
/ 22 июня 2012

Попробуйте настой. Это довольно мощная среда IoC JS. Используется парой исследовательских центров в университетах Торонто и Беркли Infusion

Страница проекта GitHub с дополнительной информацией можно найти здесь Страницы Infusion GitHub

0 голосов
/ 10 февраля 2012

Другой (более новый) вариант - requireJS (http://requirejs.org/).

)
0 голосов
/ 24 января 2012

Вы можете посмотреть на эту простую библиотеку: fcjs Он очень маленький, но может быть мощным в отделении вашего кода. Это вдохновлено структурой Swiz AS3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...