在此强调一下,使用ES6中的模板字符串是很不错的一种体验。笔者认为ES6模板字符串一个最大的优点是:可以一次定义多行字符串,并且保证空格和缩进,而单引号或双引号只能定义单行字符串。让我们来看一下笔者以前经常使用的定义多行字符串的三种方式。

1、在一行字符串中添加\n转义换行符,这种方式耗时又容易出错,具体代码如下所示:

  1. let str1 : string = " numMeshes 5 \n /** \n * joints关键词定义了骨骼动画的bindPose \n */ \n joints { \n 'origin'-1 ( 0 0 0 ) ( -0.5 -0.5 -0.5 ) \n 'Body'0 ( -12.1038131714 0 79.004776001 ) ( -0.5 -0.5 -0.5 ) // origin \n } " ;

2、使用+=符号拼接字符串,代码如下所示:

  1. let str2: string = " numMeshes 5 " ;
  2. str2 += " /* " ;
  3. str2 += " * joints关键词定义了骨骼动画的bindPose " ;
  4. str2 += " */ " ;
  5. str2 += " joints { " ;
  6. str2 += " 'origin' -1 ( 0 0 0 ) ( -0.5 -0.5 -0.5 ) " ;
  7. str2 += " 'Body' 0 ( -12.1038131714 0 79.004776001 ) ( -0.5 -0.5 -0.5 ) // origin " ;
  8. str2 += " } " ;

3、使用数组方式并调用join函数将数组拼接成字符串,这种方式相对来说比较清晰,代码如下所示:

  1. let str3: string = [
  2. " numMeshes 5 " ,
  3. " /* " ,
  4. " * joints关键词定义了骨骼动画的bindPose " ,
  5. " */ " ,
  6. " joints { " ,
  7. " 'origin' -1 ( 0 0 0 ) ( -0.5 -0.5 -0.5 ) " ,
  8. " 'Body' 0 ( -12.1038131714 0 79.004776001 ) ( -0.5 -0.5 -0.5 ) // origin " ,
  9. " } "
  10. ] . join( " \n " ) ;

  需要注意的一点是,这三种方式中处理字符串中的子字符串(例如orgin和Body),需要使用单引号引起来。

  如果不考虑兼容性,并且你当前的JavaScrit引擎支持ES6标准的话,那么能使用模板字符串的话就尽量使用模板字符串吧。当然模板字符串还支持以${ }方式定义变量,具体的用法请自行查阅TypeScript或ES6官方手册。