前端工程化的含义
1、持续集成。
2、规范化。
3、模块化。
4、单元和功能测试。
5、自动化。
持续集成
用 Git 术语来说,持续集成就是
各个开发人员的开发代码频繁地合并进主干,始终保持代码是最新的、可用的、可随时发布的状态的这个过程。
持续集成主要通过 Git 的合并分支体现
规范化
规范化指多人合作开发时约定遵守的开发规范。如:目录命名规则、变量命名规则、模块化接口说明、后台接口说明、等等诸如以上共识均可以算作规范化。
模块化
前端模块化尤为重要,甚至是前端工程化要做的最重要的事,它的主要思想是:
划分软件成多个实际的模块,以降低系统复杂度。
而模块本身,又可以是多个子模块的集合,又进一步降低模块的复杂度。
而且模块化之后的软件也很易于团队分工,向持续集成输出了一个正向回馈。
单元和功能测试
测试主要有两种:
单元测试就是测试函数的输入和输出是否符合预期。
功能测试就是测试模块和网页的行为是否符合预期。
特别地,针对第一种,如果要测试如下函数,则还需写多额外的代码用于测试 add :
1 2 3 4 5
| function add(a, b){ return a + b; }
|
以下是供测试 add 函数的额外代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| function testAdd(func, inputArr, except){ var a = inputArr[0] , b = inputArr[1] , result = func(a, b); if (result === except) { console.log(`[√] 函数 ${func.name} 测试通过`); console.log(` 输入: ${inputArr}`); console.log(` 输出: ${result}`); return true; } else { console.log(`[×] 函数 ${func.name} 测试驳回`); console.log(` 输入: ${inputArr}`); console.log(` 输出: ${result}`); return false; } }
|
上面定义好了 add 函数和对应的改卷员 testAdd,现在还差一个函数用于调用 testAdd :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| var datas = [ { input: [1, 2], output: 3 }, { input: [3, 6], output: 9 }, { input: [-4, 10], output: 6 }, { input: [-1, -2], output: -3 } ]; datas.map(test => { return testAdd(add, test.input, test.output); });
|
以上即为一个简单的测试过程,由此总结,测试需要的两个要素:
1、测试断言 (指的是 testAdd 函数)
2、测试用例 (指的是 datas 里面的)
自动化
自动化主要是三个内容:
1、开发的自动化
2、测试的自动化
3、部署的自动化