【问题标题】:Drupal 8 jQuery conflictDrupal 8 jQuery 冲突
【发布时间】:2015-03-28 02:08:36
【问题描述】:

在我的 Drupal 8 项目的前端部分,我有几个使用 Browserify(和 gulp)链接在一起的 javascript 模块。

在几个模块中我使用了Foundation,Foundation的制作方式是在$对象上添加了一个foundation()函数。

这是我的 package.json 的摘录,我在其中声明了我的项目需要的垫片:

"browser": {
    "jwplayer": "./libraries/utils/jwplayer/jwplayer.js",
    "Foundation": "./node_modules/foundation/js/foundation/foundation.js",
    "jquery": "./node_modules/jquery/dist/jquery.min.js",
    "Backbone": "./node_modules/backbone/backbone.js",
    "underscore": "./node_modules/underscore/underscore-min.js"
  },
  "browserify-shim": {
    "jquery": "$",
    "underscore": "_",
    "jwplayer": "jwplayer",
    "Foundation": {
      "exports": null,
      "depends": [
        "jquery"
      ]
    },
    "Backbone": {
      "exports": "Backbone",
      "depends": [
        "jquery",
        "underscore"
      ]
    }
  },
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  }

当我退出 Drupal 管理员时,一切正常。

虽然当我以管理员身份登录时,Drupal 会在顶部添加一个小任务栏,帮助您访问不同的访问菜单以及其他一些有用的东西。

当 Drupal 这样做时,它使用自己的 jQuery 版本,并附加一定数量的插件。

现在,当我导出自己的 jQuery 并在我的 package.json 文件中将其声明为 $ 时,我显然会删除 Drupal 的 jQuery 以及它附带的所有插件,从而破坏顶栏。

我怎么可能告诉 Foundation 和每个需要 jQuery 的模块或插件使用 Drupal,而不是我的 node_modules 文件夹中的那个?

【问题讨论】:

    标签: javascript jquery drupal browserify shim


    【解决方案1】:

    环顾stackoverflow,我发现了这个How do I use Browserify with external dependencies? 我换了

    "browserify-shim": {
        "jquery": "$"
    }
    

    "browserify-shim": {
        "jquery": "global:jQuery"
    }
    

    现在完美运行。这有点奇怪,我仍然必须做 var $ = require('jquery'); 在我的模块中。如果有人对此有更多信息,我会全力以赴。

    【讨论】:

    • 感谢您的更新,我仍然需要像这样var $ = jQuery;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2012-11-09
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多