角色中的弦乐最佳实践2

时间:2016-12-22 09:45:33

标签: html string angular

我一直在学习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中的字符串定义单个位置,以便我可以在代码中访问这些字符串并使用国际化工具?

1 个答案:

答案 0 :(得分:3)

您可以搜索某些工具,其中一些工具很好并且已经实现了您想要的工具。但是,如果您想以的方式执行此操作,请执行以下操作:

  1. 将字符串存储在存储字符串的XAML / JSON / YAML / etc文件中。如果您使用webpack,请使用适合您的处理器的装载器。如果没有,您需要自己解析此文件。

  2. 创建一个能够从文件中获取信息的服务(我猜想在构造函数中),并且有一个函数可以根据字符串标记返回字符串。

  3. 创建一个根据令牌返回字符串的管道。

  4. 使用HTML中的管道和打样稿文件中的服务。

  5. i18n - 没问题,只需将语言传递给服务函数/订阅服务中的语言更改observable。

    实施是微不足道的。但请三思而后行:您可以使用现有的解决方案。