`
jahu
  • 浏览: 61442 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

angular之moduler与服务等api生成

 
阅读更多

angular之moduler与服务等api生成。(angualr版本是1.2.28)

        function setupModuleLoader(window) {
		//得到 注入器异常与ng异常
                var $injectorMinErr = minErr('$injector');
                var ngMinErr = minErr('ng');
		//方法属性绑定
                function ensure(obj, name, factory) {
                        return obj[name] || (obj[name] = factory());
                }
		//绑定angular,到window上。
                var angular = ensure(window, 'angular', Object);
		//把minerr绑定到 angluar上
                angular.$$minErr = angular.$$minErr || minErr;
		//绑定 module方法到 angualr上,,,当你使用angular.module()的时候,实际上调用了 下面的 module方法
                return ensure(angular, 'module', function() {
			var modules = {};
 			//模块名,依赖关系, configFn,其实就等于 angular.module().config();
                        return function module(name, requires, configFn) {
                                var assertNotHasOwnProperty = function(name, context) {
                                        if (name === 'hasOwnProperty') {
                                                throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
                                        }
                                };
				//排除hasOwnProperty,
                                assertNotHasOwnProperty(name, 'module');
				
                                if (requires && modules.hasOwnProperty(name)) {
                                        modules[name] = null;
                                }
                                return ensure(modules, name, function() {
                                        if (!requires) {
                                                throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
                                                        "the module name or forgot to load it. If registering a module ensure that you " +
                                                        "specify the dependencies as the second argument.", name);
                                        }
					//这个数组保存 除 run之外所有 方法的操作
                                        /** @type {!Array.<Array.<*>>} */
                                        var invokeQueue = [];
					//保存 run方法的执行
                                        /** @type {!Array.<Function>} */
                                        var runBlocks = [];
					//提前实例化 config方法
                                        var config = invokeLater('$injector', 'invoke');

                                        /** @type {angular.Module} */
                                        var moduleInstance = {
                                                // Private state
                                                _invokeQueue: invokeQueue,
                                                _runBlocks: runBlocks,

                                                requires: requires,
                                               
                                                name: name,

                                                provider: invokeLater('$provide', 'provider'),

                                                service: invokeLater('$provide', 'service'),

                                                animation: invokeLater('$animateProvider', 'register'),

                                                config: config,

                                                run: function(block) {
                                                        runBlocks.push(block);
                                                        return this;
                                                }
                                        };

                                        if (configFn) {
                                                config(configFn);
                                        }
					//执行完module 方法,返回的是这个对象
                                        return moduleInstance;
					//这个方法很关键,provider的名字,初始化方法。
                                        function invokeLater(provider, method, insertMethod) {
						//基本每个 方法 实际执行的这个 方法。
                                                return function() {
                                                        invokeQueue[insertMethod || 'push']([provider, method, arguments]);
                                                        return moduleInstance;
                                                };
                                        }
                                });
                        };
                });

        }

 

分享到:
评论

相关推荐

    angular-google-picker, Angular 指令与Google选取器API交互.zip

    angular-google-picker, Angular 指令与Google选取器API交互 angular-google-picker 与Google选取器API交互的Angular 指令:谷歌挑选器API概述Google Picker文档需求: AngularJS 1.2 文件大小: 2.1

    Angular 6 Starter with Laravel 5.6 API Service.zip

    这个压缩包文件提供了一个启动项目,结合了Angular 6前端框架与Laravel 5.6后端API服务。Angular 6是Google开发的一个流行的单页应用(SPA)框架,它基于TypeScript,提供了强大的数据绑定和依赖注入功能,使得构建...

    Angular+WebAPI入门示例

    使用Angular+WebAPI,编写的一个入门示例,主要用于学习Angular,包括了路由的配置、Http等配置

    loopback-sdk-angular, 自动生成用于环回的Angular $resource 服务的服务.zip

    loopback-sdk-angular, 自动生成用于环回的Angular $resource 服务的服务 环回 AngularJS SDK注意:模块取代了环回角 。 请相应更新你的package.json 。 web AngularJS提供了一个基于 ngResource的API,它支持你的...

    angular.js+webapi Demo

    **Angular.js + WebAPI Demo** 是一个基于.NET平台的示例项目,旨在帮助新手快速理解和应用Angular.js与WebAPI这两个技术。Angular.js是Google维护的一个前端JavaScript框架,它极大地简化了构建动态单页应用程序...

    angular-model-factory, 在AngularJS中,Angular 模型工厂使用rest式 api !.zip

    angular-model-factory, 在AngularJS中,Angular 模型工厂使用rest式 api ! modelFactory 一个轻量级的模型层,可以跨越AngularJS和你的RESTful api之间的鸿沟。你为什么要在其他可用的解决方案上使用这个?轻量级/...

    ASP.NET Web API and Angular 2 pdf 0分

    通常,前端(Angular 2)会通过HTTP请求(如GET、POST、PUT、DELETE等)与后端(*** Web API)进行通信。*** Core Web API会根据请求的路径、方法和数据进行处理,并返回相应的数据。为了保证前后端交互的一致性和...

    angular-ymaps, Yandex映射API作为 Angular JS direcitive.zip

    angular-ymaps, Yandex映射API作为 Angular JS direcitive 角 ymaps Yandex映射API作为 Angular JS direcitive 。使用 Это модуль для Angular JS,предназначенный для просто...

    ASP.NET Web API and Angular 2

    *** Web API是一种设计用于构建HTTP服务的框架,可以让开发者轻松创建Web API,以便其他客户端应用(如Angular应用)能够通过网络与之交互。Angular 2是Google开发的一个流行的前端框架,用于构建交互式网页应用。将...

    angular2项目,二级路由+webapi

    在本项目中,开发者利用Angular2框架构建了一个功能完善的Web应用程序,主要特点是实现了二级路由,结合了Bootstrap4样式库,并通过WebAPI接口与数据库进行交互,从而实现了无后台代码的前端应用。 ### 1. Angular2...

    swagger生成angular 6或csharp客户端

    4. 生成的客户端代码会包含访问API所需的模型、服务和接口,可以直接导入到Angular 6或C#项目中使用。 总的来说,这个过程利用Swagger规范和Swagger Codegen工具,极大地简化了API客户端的开发工作,使得开发者可以...

    ng-openapi-gen:Angular的OpenAPI 3.0代码生成器

    生成的代码与Angular 7+兼容。 对于的生成器,请改用 。 强调 它应该易于使用并与Angular CLI集成; 它应该支持JSON和YAML格式的OpenAPI规范; OpenAPI规范中的每个标记都会生成一个Angular @Injectable()服务。...

    angular2使用http服务从rest服务器上拉取数据

    在Angular2(现更新至Angular)中,HTTP服务是与后端进行数据交互的重要手段,尤其当后端采用RESTful API设计原则时。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP...

    angular-example-dictionary:使用Yeoman的Angular生成器和Mashape字典API的示例Web应用程序

    在这个案例中,Angular生成器用于快速搭建Angular项目的结构,包括模块、控制器、服务、指令等。使用`yo angular`命令可以启动生成器,然后根据提示设置项目的基本配置。生成的项目结构通常包含源代码、测试、配置...

    angular-google-plus, 使用 Google API处理登录的Angular 模块.zip

    angular-google-plus, 使用 Google API处理登录的Angular 模块 angular-google-plus 一个 Angular 模块,它使用 Google API处理登录演示请尝试使用这个演示工具。 提醒没有插入 API Key 和 Client ID 插入。安装使用...

    Angular之toDoList的实现代码示例

    Angular之toDoList的实现代码示例 Angular之toDoList的实现代码示例主要介绍了如何使用Angular框架来实现一个基本的toDoList应用程序。该实现代码示例提供了一个基本的...7. Angular中的内置服务和API的使用和配置

    Angular中的服务 以及自定义服务 以及完善toDoList(待办事项案例)

    在Angular框架中,服务起着至关重要的角色,它们是应用中可重用的代码块,负责处理业务逻辑、数据管理、API调用等任务。理解并掌握如何创建和使用服务对于构建高效、可维护的Angular应用程序至关重要。在这个教程中...

    Laravel开发-angular2

    这类工具通常提供自动生成Angular2项目结构、配置文件以及与Laravel API的交互代码等功能,帮助开发者快速启动一个新的Laravel-Angular2项目。 **具体实践** 1. **安装与设置**:首先,确保安装了Laravel和Angular...

    angular web memory

    `angular-in-memory-web-api`是Angular的一个模块,它提供了一个模拟Web API的服务,用于在开发阶段替代实际的后端服务器。这个工具可以帮助开发者在没有真实服务器的情况下测试和调试数据交互逻辑,同时减少对网络...

Global site tag (gtag.js) - Google Analytics