如何在使用browserify时在AngularJS中包含jQuery?

Fid*_*l90 3 javascript jquery node.js angularjs browserify

我正在使用node,gulp和browserify来使我的JS文件正确顺序并管理模块.我将jQuery和AngularJS安装为节点模块,并在需要时需要它们.Angular默认使用jqLit​​e来处理DOM-Elements.

我知道当jQuery在AngularJS之前加载时,Angular将使用jQuery而不是jqLit​​e.

但是在使用browserify时如何让Angular使用jQuery呢?或者:怎么可能需要jQuery角度?

现在我正在做var $ = require("jquery");,并在需要时使用它.但是我希望有一个Angular,例如在做的时候会原生地给我jQuery方法:

app.directive("dir", function () {
    return {
        link : function ($scope, $elem) {
            var a = $elem.width();//jQuery methods currently not available here
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

我真正需要做的是:

var jQuery = require("jquery");

app.directive("dir", function () {
    return {
        link : function ($scope, $elem) {
            var jqElement = jQuery($elem);
            var a = $jqElement.width();//jQuery methods are available here
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

Dmi*_*rov 6

您可以使用browserify-shim

npm install browserify-shim --save-dev
Run Code Online (Sandbox Code Playgroud)

的package.json

"browserify": {
  "transform": ["browserify-shim"]
},
"browser": {
  "jquery": "./node_modules/jquery/dist/jquery.js"
},
"browserify-shim": {
  "jquery": "$",
  "angular": {
    "exports": "angular",
    "depends": ["jquery"]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 啊,多亏了这个答案(http://stackoverflow.com/a/34813884/2577116)我意识到我仍然需要在某个地方需要jquery.我认为每当我需要角度时,browserify-shim将始终包含jquery,但似乎情况并非如此.无论如何,现在它的工作:) (2认同)