问题 用browserify填充jQuery插件


嗨,我正在使用grunt browserify任务来设置我的代码,我已经在jQuery中填充了,我现在正在尝试包含jquery.tablesorter。

jquery插件可以用这种方式与browserify一起使用吗?

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

4219
2018-01-21 18:05


起源



答案:


您可以尝试这样做:

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',
        }
    }
}

14
2018-01-22 01:38



哪一个适合你? - Rayjax
第一个选项对我有用。 - George Thomas
它没有给我错误,但在require调用期间它给了我一个空白对象var $ = require('$'),sorter = require('jquery-tablesorter');的console.log($,分拣机); //它控制台{} {} - Kundu
@kundu我可能知道你使用哪个grunt-browserify版本?此解决方案仅适用于早期版本。 - Ian Lim
哪里 shim来自?目前的browserify文档说要使用 browserify-shim  github.com/thlorenz/browserify-shim - mikemaccana


答案:


您可以尝试这样做:

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',
        }
    }
}

14
2018-01-22 01:38



哪一个适合你? - Rayjax
第一个选项对我有用。 - George Thomas
它没有给我错误,但在require调用期间它给了我一个空白对象var $ = require('$'),sorter = require('jquery-tablesorter');的console.log($,分拣机); //它控制台{} {} - Kundu
@kundu我可能知道你使用哪个grunt-browserify版本?此解决方案仅适用于早期版本。 - Ian Lim
哪里 shim来自?目前的browserify文档说要使用 browserify-shim  github.com/thlorenz/browserify-shim - mikemaccana


如果你使用这个扩展,也许你不需要在package.json中使用“browserify-shim”部分。

你可以这样做 使用Browserify和jQuery插件

我试过了,它的确有效。

的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

1
2018-03-16 14:57



不优雅,但我用这个技巧,它的工作原理。您不必分配给变量,只需调用即可 require("x") - Sebastien Lorber
你是对的。 Ian Lim的解决方案也许更好。 - Andriy Lach


它更容易要求global.JQuery然后需要你的模块,它不需要更改package.json:

global.jQuery = require('jquery');
require('tipso');

0
2017-09-04 12:22