Как изменить файл JavaScript, который добавляет функцию к $ .fn для использования requirejs?

0

У меня есть файл javascript, который имеет

$.fn.comments = function (method) {
    if (methods[method]) {
        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
    } else if (typeof method === 'object' || !method) {
        return methods.init.apply(this, arguments);
    } else {
        $.error('Method ' + method + ' doesn not exists in jQuery.comments');
        return null;
    }
};

Я видел intro requirejs tutorials, чтобы возвращать функции из модуля.

Но этот javascript добавляет функцию в $.fn, как мне изменить этот файл, чтобы я мог использовать requirejs?

Теги:
requirejs

2 ответа

0
Лучший ответ

Легкий подход:

define(
  ['jQuery'],
  function ($) {
     $.fn.comments = .. /* do side effects as per the original */;
     return {
       /* ehh, others don't get a useful return,
          but we did our side-effect work upon jQuery (via $.fn) above */
     };
  });

Можно также вернуть что-то, если этот модуль имеет значение, которое может использоваться как что-то полезное в зависимом модуле, хотя самый большой крючок с плагином jQuery - это побочный эффект на $.fn так что указанный плагин jQuery может быть доступ как $(..).plugin. Итак, потом зависимый:

define(
  ['jQuery', 'jQuery_comments'], /* require comment module */
  function ($, _comments) {      /* but don't care about value */
      /* and use plugin anyway as it already been registered
         through a side-effect on $.fn */
      return {
        doStuff: function (..) {
          $(..).comments(..);
        }
      };
  });

В качестве альтернативы, можно вернуть comments (function (method) {.. }) из модуля зависимостей и использовать $.fn.comments = comments в зависимом модуле, но я оставил бы его, как он выше, поскольку плагины jQuery являются неотъемлемо сторонними -последствия.

0

Работая в предположении, что это не плагин, который вы написали/поддерживаете, моя рекомендация состояла бы в том, чтобы оставить плагин в покое и использовать некоторые функции конфигурации requirejs, чтобы рассказать ему, как работать с вашим плагином.

Добавление следующего requirejs.config скажет requirejs, как обрабатывать ваш плагин.

requirejs.config({
    shim:{
        'jquery.comments': {               // module name
            deps: [ 'jquery' ],            // jquery dependency
            exports: 'jQuery.fn.comments'  // result of the module
        }
    }
});

Вот еще несколько документов по этой функции: http://requirejs.org/docs/api.html#config-shim.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню