随着复杂且快速发展的库,在保持向后兼容性的同时改进现有功能可能具有挑战性。代码弃用允许您正确标记过时的代码,并通过警告用户帮助他们过渡到更好的替代方案。要将函数、类、方法或属性标记为已弃用,请使用@deprecated标记。下面是一个示例:/***@deprecatedsince1.0.2*Usebetteralternativeinstead*/根据实际的弃用政策,此类代码将在下一个主要版本中被删除。标记弃用逻辑通常,为了适应向后兼容,一些间接相关的代码需要包含额外的逻辑,当相关的弃用功能被移除时,这些逻辑应该被移除。当不清楚应删除哪些附加逻辑时,确保删除过时代码的最佳方法是使用适当的TODO注释对其进行标记,最好链接到具有附加详细信息的GitHub问题。这些票证应该被正确标记(例如,带有deprecated-1.x的标记),以便将来可以更容易地将它们作为删除的候选者引用。以下是TODO注释的示例://TODO(issue:3313)Deprecatedsince1.1.1FeatureFlags新功能随每个新的次要版本一起发布。有时,新功能会添加到客户已经可用的现有组件中,从而使这些更改成为破坏性更改,这要么是因为添加了DOM,要么是因为行为不同。为了避免破坏客户的代码,并能够灵活地改进现有组件的功能,而无需过于频繁地发布新的主要版本,Spartacus使用了功能标志。功能标志允许我们执行以下操作:根据功能级别区分功能,对应于次要版本根据显式功能标志区分功能注意:显式功能标志可以链接到功能级别,这意味着它们在该特定级别默认启用.决定是否需要功能标志如果不需要功能标志,最好避免创建新的功能标志。这有助于保持我们的配置清洁并使最终维护更容易。以下准则可帮助您决定应使用哪个功能标志(如果有):(1)尽可能避免使用功能标志。相反,将您的功能实现为一个单独的模块,如果客户愿意,可以将其导入。(2)如果你的函数已经有单独的配置,决定下面哪一个更方便:在模块配置中创建一个新选项(对于一般功能,使它们可切换具有实际价值)。b.使用功能标志(尤其是当标志的唯一原因是向后兼容时)。如果可能,尽量避免创建明确的功能标志。相反,尝试启用特定功能级别的功能,例如次要版本。如果您要创建明确的功能标志,请确保这样做有正当理由(例如,该功能非常重要,可以明确禁用或启用)。检测功能级别如果您的服务或组件注入了全局配置,您可以使用一个简单的实用函数来检查功能级别,如下例所示:if(isFeatureLevel(this.config,'1.1')){//为功能级别1.1及更高级别执行的代码}如果您的组件或服务无权访问全局配置,您可以注入FeatureConfigService并使用它,如下例所示:constructor(//...protectedfeatureConfig:FeatureConfigService){}//根据特征级别设置特征标志readonlyisSomeNewFeatureEnabled=this.featureConfig.isLevel('1.1');如果要在模板中有条件地显示组件,可以使用cxFeatureLevel指令,如下例所示:
