2014-01-21 4 views
11

Привет, я использую задачу grunt browserify для настройки моего кода, я настроил jQuery, и теперь я пытаюсь включить jquery.tablesorter.Плагин jQuery с обозревателем

Могут ли плагины jquery использоваться с браузером таким образом?

shim: { 
    jquery: { 
     path: 'lib/bower/jquery/jquery.js', 
     exports: '$' 
    }, 
    'jquery.tablesorter': { 
     path: 'lib/bower/jquery.tablesorter/js/jquery.tablesorter.js', 
     exports: 'tablesorter', 
     depends: { 
      jquery: '$', 
     } 
    } 
} 

ответ

14

Вы можете попробовать, делая это:

shim: { 
    jquery: { 
     path: 'lib/bower/jquery/jquery.js', 
     exports: '$' 
    }, 
    'jquery.tablesorter': { 
     path: 'lib/bower/jquery.tablesorter/js/jquery.tablesorter.js', 
     exports: null, 
     depends: { 
      jquery: '$', 
     } 
    } 
} 

Если выше не работает, вы можете попробовать это:

shim: { 
    jquery: { 
     path: 'lib/bower/jquery/jquery.js', 
     exports: null 
    }, 
    'jquery.tablesorter': { 
     path: 'lib/bower/jquery.tablesorter/js/jquery.tablesorter.js', 
     exports: null, 
     depends: { 
      jquery: 'jQuery', 
     } 
    } 
} 
+4

Какой из них работал на вас? – Rayjax

+0

Первый вариант работал для меня. –

+0

Это не дает мне ошибку, но во время вызова вызовет мне пустой объект var $ = require ('$'), sorter = require ('jquery-tablesorter'); console.log ($, сортировщик); // it console {} {} – Kundu

1

Может быть, вам не нужно использовать «browserify-подкладку "в package.json, если вы используете это расширение.

Вы можете сделать, как здесь Using Browserify with jQuery Plugins

Я попробовал это, и это работает.

Пример

package.json

"browserify": { 
    "transform": ["browserify-shim"] 
}, 
"browser": { 
    "jQuery.translit": "./public_html/js/vendor/jquery/jquery.translit.js" 
}, 
"browserify-shim": { 
    "jQuery": "global:jQuery" 
} 

JS файл:

var $ = require("jQuery"), 
    translit = require("jQuery.translit"), //don't use this variable  
    heading = require("./helper/heading.js"); 
$.transliterate("parameter"); //use as regular jQuery plugin instead 
+0

Не изящный, но я использовал этот трюк, и он работает. Вам не нужно назначать переменную, просто вызовите 'require (" x ")' –

+0

Да, вы правы. Также решение от Ian Lim может быть лучше. –

0

Его гораздо проще требовать global.JQuery, а затем требуют вашего модуля, не требуют каких-либо изменений package.json:

global.jQuery = require('jquery'); 
require('tipso'); 
Смежные вопросы