【发布时间】:2016-06-12 14:51:23
【问题描述】:
我正在使用 node、gulp 和 browserify 来让我的 JS 文件进入正确的顺序并管理模块。我将 jQuery 和 AngularJS 安装为节点模块,并在需要时需要它们。 Angular 默认使用 jqLite 来处理 DOM-Elements。
我知道当 jQuery 在 AngularJS 之前加载时,Angular 将使用 jQuery 而不是 jqLite。
但是在使用 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
}
};
});
我真正需要做的事情:
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
}
};
});
【问题讨论】:
-
您需要阅读 browserify 中的外部需求,在最终点击之前,它们可能会有点弯曲。 github.com/substack/node-browserify#external-requires
-
为什么不使用页面上的脚本引用作为第一个脚本来加载 jquery?
-
@Igor:这可行,但我想将我所有的脚本捆绑到一个文件中:) 另一方面,我真的很好奇为什么用 browserify 无法实现和 npm 模块。
-
对于外部知名资源,您应该尝试使用 CDN。如果之前已加载(很可能使用 jquery),它具有浏览器缓存之类的好处,并且不会花费您任何带宽。
-
CDN 不是一个选项,因为我正在编写一个无法访问网络的网络应用程序。它只是连接到 nodeJS 服务器。
标签: javascript jquery angularjs node.js browserify