AngularJS RequireJS Browserify和Javascript模块/全局范围
我最近在所有这场普通的JS对AMD的战斗中挖掘了一些东西,这是我的发现。。。 (顺便说一句,我不是在这里说教,我是在分享我的想法,以获得一些建设性的见解…) RequireJS给我的Angular模块带来了很多复杂性,我觉得这是错误的,因为它是模块中的模块包装。。。 Browserify方法更干净,但要使它正确地处理每件事,您需要正确地实现所有依赖项和依赖项,不幸的是,我们并不是生活在一个完美的世界中。。。因此,您必须不断地填充已填充库的内部依赖项。。。我不是一个超级复杂的粉丝 我目前所追求的方式(并接受你所有建设性的批评…) 我有一个grunt文件连接并缩小了我所有的资源,像BreezeJS、$、Q、Ladda等库。。。全球范围内的漏洞。。。 然后我为这些全局变量声明此类型模块:AngularJS RequireJS Browserify和Javascript模块/全局范围,javascript,angularjs,requirejs,browserify,Javascript,Angularjs,Requirejs,Browserify,我最近在所有这场普通的JS对AMD的战斗中挖掘了一些东西,这是我的发现。。。 (顺便说一句,我不是在这里说教,我是在分享我的想法,以获得一些建设性的见解…) RequireJS给我的Angular模块带来了很多复杂性,我觉得这是错误的,因为它是模块中的模块包装。。。 Browserify方法更干净,但要使它正确地处理每件事,您需要正确地实现所有依赖项和依赖项,不幸的是,我们并不是生活在一个完美的世界中。。。因此,您必须不断地填充已填充库的内部依赖项。。。我不是一个超级复杂的粉丝 我目前所追求的方
module.value('gLadda', (function(){
if("Ladda" in window && "Spinner" in window){
return Ladda;
}else{
throw new Error("The Globals Ladda || Spinner are missing");
}
})());
在我的应用程序中使用了“Angularify”依赖项之后,我还没有在团队中使用过这种技术,我想知道这是否会为一些人亮起红灯,他们是否会解释为什么。。。感谢您抽出时间。来自作为附加ng模块一部分的功能请求 Angular具有一项功能,允许用户创建模块定义,并在以后通过字符串标识符查找控制器等实体。Angular无法加载存储在单独文件中的脚本,这意味着您只有四个选项:
define(['angular'], function(angular) {
return angular.module('myApp.controllers', ['myApp.services'])
.controller('MyController', ['$scope', 'myService',
function($scope, myService) {
$scope.data = myService.getData();
}
])
};
顶部的define语句表示在运行此函数之前,确保已初始化angular
。angular.module
语句要求查找“$scope”和“myService”,并将它们注入变量$scope
和myService
。问题是AMD加载程序可能没有初始化定义myApp.services
的文件,您可以假定该文件定义了myService
,因为它没有出现在上面的define语句中。这在注入列表和AMD依赖列表之间造成了巨大的断开。不仅很难判断“myApp.services”;已经加载,也很难判断“myApp.services”中有哪些特定组件可用。“myService”既可加载又可注入吗
我目前以requirejs的形式使用选项#3,因为我需要能够通过路由动态加载控制器(参见第一个链接)。此外,我现在使用的应用程序的大小使得browserfy变得不切实际,因为有这么多页面。然而,我同意这是次优的,但目前我看不到任何其他选择。从实用的角度来看,我为每个文件定义了一个可注入的。我还尝试使所有可注入数组与require数组匹配。这不是必需的,但它使代码更易于维护 我发现这些文章有助于撰写以下内容:
我倾向于同意在Angular中使用Require是没有意义的。我在想,在使用Angular.js开发时,使用requirejs和browserify做同样的事情会增加更多的开销。我有一个开放的特性请求,似乎正在获得一些吸引力:我对潜在解决方案的编写:事实上,问题是适用范围比角度更广。必须在一个应用程序中使用基于CommonJS/AMD/UMD/globals的混合模块目前是一场噩梦,而工具(如browserify或webpack)不够聪明,无法解决这场噩梦。