首页 > 其他分享 >如何找到 Spartacus 动态加载 library 的准确实现地址

如何找到 Spartacus 动态加载 library 的准确实现地址

时间:2023-09-06 13:31:45浏览次数:44  
标签:npm core Spartacus spartacus library import Angular smartedit 加载

Spartacus 里 SmartEditFeatureModule 这段实现代码:

import { NgModule } from '@angular/core';
import { CmsConfig, provideConfig } from '@spartacus/core';
import {
  SmartEditRootModule,
  SMART_EDIT_FEATURE,
} from '@spartacus/smartedit/root';

@NgModule({
  imports: [SmartEditRootModule],
  providers: [
    provideConfig(<CmsConfig>{
      featureModules: {
        [SMART_EDIT_FEATURE]: {
          module: () =>
            import('@spartacus/smartedit').then((m) => m.SmartEditModule),
        },
      },
    }),
  ],
})
export class SmartEditFeatureModule {}

其中动态导入了 @spartacus/smartedit:

tsconfig.json 文件里能找到 @spartacus/smartedit 的准确实现路径:feature-libs/smartedit/public_api

这个被动态加载的 module,包含的是 core module,而不是 root module. root module 在 SmartEditFeatureModule 里被静态导入。

另外说说 @spartacus/smartedit/core 里的 @ 符号。

在Angular项目中,使用import语句导入模块或库是一种常见的做法,以便在代码中使用外部依赖。在您提到的代码中,import语句导入了一个名为@spartacus/smartedit/core的包,其中的@符号实际上是Node.js模块系统中的一种导入约定,用于表示这是一个npm包(Node Package Manager包)的名称。下面我将详细解释@符号在import语句中的作用,并提供示例来说明它的使用。

@符号的作用

  1. 表示npm包的范围(Scope):在npm中,开发者可以创建自己的npm包,并将其发布到npm仓库,以供其他开发者使用。为了确保npm包的唯一性,npm引入了包的范围(Scope)的概念,@符号用于表示包的范围。这种包的范围通常与组织、公司或项目名称相关联,以避免包名冲突。

  2. 简化包管理:使用@符号可以更容易地对相关的包进行组织和管理。它允许开发者将相关的包分组到同一个范围(Scope)下,使代码结构更清晰,同时也方便了包的发布和维护。

  3. 约定和规范@符号作为npm包名称中的一部分是一种命名约定,它有助于标识包的来源和用途。这有助于维护者和使用者更容易理解包的含义和用途。

示例

假设有一个名为@myorg/my-library的npm包,它提供了一些可重用的Angular组件和服务。要在Angular项目中使用这个包,您可以通过import语句引入它,如下所示:

import { MyLibraryModule } from '@myorg/my-library';

在这个示例中,@myorg/my-library是包的名称,其中@myorg表示包的范围(Scope)。这个包的范围通常与发布包的组织、公司或项目名称相关联。通过这种方式,开发者可以轻松地区分不同组织或项目的包,并避免包名冲突。

另外,如果您在Angular项目中使用Spartacus框架,@spartacus/smartedit/core就是Spartacus框架提供的核心模块,用于支持智能编辑功能。通过使用import语句将这个模块导入到您的Angular应用中,您可以轻松地利用Spartacus框架的功能来开发电子商务应用。

总之,@符号在import语句中用于表示npm包的范围(Scope),以便更好地组织和管理包,并避免包名冲突。这是一种npm包的命名约定,有助于简化包管理,提高代码可读性,并促进包的发布和维护。在Angular项目中,您可以通过import语句引入使用@符号定义的npm包,以便在项目中使用外部依赖。

标签:npm,core,Spartacus,spartacus,library,import,Angular,smartedit,加载
From: https://blog.51cto.com/jerrywangsap/7385904

相关文章

  • ProfSvc服务登录失败无法加载用户配置文件
    问题win10系统ProfSvc服务登录失败无法加载用户配置文件事件经过新建另外一个本地账户后,切换失败显示上述问题,另一个账户找不到并且进入不了桌面事件截图原因Default文件夹损坏解决从其他电脑上拷贝一份Default文件夹(Default文件夹位置:C:\Users\Default,Win版本无要求可......
  • 【原创】基于QT编写的支持IPv4/IPv6双协议栈,TCP/UDP双模式,DLL内存加载的模块化远控木
    本人已经本科毕业一年有余,在平常实习过程中,发现大佬都对我的本科毕设--双协议栈远控木马感兴趣。据我所知,目前流行的C2远控软件中,MSF支持IPv4和IPv6,但是MSF生成的单个木马只是支持其中的一种协议,而不是双协议栈。CobaltStrike目前尚无IPv6的使用案例。其他支持双协议栈的C2软件......
  • 图片懒加载
    点击查看代码letimgList=[...document.querySelectorAll('img')]letlength=imgList.lengthconstimgLazyLoad=function(){letcount=0return(function(){letdeleteIndexList=[]imgList.forEach((img,index)=>{letrect=img.getBoundingCl......
  • springboot加载bean失败:No matching autowired candidates found
    场景:之前在培训轮岗,一直没有干活,最近开始干活遇到xxljob,打算自己学习了解一下。在按照文档配置执行器项目时,发现怎么启动,xxlJobExecutor都没有被加载进来。解决:后来经过查阅,原来是springBoot启动默认扫描的是启动类所在的包以及其子包,而我的文件为:因此bean注入失败。把......
  • 图片加载框架:Glide实现原理
    Glide图片加载框架的实现原理是基于三个主要组件:RequestManager、Request和Engine。RequestManager是Glide的入口类,负责管理和协调图片加载请求。Request是一个请求的封装类,包含了图片加载所需的各种参数和配置。Engine是Glide的核心引擎,负责实际的图片加载和缓存工作。 具体......
  • springboot启动错误: 找不到或无法加载主类
    当在eclipse启动springboot项目时出现问题:springboot错误:找不到或无法加载主类解决办法:1,通过cmd命令行,进入项目目录进行,mvncleaninstall进行编译项目install后,再到eclipse上选中项目按F5刷新项目。再运行即可问题解决。2,在eclipse上选中项目 点击clean清理项目再运行问......
  • 三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析
    三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析 OBJ格式是一种常用的三维模型文件格式,它存储了三维模型的几何信息和纹理坐标等相关属性。在大规模场景中加载和渲染三维模型时,OBJ格式的轻量化压缩对于提高性能和效率起到了重要的作用。首先,使用OBJ格式的轻量......
  • Golang Gorm 一对多查询 preload预加载
    预加载示例GORM允许使用 Preload通过多个SQL中来直接加载关系,例如:typeUserstruct{gorm.ModelUsernamestringOrders[]Order}typeOrderstruct{gorm.ModelUserIDuintPricefloat64}//查找user时预加载相关Orderdb.Preload("Orders").Fin......
  • 小程序启动耗时的优化:延迟加载和异步加载
    在开发小程序时,启动耗时是一个重要的性能指标。用户希望能够尽快地看到小程序的内容,而不是面对长时间的加载等待。为了优化启动耗时,我们可以考虑使用延迟加载和异步加载的技巧。延迟加载的概念和作用延迟加载是一种在小程序启动时,将页面内容进行分步加载的策略。它的核心思想是将页......
  • uniapp项目实践总结(八)自定义加载组件
    有时候一个页面请求接口需要加载很长时间,这时候就需要一个加载页面来告知用户内容正在请求加载中,下面就写一个简单的自定义加载组件。目录准备工作逻辑思路实战演练效果预览准备工作在之前的全局组件目录components下新建一个组件文件夹,命名为q-loading,组件为q-loading......