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

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

时间:2023-09-09 19:22:59浏览次数:35  
标签:npm core Spartacus spartacus library import 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,smartedit,加载
From: https://www.cnblogs.com/sap-jerry/p/17690020.html

相关文章

  • SpringBoot如何让业务Bean优先于其他Bean加载
    本博客原文地址:https://ntopic.cn/p/2023090901/源代码先行:Gitee本文介绍的完整仓库:https://gitee.com/obullxl/ntopic-bootGitHub本文介绍的完整仓库:https://github.com/obullxl/ntopic-boot背景介绍今天走读一个应用程序代码,发现一个有趣的现象:有多个不同的业务Bean中均......
  • 利用类加载器获取项目中的资源文件
    当需要获取项目中的配置文件时,我们可以使用类加载器来获取,主要利用的就是getResource和getResourceAsStream方法一、获取项目的classpath路径以一个springboot项目举例,在idea中运行时,classpath路径指的就是idea运行时给我们创建的target/classes目录,我们先尝试在idea中运......
  • Navicat连接oracle时,提示oracle library is not loaded
    一、背景本机配置:win764位本机同时安装了oracle服务器端和客户端服务器端:11gR2; 客户端:oracle10g32位(由于项目需要,必须安装此客户端) 二、报错描述先安装的11gR2,用Navicat连接正常,后面再安装10g32位的客户端后,连接报错:oraclelibraryisnotloaded 三、报错原因因为......
  • LGHUB打不开一直加载的问题
    这个是罗技的LGHUBUpdaterService的问题,因为开不起来,所以程序起不来。有效的方法是重启电脑,它就正常了!当然,你某次开机要是遇上它更新,大概率又要寄~,还得重启。要是某次非正常关闭程序,它也要寄~不得不说,罗技这么个大厂,写的程序真是个NC。。。嗯,刚才重启了,打开后问我使用体验......
  • 配置文件加载模块-单例配置类设计
    classConfig{有我们单例模式所需要的一些信息,首先向外提供一个统一的访问接口,然后在类内实例化一个访问对象//使用的是懒汉模式,涉及到线程安全问题,用的时候才去进行加载,所以要加锁private:staticstd::mutex_mutex;//互斥锁,来保护对象实例化的一个过程Config*_instance;//......
  • 简单梳理java中的类加载
    一、类加载器简介java中自带的类加载器可以分为根类加载器(BootStrapclassloader),扩展类加载器,应用类加载器,这三个都不是用java语言实现的。其中根类加载器和扩展类加载器用来加载java自带的一些类,而应用类加载器用来加载我们自己写的java类编译后的class文件,也就是classpath......
  • css加载图标转圈代码
    转圈代码<iclass="el-icon-loading"></i>.el-icon-loading{animation:rotating2slinearinfinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframesrotating{0%{transfor......
  • 记PE文件结构实验,模拟文件内存加载过程。
    记录文件结构试验前言:使用的模拟程序是notepad.exe,主要记录其中的思路和遇到其中的困难。实验目的:模拟内存加载PE文件的过程,将每个区段模拟加载到内存之中。根据文件结构中头表中的信息,读取并sekk指针到Segment头。然后循环遍历Segment头将内容加载到VirtualAddress中,主要目的......
  • GO语言中import GitHub的包 会影响加载速度吗
    在Go语言中使用GitHub的包不会影响加载速度。在Go语言中,所有包都是静态导入的,因此使用import关键字导入GitHub的包时,Go编译器会将包中的代码文件解压缩到您的项目目录中,并在运行时直接调用这些文件,而不是通过网络下载它们。这意味着import语句不会增加项目的启动时间,而且使用import......
  • React项目笔记-环境搭建、路由封装(跳转Navigate、懒加载lazy)、模块化样式引入、状态管
    环境准备nodev16.15.0npm8.5.5AntDesignofReact:https://ant.design/docs/react/introduce-cn一,创建项目npminitvite√Projectname:...vite-project-react√Selectaframework:»React√Selectavariant:»TypeScript然后使用vscode打开项目,由于......