首页 > 其他分享 >Angular 服务器端渲染两个相关的 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN

Angular 服务器端渲染两个相关的 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN

时间:2023-05-12 19:35:24浏览次数:32  
标签:ORIGIN 服务器端 URL REQUEST SERVER Inject Angular

下面这段代码有什么用?

export class AppModule {
  constructor(
    @Optional() @Inject(SERVER_REQUEST_URL) protected serverRequestUrl?: string,
    @Optional() @Inject(SERVER_REQUEST_ORIGIN) protected serverRequestOrigin?: string
  ) {
    console.log({ serverRequestUrl, serverRequestOrigin });
  }
}

SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN 这两个 injection token 在实际的 Angular 项目中有什么用?

这段代码定义了一个名为 AppModule 的 Angular 模块,并在其构造函数中注入了两个依赖项(依赖注入):SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN。

依赖注入是一种常见的设计模式,用于管理组件、服务、模块等之间的依赖关系。在 Angular 中,依赖注入通过注入令牌(Injection Token)来实现。

在这段代码中,@Inject() 装饰器用于指定注入令牌,@Optional() 装饰器用于标记这两个依赖项是可选的,即如果找不到对应的提供者,程序也不会报错。构造函数中的 console.log() 语句用于在控制台输出这两个依赖项的值,以便在开发过程中进行调试和测试。

在实际的 Angular 项目中,SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN 这两个注入令牌通常用于处理服务器端渲染(server-side rendering)相关的逻辑。SERVER_REQUEST_URL 用于获取当前请求的 URL 地址,SERVER_REQUEST_ORIGIN 用于获取请求的源地址。通过这些注入令牌,我们可以在组件、服务等中获取当前请求的相关信息,以便进行更灵活的业务逻辑处理。

在实际的 Angular 项目中,可以通过在模块的 providers 中提供对应的值来注册 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN 这两个注入令牌。下面是一个示例:

import { InjectionToken } from '@angular/core';

export const SERVER_REQUEST_URL = new InjectionToken<string>('SERVER_REQUEST_URL');
export const SERVER_REQUEST_ORIGIN = new InjectionToken<string>('SERVER_REQUEST_ORIGIN');

@NgModule({
  // ...
  providers: [
    { provide: SERVER_REQUEST_URL, useValue: 'http://example.com/api' },
    { provide: SERVER_REQUEST_ORIGIN, useValue: 'http://example.com' },
  ]
})
export class AppModule { }

在上面的示例中,我们通过 providers 属性提供了 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN 的值。假设我们在一个组件中注入了这两个令牌,并打印出它们的值,代码如下:

import { Component, Inject } from '@angular/core';
import { SERVER_REQUEST_URL, SERVER_REQUEST_ORIGIN } from './app.module';

@Component({
  selector: 'app-root',
  template: `SERVER_REQUEST_URL: {{ serverRequestUrl }}<br>SERVER_REQUEST_ORIGIN: {{ serverRequestOrigin }}`
})
export class AppComponent {
  constructor(
    @Inject(SERVER_REQUEST_URL) public serverRequestUrl: string,
    @Inject(SERVER_REQUEST_ORIGIN) public serverRequestOrigin: string
  ) { }
}

当应用程序运行时,如果我们在控制台中查看组件输出的值,可能会看到类似如下的内容:

SERVER_REQUEST_URL: http://example.com/api
SERVER_REQUEST_ORIGIN: http://example.com

这表明 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN 的值已成功注入,并且组件已经正确地获取了这些值。

标签:ORIGIN,服务器端,URL,REQUEST,SERVER,Inject,Angular
From: https://www.cnblogs.com/sap-jerry/p/17396114.html

相关文章

  • JavaWeb过滤器读取并修改POST请求的参数-YhtHttpServletRequestWrapper
    核心原理就是一个类:javax.servlet.http.HttpServletRequestWrapper一个简单的例子,当任何请求的参数里有aaa的时候,把它的值改成bbb新增一个类自定义的类CustomHttpServletRequestWrapper importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSer......
  • sql server 跨数据库插入数据
    公司项目改造,需要将以前的数据库表记录导入到新的数据库表中,结构不是完全相同。在跨库的过程中,学到了不少东西。原来SQLServer还有链接服务器的功能呢。/*不同服务器数据库之间的数据操作*/--创建链接服务器execsp_addlinkedserver'ITSV','','SQLOLEDB','远程服务器......
  • SQL Server数据实时同步至Oracle数据库中
    1、使用SSMS中的链接服务器链接Oracle请参考链接  SQLServer客户端链接服务器到Oracle数据库全攻略_sqlserver连接oracle数据库_简单的你我1314的博客-CSDN博客2、使用触发器(insertupdatedelete)获取更改的数据然后同步至Oracle中(使用openquery查询)//openquery语句ORCL......
  • sql server 将datetime类型的字段转化成字符串输出
    SELECTOBJID,NAME,CONVERT(varchar(19),CREATIONDATE,120)ASCREATIONDATEFROM[dbo].[SYS_DOCUMENTREV]WHERENAMELIKE'test%.pdf'ORDERBYCREATIONDATEDESC......
  • percona-server-rocksdb-8.0.32 安装
    MyRocks是关系型数据库Mysql基于RocksDB的存储引擎,一个可嵌入的、持久的键值存储。PerconaMyRocks是集于PerconaServerforMySQL的.RocksDB存储基于日志结构的合并树(LSMtree)。它针对快速存储进行了优化,有出色的空间和写入效率以及可接受的读取性能。因此,如果您的工作负......
  • Windows Server 2016 MDT批量部署服务搭建
    一.介绍MDT是自动执行桌面和服务器部署的工具、流程和指南的统一集合。你可以使用它创建引用映像,或将其用作完整的部署解决方案。MDT现在是IT专业人员可用的最重要的工具之一。除了减少部署时间和标准化桌面和服务器映像以外,MDT还可以使你更轻松地管理安全配置和正在进行的......
  • Entity FrameWork 6 与sqlserver数据库建立连接
    1、新建一个控制台项目  2、添加EF6   3、新建2个表并建立外联关系department:departmentId为主键 person:id为主键    4、连接sqlserver数据库             ......
  • 2.SQLServer 安装
     https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-ver15 快速入门:在RedHat上安装SQLServer并创建数据库2021/09/25适用于: SQLServer(所有支持的版本)-Linux本快速入门介绍如何在RedHatEnterprise......
  • blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on th
    现在的浏览器出于安全策略的限制,都是不允许跨域的,但是开发的时候经常需要一些别的域的接口,特别是一些接口不是自己能控制的时候,往往会造成开发困难。今天无意中知道了,chrome浏览器可以通过设置为可跨域,解决跨域问题,从而在本地进行开发工作下面我就介绍谷歌浏览器新老版本各自的......
  • 通过空间占用和执行计划了解SQL Server的行存储索引
    1索引介绍索引是一种帮助查询语句能够快速定位到数据的一种技术。索引的存储方式有行存储索引、列存储索引和内存优化三种存储方式:行存储索引,使用B+树结构,行存储指的是数据存储格式为堆、聚集索引和内存优化表的表,用于OLTP场景。行存储索引按顺序排列的值列表,每个值都有指向其......