我一直在学习Angular 2,并想知道什么是存储字符串的最佳实践。我在整个应用程序中使用各种字符串:有些字符串直接放在HTML元素中,例如,
// sample.html
<h1>This is my title</h1>
其他字符串存储在绑定到的组件模型中,例如
// boundSample.html
<h1>{{myTitle}}</h1>
// boundSample.component.ts
import ...
@Component({
templateUrl: 'boundSample.html';
})
export class BoundSampleComponent {
myTitle = 'This is another title';
}
我担心的是我的字符串遍布整个应用程序。来自C#/ WPF背景,我习惯将我的字符串保存在一个位置(例如strings.xaml
),我可以将其导入代码和UI标记(即WPF的XAML,Angular的HTML)。这极大地有助于可维护性和国际化。
此外,快速查看角度2中的internationalization建议使用i18n
属性和i18n tool
。这假设我的所有字符串都是用HTML定义的,但是如果我想在代码中使用其中的一些字符串会怎样......
如何以及在何处为Angular2中的字符串定义单个位置,以便我可以在代码中访问这些字符串并使用国际化工具?
答案 0 :(得分:3)
您可以搜索某些工具,其中一些工具很好并且已经实现了您想要的工具。但是,如果您想以的方式执行此操作,请执行以下操作:
将字符串存储在存储字符串的XAML / JSON / YAML / etc文件中。如果您使用webpack,请使用适合您的处理器的装载器。如果没有,您需要自己解析此文件。
创建一个能够从文件中获取信息的服务(我猜想在构造函数中),并且有一个函数可以根据字符串标记返回字符串。
创建一个根据令牌返回字符串的管道。
使用HTML中的管道和打样稿文件中的服务。
i18n - 没问题,只需将语言传递给服务函数/订阅服务中的语言更改observable。
实施是微不足道的。但请三思而后行:您可以使用现有的解决方案。