【问题标题】:Shim a jQuery plugin with browserify用 browserify 填充一个 jQuery 插件
【发布时间】:2014-02-11 12:00:59
【问题描述】:

您好,我正在使用 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: '$',
        }
    }
}

【问题讨论】:

    标签: javascript jquery gruntjs browserify shim


    【解决方案1】:

    需要 global.JQuery 然后需要你的模块要容易得多,它不需要对 package.json 进行任何更改:

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

    【讨论】:

      【解决方案2】:

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

      你可以在这里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
      

      【讨论】:

      • 不优雅,但我使用了这个技巧并且它有效。您不必分配给变量,只需调用require("x")
      • 是的,你是对的。 Ian Lim 的解决方案也可能更好。
      【解决方案3】:

      您可以尝试这样做:

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

      【讨论】:

      • 它没有给我错误,但是在 require 调用期间它给了我一个空白对象 var $ = require('$'),sorter = require('jquery-tablesorter'); console.log($,sorter); // 它控制台 {} {}
      • @kundu 我可以知道你使用的是哪个 grunt-browserify 版本吗?此解决方案仅适用于早期版本。
      • @Lim 我正在使用 browserify v5.9.1。对于较新的版本,应该有什么出路。
      • 看看这篇文章对你有没有帮助aeflash.com/2014-05/grunt-browserify-2-x-update.html
      • shim来自哪里?当前的 browserify 文档说要使用 browserify-shim github.com/thlorenz/browserify-shim
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多