# CHANGELOG

## 2.1.14 (@zee)
- 默认动画调优

## 2.1.12 ~ 2.1.13 (@zee)
- iOS 9.0 以下取消动画

## 2.1.11 (@zee)
- 首页取消动画

## 2.1.10 (@zee)
- 安卓取消动画（华为系统均不支持）

## 2.1.7 (@zee)
- 支持更多第二种动画

## 2.1.5 (@zee)
- 兼容 Safari 无痕浏览模式

## 2.1.4 (@zee)
- 修复设置`animationFunc`导致页面切换错误的 bug

## 2.1.3 (@zee)
- 修复`popAndSwitchRoute`在安卓下的 bug

## 2.1.1 (@zee)
- 添加`animationPrefix`参数可以配置动画的`class`前缀
- 添加`animationFunc`参数可以配置动画的 Function
- `switchRoute`添加可选参数`isShadow`，指示是否采用`replace`模式替换当前`state/URL`，默认为`false`

## 2.1.0
- 目标视图完成渲染之后再执行视图切换（@zee）
- 添加配置视图切换动画：（@zee）
  * 在`Cyra.initApp`中设置`animation`为`true`
  * 可添加以下可选参数进行动画配置，动画基于`CSS Animation`：
    * `switchDuration: number`：指示动画切换持续时间，单位`ms`，默认`320`
    * `animationPrefix: string`：自定义动画`keyframes`前缀，默认`''`
    * `animationFunc: string`：自定义动画`timing-function`，默认为`''`
  * 开启动画模式后，在项目中添加如下4个 Animation Keyframes：
    * `left-move-in`：当前视图从左侧进入动画
    * `left-move-out`：当前视图向左侧滑出动画
    * `right-move-in`：下一视图从右侧进入动画
    * `right-move-out`：下一视图向右侧滑出动画
  * 可按照如下配置：

```html
<style>
@keyframes left-move-in {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0);
  }
}

@keyframes left-move-out {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-100%);
  }
}

@keyframes right-move-in {
  from {
    transform: translateX(100%);
  }
  to {
    transform: translateX(0);
  }
}

@keyframes right-move-out {
  from {
    transform: translateX(0);
  }
  99% {
    transform: translateX(100%);
  }
  to {
    transform: translateX(-100%);
  }
}
</style>
```

## 2.0.8
- bug fix（@zee）

## 2.0.7
- bug fix（@zee）

## 2.0.6
- 添加 Cyra devtools helpers（@zee）

## 2.0.5
- 迁移`popAndSwitchRoute`至多页降级方案（@zee）

## 2.0.4
- 修复在 Android 4.2 等设备中，由于 WebView 初次加载页面时自动触发`popstate`事件导致的初始视图重复加载 bug（@zee）
- 完善 Nginx 配置（@zee）

## 2.0.3
- 修正 DOM 显示错误（@zsky）

## 2.0.1 - 2.0.2
- bug fix（@zsky）

## 2.0.0（@zee）
- `Page`中不用再写`id()`方法。
- 去除`Action`概念，路由跳转直接使用`Route`。
- API 变化：
  * 去除`Page`中`defineActions`方法
  * `Page.performAction (action: Action, data?: any)` => `Page.switchRoute (toPath: string, data?: any, copyIndex?: number)`
  * `prepareForAction (next: Function, action: Action, destinationPagePerform: Function)` => `prepareForSwitch (next: Function, toPath: string, destinationPagePerform: Function)`
  * `Page.reload (currentAction: Action)` => `Page.reload (previousPath: string)`
- `Cyra.initApp`方法添加配置参数：
  * `appRoot`：项目在服务器上的虚拟路径地址，如一元夺宝为：/resource/wa/oneyuan/
  * `mode`：使用的路由方式（`history`/`hash`/`multipage`），缺省表示默认使用 History API，如浏览器不支持则使用多页降级。若指定该配置参数，则使用对应路由方式。
  * `paramPrefix`：配置强数据通过 URL 传递时的前缀，默认为：`cpr_`。
  * `routes`：取代原有的`Cyra.defineRoute`方法来配置路由（例：`{..., routes: {detail: detail, ...},...}`）
- 实现 History API 路由方式，并完成多页降级，主要体现在弱数据处理。
- 增加数据存储接口：
  * `AppStorage.set(key: string, data: any)`
  * `AppStorage.save()`
  * `AppStorage.get(key: string)`
  * `AppStorage.clear(key: string)`
  * `AppStorage.clearAll()`
- 本地开发过程中，需要在 mock 中添加以下配置完成 rewrite：
  * `select(match('/resource/wa/proj/page'), proxy.url('/page.html'))`
  * `select(match('/resource/wa/proj/page/*'), proxy.url('/page.html'))`
- 在线上机器的 nginx 增加如下配置：

```Apache
# match img resource
location ~* ^/resource/wa/([\w-.]+)/([\w-.]+)(/.*)?$ {
 root /resource_static/;
 try_files /resource/$1/$2/$3 /resource/$1/$2 /resource/$1/$3 /resource/$1/$2.html =404;
}`
```

## 1.3.0 (@zsky)
- 每个`Page`只需 export 类而不用 export 类的实例。
- 添加`Page.beforeLeaving`接口，用来模拟拦截点击返回按钮。
- 添加`Page.popAndSwitchRoute`接口，后退 n 个 view 然后执行`Page.switchRoute`。

## 1.0.0 ~ 1.2.8 (@zsky)
- all
