• AngularJS实战之依赖注入与应用实践


    什么是依赖注入

    在这里插入图片描述

    依赖注入(DI)是一种软件设计模式。在此模式中,一个或多个依赖项(或服务)被注入(或通过引用传递)到独立对象(或客户端),然后成为客户端状态的一部分。
    这种模式分离了客户端依赖行为本身的创建,这使得程序设计松散耦合,并遵循依赖反转和单一责任的原则。与服务定位器模式直接相反,它允许客户机理解客户机如何使用系统查找依赖项。

    Angularjs提供了良好的依赖注入机制。以下五个核心组件用作依赖项注入:

    • List item
    • value
    • factory
    • service
    • provider
    • constant

    定义一个模块

    var mainApp = angular.module("mainApp", []);
    
    • 1

    创建 value 对象 “defaultInput” 并传递数据

    mainApp.value("defaultInput", 5);
    
    • 1

    将 “defaultInput” 注入到控制器

    mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
       $scope.number = defaultInput;
       $scope.result = CalcService.square($scope.number);
       
       $scope.square = function() {
          $scope.result = CalcService.square($scope.number);
       }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    factory

    factory是一个返回值的函数。它是在服务和控制器需要时创建的。
    通常我们使用factory函数来计算或返回值。
    创建 factory “MathService” 用于两数的乘积 provides a method multiply to return multiplication of two numbers

    mainApp.factory('MathService', function() {
       var factory = {};
       
       factory.multiply = function(a, b) {
          return a * b
       }
       return factory;
    }); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在 service 中注入 factory “MathService”

    mainApp.service('CalcService', function(MathService){
       this.square = function(a) {
          return MathService.multiply(a,a);
       }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在angularjs中,通过提供者(配置阶段)创建服务、工厂等。
    提供程序提供了一个工厂方法get(),用于返回value/service/factory。

    mainApp.config(function($provide) {
       $provide.provider('MathService', function() {
          this.$get = function() {
             var factory = {};  
             
             factory.multiply = function(a, b) {
                return a * b; 
             }
             return factory;
          };
       });
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    使用 provider 创建 service 定义一个方法用于计算两数乘积
    常量(Constant)用于在配置阶段传递值。请注意,此常量在配置阶段不可用。

    html 元素是 AngularJS 应用: ng-app=“myNoteApp” 的容器:

    
    
    • 1

    是 HTML 页面中控制器: ng-controller=“myNoteCtrl” 的作用域:

    • 1

    ng-model 指令绑定了 到控制器变量 message:

    
    
    • 1

    两个 ng-click 事件调用了控制器函数 clear() 和 save():

    
    
    
    • 1
    • 2

    ng-bind 指令绑定控制器函数 left() 到 ,用于显示剩余字符:

    Number of characters left:

    mainApp.constant("configParam", "constant value");
    
    • 1

    在这里插入图片描述
    Angularjs应用程序架构
    上面的示例是一个完整的angularjs单页web应用程序(SPA)。
    元素包含一个angularjs应用程序(ng app=)。
    元素定义了angularjs控制器(ng controller=)的范围。
    一个应用程序中可以有多个控制器。
    应用程序文件(my…App.JS)定义了应用程序模型代码。
    一个或多个控制器文件(my…Ctrl.JS)定义了控制器代码。

    
    
    
    • 1
    • 2

    应用程序库文件只能在加载angularjs后执行:

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • 相关阅读:
    ArrayList扩容机制
    轨道姿态常用编程缩写
    【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题
    log4net日志使用示例
    QTday04(事件)
    【译】.NET 6 网络改进
    5本Python书推荐,强化你的程式编程语言观念
    扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
    [附源码]计算机毕业设计ssm校园二手交易平台
    【uniapp】仿微信支付界面
  • 原文地址:https://blog.csdn.net/weixin_57198749/article/details/126320421