jQuery: действительно ли возможно присоединить поля/методы к интерфейсному объекту jQuery?

Во время разработки у вас будет сложная матрица версии проекта.

Но одним из подходов может быть передача версии / ветки проекта в качестве параметров процессу сборки 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
7
задан Outlaw Programmer 25 February 2009 в 22:20
поделиться

3 ответа

Вы не можете присоединить методы/свойства в них способ, которым Вы продемонстрировали, потому что, поскольку Вы сказали, объект 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

5
ответ дан 6 December 2019 в 21:20
поделиться

Вы на самом деле возвращаете объект 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();

Это - одна техника, что я знаком с и использовал успешно.

5
ответ дан 6 December 2019 в 21:20
поделиться

Я не совсем уверен, почему Вы разрабатываете свой плагин этот путь - Вы могли бы хотеть полагать, что что-то вроде предложения jonstjohn - кроме следующего должно быть подобно тому, что Вы просите:

jQuery.fn.extend({
    smartImage: function() {
        return {
            saveState: function() { /* save */ },
            loadState: function() { /* load */ }
        };
    }
});
2
ответ дан 6 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: