标签:
一、如何设计友好的REST API
1.使用uuid代替id
2.URI参数定义由/users/age/20/60改为/users?minAge=20&&maxAge=60
3.四大method,GET是安全的,HEAD也安全,POST/PUT/DELETE是不安全的
4.让GET的实现不要改变资源状态,因为GET的攻击手段要比针对其他METHOD的多一点
方法 | 含义 | 安全 | 幂等 |
GET | 读取资源列表或指定资源详情 | 是 | 是 |
HEAD | 获取资源概况 | 是 | 是 |
POST | 创建新资源 | 否 | 否 |
PUT | 更新指定资源 | 否 | 是 |
DELETE | 删除指定资源 | 否 | 是 |
幂等的意义在于:它可以安全地自动重试刚才的操作,而不用担心破坏业务逻辑
5.分页的参数模式,推荐使用“起始位置offset+条数size”,一般使用GET请求资源,结果返回数组形式,总条数放在响应头中(用HEAD方法去取,可定时刷新)
二、语法糖controller as
推荐写法:
angular.module(‘app‘).controller(‘DemoController‘, function() { var vm = this; vm.title = ‘angular‘; return vm; })
三、双向绑定和watchers函数
compileProvider服务可以用来关闭调试信息(调试类:ng-binding、ng-scope、ng-isolate-scope等)
app.config(function($compileProvider) {
//disable debug info
$compileProvider.debugInfoEnabled(false);
})
四、one-time绑定
如果数据是静态数据,则在绑定的时候为了避免$watch产生导致性能下降,选择单次绑定: $watch在第一次实行是必要的,但之后因为不改变数据所以没有必要$watch。
单次表达式在第一次$digest完成后,将不再计算(检测属性的变化),以“::”作为前缀的表达式为one-time绑定
<ul> <li ng-repeat="session in sessions"> <div class="info"> {{::session.name}} </div> </li> </ul>
注意:目前测试one-time不适用于动态数据
五、滚屏加载(针对大数据集显示)
ngInfiniteScroll开源组件实现滚屏加载
六、总是用ng-model作为输出
有ngModel的地方都可以使用ng-change事件
七、用打包代替动态加载
八、angular-hint
定位angular中常见的错误问题
标签:
原文地址:http://www.cnblogs.com/echo2016/p/5689281.html