如果需要使用 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 元数据。
- 围绕数据增删改查和包含业务逻辑的 Actioon 的实现。这些实现的语言可以是 ABAP,Java,Node.js 等编程语言。Action 定义在数据模型上,比如订单模型上可以有一个 Release 或者 Approve 的 Action,这些 Action 的代码,编写在 OData 所谓
Function Import
里面。
对于一个 OData 服务来说,一旦数据模型定义完毕,就可以生成元数据了,不需要等到增删改查和 Action 实现完毕。