关于 SAP Spartacus scss 处理逻辑里的变量 $useLatestStyles

如果需要使用 SCSS mixin forVersion(3.1) 在单独库中引入可选样式,并希望查看结果,则 $useLatestStyles 变量需要在本地环境设置为 true.

对于 Spartacus 开发或演示,建议使用最新样式。

为避免在应用程序中频繁更改 $minorVersion,我们提供了一个标志,可用于随时跟上最新版本。

!default 在 Bootstrap Sass 中经常使用。 它类似于反向 !important。 所有引导程序变量都使用 !default 设置,以允许开发人员进一步自定义引导程序。 使用 !default sass 只会定义尚未设置的变量。

这允许更大的灵活性。

下面是一些例子:

//Example1 Dress color = red
$auroras-dress-color: blue;
$auroras-dress-color: red;

//Example2 Dress color = red
$auroras-dress-color: blue !default;
$auroras-dress-color: red;

//Example3 Dress color = blue
$auroras-dress-color: blue;
$auroras-dress-color: red !default;

所以下面这行代码的意思是:

$useLatestStyles: false !default;

如果用户没有定义这个变量,则 $useLatestStyles 的值为默认值即 false,如果用户定义了这个变量的值,则使用用户定义的值,而忽略 false 这个默认值。

这个变量会在 scss 的处理逻辑里被使用:

@function isValidVersion($from, $to: 0)

最后通过 mixin 被外界消费:

@mixin forVersion($from, $to: 0) {
    
    
  // We never create content that is part of future releases, this should not really happen.
  @if ($from <= $_fullVersion) {
    
    
    @if (
      (isStableVersion($from, $to) and isValidVersion($from, $to)) or
        addBreakingChange($from, $to)
    ) {
    
    
      @content;
    }
  }
}

同样的逻辑还有另一个变量:$skipComponentStyles

当且仅当一个 selector 没有定义在变量 $skipComponentStyles 里时,才执行第 25 行的 extend 操作。

下面是 Spartacus style 库的 app.scss 文件:

对于 feature library style 比如下图的 cart style 而言,不应用直接 import 这个 app.scss, 否则会导致客户在 style.scss 里自定义的样式会被覆盖掉。

Spartacus CSS layout:在绘制 padding, margin 和 font-sizes 时,应该使用 rem 而不是 px.

https://github.com/SAP/spartacus/issues/15380

SAP Spartacus 4.0 不支持 Angular 13.

使用下列命令行指定使用 Angular 12 进行 Spartacus 安装:

npx -p @angular/cli@12 ng new appname --style=scss --routing false

OData 服务的实现分为 OData 数据模型的定义和围绕这些数据模型的 CRUD(增删改查) 操作的实现和 Action(function import) 的实现。

  • 数据模型的定义:这部分开发工作,定义 OData 包含哪些实体类型(EntityType),每个类型的名称,key 字段和普通字段的名称,以及这些字段的数据类型,是否能够为 null(通过 nullable 属性控制),是否允许修改等等。数据模型的定义,体现在 OData 元数据里。开发人员可以在浏览器里很方便的获得 XML 或者 JSON 格式的 OData 元数据(在 OData 服务 url 后加上参数 $metadata),并保存到本地。下图是保存到本地的 XML 格式的 OData 元数据。

  • 围绕数据增删改查和包含业务逻辑的 Action 的实现。这些实现的语言可以是 ABAP,Java,Node.js 等编程语言。Action 定义在数据模型上,比如订单模型上可以有一个 Release 或者 Approve 的 Action,这些 Action 的代码,编写在 OData 所谓 Function Import 里面。

对于一个 OData 服务来说,一旦数据模型定义完毕,就可以生成元数据了,不需要等到增删改查和 Action 实现完毕。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/124754988
今日推荐