Skip to content

Commit

Permalink
fix ecomfe#16
Browse files Browse the repository at this point in the history
  • Loading branch information
erik168 committed Dec 14, 2015
1 parent 7e533c8 commit 2ea0bae
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 27 deletions.
41 changes: 15 additions & 26 deletions es-next-style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,22 +93,17 @@
#### 2.2.1 缩进


##### [建议] 使用多行字符串时遵循缩进原则
##### [建议] 使用多行模板字符串时遵循缩进原则。当空行与空白字符敏感时,不使用多行模板字符串

解释:

`4` 空格为一个缩进,换行后添加一层缩进。将起始和结束的 `` ` `` 符号单独放一行,有助于生成 HTML 时的标签对齐。

为避免破坏缩进的统一,当空行与空白字符敏感时,建议使用 `多个模板字符串``普通字符串` 进行连接运算,也可使用数组 `join` 生成字符串。

示例:

```javascript
// good
function foo() {
let bar = `Hello
World`;
console.log(bar);
}

// good
function foo() {
let html = `
Expand All @@ -118,6 +113,18 @@ function foo() {
</div>
`;
}

// Good
function greeting(name) {
return 'Hello, \n'
+ `${name.firstName} ${name.lastName}`;
}

// Bad
function greeting(name) {
return `Hello,
${name.firstName} ${name.lastName}`;
}
```


Expand Down Expand Up @@ -443,24 +450,6 @@ let [,,, ...other] = myArray;
### 3.3 模板字符串


#### [建议] 当对行首空格敏感时,避免使用多行字符串。

解释:

由于会破坏整体的缩进,使代码整体上缺乏结构性,视觉上变丑。

示例:

```javascript
// bad
function foo() {
// 缩进再多几层会更丑
let bar = `Hello
World`;
console.log(bar);
}
```


#### [强制] 字符串内变量替换时,不要使用 `2` 次及以上的函数调用。

Expand Down
27 changes: 26 additions & 1 deletion javascript-style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -1989,6 +1989,30 @@ var str2 = '' // 建议第一个为空字符串, 第二个换行开始并缩进
+ '</ul>';
```

##### [建议] 使用字符串拼接的方式生成HTML,需要根据语境进行合理的转义。

解释:

`JavaScript` 中拼接,并且最终将输出到页面中的字符串,需要进行合理转义,以防止安全漏洞。下面的示例代码为场景说明,不能直接运行。


示例:

```javascript
// HTML 转义
var str = '<p>' + htmlEncode(content) + '</p>';

// HTML 转义
var str = '<input type="text" value="' + htmlEncode(value) + '">';

// URL 转义
var str = '<a href="/?key=' + urlEncode(value) + '">link</a>';

// JavaScript字符串 转义 + HTML 转义
var str = '<button onclick="check(\'' + htmlEncode(strLiteral(name)) + '\')">提交</button>';
```


##### [建议] 复杂的数据到视图字符串的转换过程,选用一种模板引擎。

解释:
Expand All @@ -1997,6 +2021,7 @@ var str2 = '' // 建议第一个为空字符串, 第二个换行开始并缩进

1. 在开发过程中专注于数据,将视图生成的过程由另外一个层级维护,使程序逻辑结构更清晰。
2. 优秀的模板引擎,通过模板编译技术和高质量的编译产物,能获得比手工拼接字符串更高的性能。
3. 模板引擎能方便的对动态数据进行相应的转义,部分模板引擎默认进行HTML转义,安全性更好。

- artTemplate: 体积较小,在所有环境下性能高,语法灵活。
- dot.js: 体积小,在现代浏览器下性能高,语法灵活。
Expand All @@ -2023,7 +2048,7 @@ var obj = {};
var obj = new Object();
```

##### [建议] 对象创建时,如果一个对象的所有 `属性` 均可以不添加引号,建议所有 `属性` 不得添加引号
##### [建议] 对象创建时,如果一个对象的所有 `属性` 均可以不添加引号,建议所有 `属性` 不添加引号

示例:

Expand Down

0 comments on commit 2ea0bae

Please sign in to comment.