首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一直在跳坑然后爬坑

    Angular依赖注入详解

    2.1 @Injectable装饰器 @Injectable装饰器用于标记一个类为可注入的,可以被注入器实例化。 @Injectable的作用有: 声明可注入性 启用依赖注入 设置服务作用域 AOT编译优化 @Injectable({ providedIn: 'root' // 设置为根作用域 }) export UserService(); // 组件内部直接创建服务 this.user = userService.getUser(); } } 使用依赖注入: // user.service.ts @Injectable ngOnInit() { this.user = this.userService.getUser(); // 使用注入的服务 } } 三、高级用法 3.1 自定义注入器 @Injectable this.env); // 根据环境返回服务实例 } return super.get(token, notFoundValue); // 默认行为 } } 3.2 提供商配置 @Injectable

    83130编辑于 2023-10-16
  • 来自专栏云瓣

    解读 IoC 框架 InversifyJS

    案例解析 import 'reflect-metadata' import { inject, injectable, Container } from 'inversify' const container = new Container() @injectable() class PopMusic { getName() { return '流行音乐' } } container.bind ('request1').to(PopMusic) @injectable() class ClassicalMusic { getName() { return '古典音乐' } } 代码流程可概括如下: 1.将所有相关类(这里指 Music、popMusic、classicMusic) 通过 @injectable 声明进 container 容器; 2.通过 container.get 源码简化如下: // 这是一个类装饰器 function injectable() { return function (target) { const metadataValue = [

    1.3K20发布于 2018-12-07
  • 来自专栏数栈技术分享

    数栈技术分享:聊聊IOC中依赖注入那些事 (Dependency inject)

    , inject } from 'inversify' @injectable() export class LoggerService implements ILoggerService{ //.. . } @injectable() export class ApiService implements IApiService{ protected _logger: LoggerService @injectable() export class ApiService implements IApiService { @inject(TYPES.ILoggerService) private } from "inversify"; @injectable() class Dom { public _domUi: DomUi; constructor(@inject(DomUi) _domUi = domUi; } } @injectable() class DomUi { public _dom; constructor(@inject(Dom) dom: Dom

    64010编辑于 2021-12-07
  • 来自专栏全栈修仙之路

    了不起的 IoC 与 DI

    ,我们使用了 Injectable 装饰器。 6.4.1 Injectable 装饰器 Injectable 装饰器用于表示此类可以自动注入其依赖项,该装饰器属于类装饰器。 下面我们来看一下 Injectable 装饰器的具体实现: // Injectable.ts import { Type } from ". 为了更好地理解以上代码,我们来回顾一下前面 Injectable 装饰器: const INJECTABLE_METADATA_KEY = Symbol("INJECTABLE_KEY"); export /container"; import { Injectable } from "./injectable"; import { Inject } from ".

    3.5K30发布于 2020-08-19
  • 来自专栏全栈修仙之路

    Angular HttpClient 拦截器

    AuthInterceptor auth.interceptor.ts import { Injectable } from "@angular/core"; import { HttpEvent, HttpRequest , HttpHandler, HttpInterceptor } from "@angular/common/http"; import { Observable } from "rxjs"; @Injectable logging.interceptor.ts import { Injectable } from '@angular/core'; import { HttpInterceptor, HttpRequest } from "@angular/core"; @Injectable({ providedIn: "root" }) export class LoggerService { log(msg /logger.service'; @Injectable({ providedIn: "root" }) export class CacheService implements Cache {

    3.5K20发布于 2019-11-05
  • 来自专栏前端技术地图

    全新 JavaScript 装饰器实战下篇:实现依赖注入

    ❌ 只能装饰类 @injectable() member = 1 // @ts-expect-error ❌ 只能装饰类 @injectable() method() {} } ) { throw new Error('injectable is already defined') } metadata.injectable = key metadata.scope injectable? test('property inject', () => { // 使用 @injectable 标注支持注入的类 @injectable(BIRD_BINDING) class MyBird : B constructor() {} } @injectable(B_KEY) class B { @inject(A_KEY) a?

    1.2K30编辑于 2023-10-20
  • 来自专栏数栈技术分享

    数栈技术分享:聊聊IOC中依赖注入那些事 (Dependency inject)

    , inject } from 'inversify' @injectable() export class LoggerService implements ILoggerService{ //.. . } @injectable() export class ApiService implements IApiService{ protected _logger: LoggerService @injectable() export class ApiService implements IApiService { @inject(TYPES.ILoggerService) private } from "inversify"; @injectable() class Dom { public _domUi: DomUi; constructor(@inject(DomUi) _domUi = domUi; } } @injectable() class DomUi { public _dom; constructor(@inject(Dom) dom: Dom

    90720发布于 2021-05-19
  • 来自专栏程序员宇说

    Angular 从入坑到挖坑 - HTTP 请求概览

    } from '@angular/core'; // 引入 HttpClient 类 import { HttpClient } from '@angular/common/http'; @Injectable import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; // 引入 HttpClient 类 import 根据 postman 的调用示例,在服务中定义一个方法用来提交毒鸡汤信息,这里的 SetQuotesResponseModel 为接口返回的响应对象 import { Injectable } from */ @Injectable() export class LoggingInterceptor implements HttpInterceptor { /** * 请求拦截 * */ @Injectable() export class LoggingInterceptor implements HttpInterceptor { /** * 请求拦截 *

    7.7K10发布于 2020-03-24
  • 来自专栏ionic3+

    【Appetite】ionic3实录(五)基本服务实现

    常规应用,一般会有通用服务和具体业务服务,而常用的通用服务有如下几个: 一、全局设置服务 ionic g provider config import { Injectable } from '@ /config'; import { Injectable } from '@angular/core'; //处理过的响应数据 export interface IResponseData<T> { : T; //响应数据 } @Injectable() export class CommonProvider { constructor(public authHttp: Http) 四、缓存服务 ionic g provider cache import { Injectable } from '@angular/core'; import { Http } from '@angular } from '@angular/core'; /* 工具类 Generated class for the UtilProvider provider. */ @Injectable() export

    4.6K40发布于 2018-08-20
  • 来自专栏Nest.js 实战系列

    Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter

    , Inject } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; @Injectable }); } } 4、 订阅事件 我们在另一个服务中使用 on 方法订阅发布的事件 import { Injectable, Inject } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; @Injectable() export class ListenerService { constructor ('Received data:', data); } } 5、 使用装饰器简化监听 如果你不想在构造函数中手动绑定事件监听器,可以使用 @OnEvent 装饰器来简化这一过程 import { Injectable } from '@nestjs/common'; import { OnEvent } from '@nestjs/event-emitter'; @Injectable() export class

    81010编辑于 2025-08-15
  • 来自专栏finleyMa

    Angular 依赖注入 初认

    在 Angular 中定义一个服务很简单,主要在类之前加上 @Injectable 装饰器的功能。这是最常见的依赖注入方式 useClass,其他具体参见这里。 import { Injectable } from '@angular/core'; @Injectable() export class Service { counter: number import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; @Injectable

    71040发布于 2019-07-01
  • cache-manager、ioredis配合使用方案(nestjs )

    class RedisModule {}2.生成并编辑redis service生成servicenest g s redis编辑service// redis.service.tsimport { Injectable } from '@nestjs/common';import { Inject } from '@nestjs/common';import { Redis } from 'ioredis';@Injectable 调用import { Injectable } from '@nestjs/common';import { RedisService } from 'src/redis/redis.service'; @Injectable()export class AuthService { constructor( private readonly redisService: RedisService,

    79610编辑于 2024-09-13
  • NestJS 从拔高到精通,大型复杂业务架构落地实战|果fx

    [UsersController], providers: [UsersService],})export class UsersModule {}users.service.tsimport { Injectable } from '@nestjs/common';@Injectable()export class UsersService { private users = []; create(user) providers: [MicroserviceService],})export class MicroserviceModule {}microservice.service.tsimport { Injectable @nestjs/common';import { ClientProxy, ClientProxyFactory, Transport } from '@nestjs/microservices';@Injectable

    86210编辑于 2024-12-19
  • 来自专栏少年郎编程之路

    为nestjs服务添加调用结果上报

    以下是一个简单的全局过滤器示例:import { ExceptionFilter, Catch, ArgumentsHost, HttpException, Injectable } from '@nestjs /error-reporting.service';@Injectable()@Catch(HttpException)export class HttpExceptionFilter implements 以下是一个简单的全局拦截器示例:import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common /result-reporting.service';@Injectable()export class ResultInterceptor implements NestInterceptor {

    86410编辑于 2023-12-05
  • 来自专栏finleyMa

    使用Angular的依赖注入

    import { Injectable } from '@angular/core'; // 在 Angular 中,要把一个类定义为服务,就要用 `@Injectable` 装饰器来提供元数据 @Injectable @Injectable 装饰器 表示FooService可以通过构造函数注入其他服务 举个例子,如果注释掉 // @Injectable({ // providedIn: 'root' // }) 就会报错 image.png image.png 为什么在组件中没有写@Injectable也能直接注入service? 我们知道定义组件要写@Component装饰器,定义管道要写@Pipe装饰器,他们都是Injectable的子类。 同时Component又是Directive的子类,所以所有的组件都是指令。

    1.7K10发布于 2019-06-15
  • 来自专栏IT知识进阶学习

    不会测试的程序员不是好程序员(一文让你掌握JMockit的使用)

    (二)测试属性:既测试类中的一个属性,它作用于测试类的所有方法,可以使用JMockit中的@Mocked, @Tested, @Injectable,@Capturing进行修饰。 (三) @Injectable注解:作用是告诉JMockit生成一个Mocked对象,但@Injectable只是针对其修饰的实例,而@Mocked是针对其修饰类的所有实例,@Injectable对类的静态方法 除了构造函数的注入,JMockit还会通过属性查找的方式,把@Injectable对象注入到@Tested对象中。注入的匹配规则:先类型,再名称(构造函数参数名,类的属性名)。 若找到多个可以注入的@Injectable,则选择最优先定义的@Injectable对象。    (五)@Tested & @Injectable 的使用场景:需要手工管理被测试类的依赖时,就需要用到@Tested & @Injectable

    2K10编辑于 2022-09-13
  • 来自专栏前端笔记ing

    企业微信&小程序授权全链路打通指南

    / 处理服务器返回的数据 console.log(response.data); } }); } }});下面是Nest 伪代码实现import { Injectable : string;}@Injectable() export class MiniProgramAuthService { constructor(private readonly httpService : string; // 开放平台唯一标识}@Injectable()export class WebAuthService { constructor(private readonly httpService error) { throw new Error('获取用户信息失败'); } }}微信开放平台授权特点:适用于第三方应用支持移动应用、网站应用等需要开发者资质认证import { Injectable ; // 授权用户唯一标识 scope: string; // 用户授权的作用域 unionid: string; // 开放平台唯一标识}@Injectable

    2K00编辑于 2024-12-30
  • 来自专栏小鑫同学编程历险记

    快速打开 Nestjs 的世界

    import { Injectable } from '@nestjs/common'; import { CreateOrderDto } from '. import { Injectable, NestMiddleware } from '@nestjs/common'; @Injectable() export class LoggerMiddleware , PipeTransform } from '@nestjs/common'; import { ZodObject } from 'zod'; @Injectable() export class /roles.decorator'; import { Request } from 'express'; @Injectable() export class RolesGuard implements , NestInterceptor, } from '@nestjs/common'; import { Observable, tap } from 'rxjs'; @Injectable()

    1.8K10编辑于 2023-12-04
  • 来自专栏Nest.js 实战系列

    Nest.js 实战 (九):使用拦截器记录用户 CURD 操作日志

    拦截器 是使用 @Injectable() 装饰器注解的类。拦截器应该实现 NestInterceptor 接口。 拦截器 具有一系列有用的功能,这些功能受面向切面编程(AOP)技术的启发。 新建 operation-log.service.ts 文件: import { Inject, Injectable, Scope } from '@nestjs/common'; import { UAParser from 'ua-parser-js'; import { PrismaService } from '@/modules/prisma/prisma.service'; @Injectable LoggerInterceptor 拦截器 新建 interceptor/logger.interceptor.ts 文件,写入: import { CallHandler, ExecutionContext, Injectable import { OperationLogService } from '@/modules/system-manage/operation-log/operation-log.service'; @Injectable

    73110编辑于 2025-08-15
  • 来自专栏网络日志

    Angular 服务器端渲染应用一个常见的内存泄漏问题

    考虑如下的 Angular 代码: import { Injectable, NgZone } from "@angular/core"; import { interval } from "rxjs" ; @Injectable() export class LocationService { constructor(ngZone: NgZone) { ngZone.runOutsideAngular 退订 subscription 的技巧有很多,下面是一个例子: import { Injectable, NgZone, OnDestroy } from "@angular/core"; import { interval, Subscription } from "rxjs"; @Injectable() export class LocationService implements OnDestroy

    57810编辑于 2024-08-01
领券