Во время разработки у вас будет сложная матрица версии проекта.
Но одним из подходов может быть передача версии / ветки проекта в качестве параметров процессу сборки Docker. Создайте пользовательский процесс сборки докера, в котором вы можете создавать несколько проектов в виде отдельных образов докера по одному на проект. Для образа приложения Docker Dockerfile
используйте многоступенчатый компоновщик и используйте все изображения проекта для копирования библиотек в соответствующие каталоги.
Отдельные изображения, такие как:
|--Master_Web_App.sln
| |
| app.csproj -> app-dockerimage
|
|--projectA.sln
| |
| projectA-1.csproj -> projectA-1-dockerimage
| |
| projectA-2.csproj -> projectA-2-dockerimage
|
|--projectB.sln
|
projectB-1.csproj -> projectB-1-dockerimage
|
projectB-2.csproj -> projectB-2-dockerimage
Главное изображение докера:
# app docker image
FROM projectA-1-dockerimage as projectA-1
FROM projectA-2-dockerimage as projectA-2
FROM projectB-1-dockerimage as projectB-1
FROM projectB-2-dockerimage as projectB-2
FROM BASE_IMAGE
# other steps
#Build process app.dll
COPY FROM --projectA-1 wwwroot/app/bin/projectA-1.dll
COPY FROM --projectA-2 wwwroot/app/bin/projectA-2.dll
COPY FROM --projectB-1 wwwroot/app/bin/projectB-1.dll
COPY FROM --projectB-2 wwwroot/app/bin/projectB-2.dll
Вы не можете присоединить методы/свойства в них способ, которым Вы продемонстрировали, потому что, поскольку Вы сказали, объект jQuery является просто оберткой вокруг любых элементов DOM, которые это содержит. Можно, конечно, присоединить методы/свойства к нему, но они будут не сохраняться, когда они будут выбраны jQuery снова.
var a = $('.my-object');
a.do_something = function(){ alert('hiya'); }
a.do_something(); // This alerts.
var b = $('.my-object');
b.do_something(); // Freak-out.
Если Вы хотите, чтобы метод существовал на объекте jQuery при восстановлении его во второй раз, когда ему нужно присвоить jQuery.fn
. Таким образом, Вы могли определить свой вторичный метод, присвоить его jQuery.fn и использовать установку данных jQuery для поддержания состояния для Вас...
$.fn.setup_something = function()
{
this.data('my-plugin-setup-check', true);
return this;
}
$.fn.do_something = function()
{
if (this.data('my-plugin-setup-check'))
{
alert('Tada!');
}
return this;
}
var a = $('.my-object').setup_something();
a.do_something(); // Alerts.
$('.my-object').do_something(); // Also alerts.
Я предлагаю, чтобы Вы посмотрели на http://docs.jquery.com/Internals/jQuery.data и http://docs.jquery.com/Core/data#name
Вы на самом деле возвращаете объект jQuery в smartImage () функция. Это - корректный способ записать плагин jQuery, так, чтобы можно было объединить это в цепочку с другими функциями jQuery.
Я не уверен, существует ли способ сделать то, что Вы хотите. Я рекомендовал бы следующее:
(function($) {
var smartImageSave = function() { return this.each(function() { } ); };
var smartImageLoad = function() { return this.each(function() { } ); };
$.fn.extend( { "smartImageSave":smartImageSave,
"smartImageLoad":smartImageLoad });
});
var $smart = $("img:first");
$smart.smartImageSave();
$smart.smartImageLoad();
Это - одна техника, что я знаком с и использовал успешно.
Я не совсем уверен, почему Вы разрабатываете свой плагин этот путь - Вы могли бы хотеть полагать, что что-то вроде предложения jonstjohn - кроме следующего должно быть подобно тому, что Вы просите:
jQuery.fn.extend({
smartImage: function() {
return {
saveState: function() { /* save */ },
loadState: function() { /* load */ }
};
}
});