http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/releasenote.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/releasenote.md b/doc/source/cn/releasenote.md
deleted file mode 100644
index 02aa8c8..0000000
--- a/doc/source/cn/releasenote.md
+++ /dev/null
@@ -1,353 +0,0 @@
----
-title: Release Note
-type: releasenote
-layout: post
----
-
-# Release Note
-
-## v0.17
------
-
-* `feature` `Android/iOS` Support `writing direction 
style:direction=rtl`([#782](https://github.com/apache/incubator-weex/pull/782)[#886](https://github.com/apache/incubator-weex/pull/886))
-* `feature` `Android/iOS` Support scroll start and scroll end event on 
scroller and list 
([#858](https://github.com/apache/incubator-weex/pull/858)[856](https://github.com/apache/incubator-weex/pull/856))
-* `feature` `iOS` support text max-width 
([#834](https://github.com/apache/incubator-weex/pull/834))
-* `feature` `Android` CSS Transiton Animation Supported component 
([#851](https://github.com/apache/incubator-weex/pull/851))
-* `feature` `Android` New `local` module 
([#781](https://github.com/apache/incubator-weex/pull/781))
-* `feature` `Android` Support ripple background on Android 5.0 and higher 
([#792](https://github.com/apache/incubator-weex/pull/792))
-* `feature` `Android` Support multi language on dialog 
([#831](https://github.com/apache/incubator-weex/pull/831))
-* `feature` `H5` Support lazyload and appear watcher when body height set to 
100% ([#827](https://github.com/apache/incubator-weex/pull/827)).
-* `feature` `H5` Add try catch for storage accessing incase user disabled the 
related function in a browser 
([#827](https://github.com/apache/incubator-weex/pull/827)).
-* `feature` `H5` image support css sprite (sprite-src, sprite-position, 
sprite-width) ([#827](https://github.com/apache/incubator-weex/pull/827)).
-* `feature` `JSFM` Support batch update styles and attributes in Vue.js 
([#819](https://github.com/apache/incubator-weex/pull/819) 
[#7046](https://github.com/vuejs/vue/pull/7046))
-* `feature` `JSFM` Stop trimming CSS units in richtext component. 
([#6927](https://github.com/vuejs/vue/pull/6927))
-* `feature` `JSFM` Stop rethrow the captured error on Weex platform. 
([#7024](https://github.com/vuejs/vue/pull/7024))
-* `feature` `JSFM` Upgrade weex-vue-framework to 2.5.3 ([release 
nodes](https://github.com/vuejs/vue/releases/tag/v2.5.3))
-* `feature` `JSFM` Adjust the behavior of `nextTick` to improve compatibility.
-* `bugfix` `iOS` bugfix boxshadow render abnormal 
([#791](https://github.com/apache/incubator-weex/pull/791))
-* `bugfix` `iOS` bugfix timer exposed on JSContxt 
([#839](https://github.com/apache/incubator-weex/pull/839))
-* `bugfix` `iOS` fix iOS8 scrollview’s assign delegate crash 
([#838](https://github.com/apache/incubator-weex/pull/838))
-* `bugfix` `iOS` fix setViewport:sometimes doesn’t 
work([#843](https://github.com/apache/incubator-weex/pull/843))
-* `bugfix` `iOS` fix addEvent lead to generate a new view while it as been 
recycled ([#837](https://github.com/apache/incubator-weex/pull/837))
-* `bugfix` `iOS` fix about setting nan frame crash 
([#853](https://github.com/apache/incubator-weex/pull/853))
-* `bugfix` `iOS` disable tableview estimation row or section height which make 
list component behavior abnormal 
([#867](https://github.com/apache/incubator-weex/pull/867))
-* `bugfix` `Android` Fix that moveElement doesn’t work when parent is not a 
list ([#805](https://github.com/apache/incubator-weex/pull/805))
-* `bugfix` `Android` Fix flicker caused by coexistence of box-shadow and 
border-radius (#[780](https://github.com/apache/incubator-weex/pull/780))
-* `bugfix` `Android` Fix android new Date() cannot get accuracy time 
([#753](https://github.com/apache/incubator-weex/pull/753))
-* `bugfix` `H5` Fix scroll event listenning and scrollToElement on chrome for 
the latest version ([#827](https://github.com/apache/incubator-weex/pull/827)).
-
-## v0.16
------
-* + support 3d rotate 
([#532](https://github.com/apache/incubator-weex/pull/532) 
[#418](https://github.com/apache/incubator-weex/pull/418))
-* + new feature support perspective function in transform 
([#551](https://github.com/apache/incubator-weex/pull/551)[#532](https://github.com/apache/incubator-weex/pull/532))
-* + new feature support save image to photo album 
([547](https://github.com/apache/incubator-weex/pull/547) 
[575](https://github.com/apache/incubator-weex/pull/575) 
[544](https://github.com/apache/incubator-weex/pull/544))
-* + support `image.save` 
([#575](https://github.com/apache/incubator-weex/pull/575)).
-* + optimize event binding and support mobile firefox, and also fix a lot of 
other things ([#606](https://github.com/apache/incubator-weex/pull/606)).
-* + Support js service in Rax DSL.
-* + Partial support of sending `ArrayBuffer` between js and native.
-* + Add basic support of `<recycle-list>`, both in Vue and Rax DSL.
-* + Support saving image to photo alubm in `image` 
[#547](https://github.com/apache/incubator-weex/pull/547)
-* + Support perspective features 
[#551](https://github.com/apache/incubator-weex/pull/551)
-* + New interface to performance tracing 
[#586](https://github.com/apache/incubator-weex/pull/586)
-* + Add the ability of FlatGUI, it can reduce the view hierarchy in `cell` 
[#643](https://github.com/apache/incubator-weex/pull/643)
-* + Support the `box-shadow` style for Android 4.3 and higher 
[#685](https://github.com/apache/incubator-weex/pull/685)
-* + Support float interval/delay in timer 
[#699](https://github.com/apache/incubator-weex/pull/699)
-* + New `recycle-list` compoent with hight performance and low memory cost 
[#726](https://github.com/apache/incubator-weex/pull/726)
-* * remove dependency about socketRocket dependency in iOS.
-* * fix coretext crash in iOS.
-* * fix toast view still pop while the page was destroyed in iOS.
-* * separate weex-vue-render into two parts: render core and plugins 
([#533](https://github.com/apache/incubator-weex/pull/533)).
-* * Fix Jni crash due to emoji 
[#574](https://github.com/apache/incubator-weex/pull/574)
-* * Fix the lost refresh header of `list` in viewpager 
[#601](https://github.com/apache/incubator-weex/pull/601)
-* * Fix draw iconfont fail when first download iconfont 
[#625](https://github.com/apache/incubator-weex/pull/625)
-* * Fix the problem of 'text-overflow:clip' 
[#718](https://github.com/apache/incubator-weex/pull/718)
-* * Fix android new Date() cannot get accuracy time 
[#753](https://github.com/apache/incubator-weex/pull/753)
-
-## v0.15
-------
-* + support fast click and hairlines border 
[#507](https://github.com/apache/incubator-weex/pull/507).
-* + Add `weex.supports` api for feature detections. 
[#6053](https://github.com/vuejs/vue/pull/6053)
-* + Change default image quality to `WXImageQuality.AUTO` 
[#478](https://github.com/apache/incubator-weex/pull/478)
-* + Support the `scroll` event on horizontal 
scroller[#494](https://github.com/apache/incubator-weex/pull/494)
-* * Fix the console API to adapt JSC on Android. 
[#470](https://github.com/apache/incubator-weex/pull/470)
-* * Fix invalid call scrollToElement when has not option param 
[#491](https://github.com/apache/incubator-weex/pull/491)
-* * Fix the lines of `text` cannot be reset 
[#493](https://github.com/apache/incubator-weex/pull/493)
-* * Fix invalid init index on `slider` 
[#510](https://github.com/apache/incubator-weex/pull/510)
-* * Fix Memory optimization for `list` 
[#512](https://github.com/apache/incubator-weex/pull/512)
-
-## v0.14
-------
-* + support `waterfall` component 
([#438](https://github.com/apache/incubator-weex/pull/438)).
-* + support pseudo-class 
([#474](https://github.com/apache/incubator-weex/pull/474)).
-* + Support component method in Vue DSL. 
([proposal](https://github.com/alibaba/weex/issues/969))
-* + Support returning value synchronously for module methods. 
([proposal](https://github.com/alibaba/weex/issues/1677))
-* + Support drag-drop on `list` 
[#416](https://github.com/apache/incubator-weex/pull/416)
-* + Support rotateX and rotateY, optimize animation as well 
[#418](https://github.com/apache/incubator-weex/pull/418)
-* * Fix wrong vertical offset in scroll event on `waterfall` 
[#424](https://github.com/apache/incubator-weex/pull/424)
-* * Fix `clearTimeout` and `clearInterval` doesn't work when funId is greater 
than 127 [#439](https://github.com/apache/incubator-weex/pull/439)
-
-## v0.13.0
-------
-### Notable Changes
-* Slider implemention is refactored [Pull 
Request#414](https://github.com/apache/incubator-weex/pull/414)
-* Improve integration test. We are working with macaca team, to write better 
test code.[Pull Request#411](https://github.com/apache/incubator-weex/pull/411) 
[Pull Request#397](https://github.com/apache/incubator-weex/pull/397) [Pull 
Request#402](https://github.com/apache/incubator-weex/pull/402) [Pull 
Request#413](https://github.com/apache/incubator-weex/pull/413) [Pull 
Request#390](https://github.com/apache/incubator-weex/pull/390) [Pull 
Request#346](https://github.com/apache/incubator-weex/pull/346) [Pull 
Request#319](https://github.com/apache/incubator-weex/pull/319) [Pull 
Request#304](https://github.com/apache/incubator-weex/pull/304) [Pull 
Request#295](https://github.com/apache/incubator-weex/pull/295)
-* `scroller` now has `pagingEnabled` attribute, which can enable `paging` 
feature in native [Pull 
Request#393](https://github.com/apache/incubator-weex/pull/393)
-* New 'prerender' mechanism, which will support rendering a page in 
background. [Pull 
Request#343](https://github.com/apache/incubator-weex/pull/343) Pull 
Request#342](https://github.com/apache/incubator-weex/pull/342)
-* Fix `line-height` feature in iOS. [Pull 
Request#377](https://github.com/apache/incubator-weex/pull/377) [Pull 
Request#305](https://github.com/apache/incubator-weex/pull/305)
-* Add `needLayout` option in animation module operation after animation 
finished [Pull Request#337](https://github.com/apache/incubator-weex/pull/337) 
[Pull Request#336](https://github.com/apache/incubator-weex/pull/336)
-* `list` component has new type of event for `sticky` feature [Pull 
Request#332](https://github.com/apache/incubator-weex/pull/332)
-* Support bota and atob [Pull 
Request#315](https://github.com/apache/incubator-weex/pull/315)
-* Fix mixing background-color and border-color(rgba) in android [Pull 
Request#359](https://github.com/apache/incubator-weex/pull/359)
-
-
-Beside these, lots of crashes and bugs are fixed.[Pull 
Request#441](https://github.com/apache/incubator-weex/pull/441) [Pull 
Request#413](https://github.com/apache/incubator-weex/pull/413) [Pull 
Request#403](https://github.com/apache/incubator-weex/pull/403) [Pull 
Request#373](https://github.com/apache/incubator-weex/pull/373)
-
-## v0.12.0 ( First Offical Release)
----------
-- C++ timer  by lycool
-Discussed in 
https://lists.apache.org/thread.html/567c9b19d68ccf3e0d24c1467298ebcd4316ffa524c557a34c6c087f@%3Cdev.weex.apache.org%3E
-relate pull 
requests:[apache/incubator-weex/pull/228|https://github.com/apache/incubator-weex/pull/228],
 
[apache/incubator-weex/pull/232|https://github.com/apache/incubator-weex/pull/232],
 
[apache/incubator-weex/pull/221|https://github.com/apache/incubator-weex/pull/221]
-
-- Add scroller/list scroll event in html5 render
-android&iOS already have this feature in v0.11
-https://github.com/apache/incubator-weex/commit/f50fba8647c8bb6ac522b1a4569a2a2269da1953
-
-- Enhance accessibility, new `aria-label` & `role` support
-[apache/incubator-weex/pull/149|https://github.com/apache/incubator-weex/pull/149]
-
-- Native input/textarea enhancement by kfeagle &  misakuo
-support `number` data type; support soft keyboard event 
-
-- Picker module enhancement
-More picker options to customize picker dialog style(background color etc.). 
Related pull requests: 
[apache/incubator-weex/pull/234|https://github.com/apache/incubator-weex/pull/234],
 
[apache/incubator-weex/pull/233|https://github.com/apache/incubator-weex/pull/233]
-
-- Android DOM module refactor
-Seperate module code by action, increasing the maintainability.
-[apache/incubator-weex/pull/104|https://github.com/apache/incubator-weex/pull/104]
-
-## v0.10.0
-------
-- New Feature
-  - Support Vue.js  
-    The Vue.js 2.1.8 ([runtime-only 
build](https://vuejs.org/v2/guide/installation.html#Standalone-vs-Runtime-only-Build))
 is in WeexSDK now. You can use Vue.js to build native app by WeexSDK 0.10.0.  
-    We reused the original native render engine and developed a new renderer 
([weex-vue-render](https://www.npmjs.com/package/weex-vue-render)) for the web 
platform, which is based on Vue 2.0.  
-    The former front-end framework (commonly known as `.we`), which is 
inspired by Vue 1.0, is deprecated. Although it still works well in this 
release, we suggest to migrate it to Vue 2.0.
-  - SDK
-    - New CSS support
-      - [text 
`font-weight`](https://weex-project.io/references/text-style.html)  
-        `font-weight` can set to [`normal`|`bold`] or 100-900.
-      - gradient  
-        like CSS3, now you can use gradient in Weex. For example:   
-        
-        ``` css
-        background-image: linear-gradient(to right, blue, white);
-        ```
-        
![img_1695](https://cloud.githubusercontent.com/assets/115201/23015955/ba075876-f46f-11e6-9d88-2ca3096551b9.jpeg)
-        [Read more about 
gradient](https://weex-project.io/references/common-style.html).
-      - Pseudo class  
-        Currently, Weex supports 4 pseudo classes:`active`, `focus`, 
`disabled`, `enabled`. 
-    - New BroadcastChannel API
-      Developers can use `BroadcastChannel` API to implement inter-instance 
communication.   
-      
-      ``` js
-      const Stack = new BroadcastChannel('Avengers')
-      Stack.onmessage = function (event) {
-        console.log(event.data) // in this case, it's "Hulk Smash !!!"
-      }
-      
-      // in another instance
-      const Hulk = new BroadcastChannel('Avengers')
-      Hulk.postMessage("Hulk Smash !!!")
-      ```
-    - Image's `onload` event add [`naturalHeight` and 
`naturalWidthimage`](https://weex-project.io/references/components/image.html) 
to get the original size of image file.
-    - Websocket Support  
-      WebSockets is an advanced technology that makes it possible to open an 
interactive communication session between the user's h5/iOS/android and a 
server. With this API, you can send messages to a server and receive 
event-driven responses without having to poll the server for a reply.  
-      [Read more about Weex's 
websocket.](https://weex-project.io/cn/references/modules/websocket.html)
-    - Support synchronous method call
-      Both module and component method can defined synchronous method exposed 
to JS runtime now. Means native will invoke these method in JS thread directly.
-    - Support `viewport` configuration
-      Similar to [W3C 
specification](https://drafts.csswg.org/css-device-adapt/#viewport-meta), Weex 
support set define `viewport` in script tag:   
-      
-      ``` html
-      <script type="config">
-        {
-          "viewport": {
-              "width": "device-width"
-          }
-        }
-      </script>
-      ```
-  - Tools   
-    - [Devtools](https://github.com/weexteam/weex-devtool)
-      - Support Vue 2.0 debugging.  
-      - Add network switch for network inspector.
-      - Make application capable to decide which bundle is 'un-debuggable', 
which means page's source code is unreadable in debug mode.
-    - [Weexpack](https://github.com/weexteam/weex-pack)
-      - Has full set of commands for developers to setup android/ios 
application with his .we/.vue files.
-      - Developers could easily pack/install his application with simple 
command.
-      - Has full set of commands for developers to manage weex plugins, 
including create plugin template, add plugin to his project etc.
-      - [Plugin market](http://market.weex-project.io) was formally used for 
developers to publish/download weex plugins.
-
-
-## v0.9.4
-------
-- New features
-  - SDK
-    - New API to get Component's size and position:
-      Now you can get these data through `getComponentRect`:   
-      ``` javascript
-      var dom = require('@weex-module/dom');
-      dom.getComponentRect(this.$el('comp_id'), function(data){
-        if(data.result)
-          console.log(data);
-      });
-      ```
-      The `data` callback parameter contains a `result` to tell if operation 
is success. And `size` tell you the true 
data(`bottom`/`top`/`left`/`right`/`width`/`height`) of component.
-    - A brand new `picker` module. We have 'single-picker','date-picker' and 
'time-picker' currently, and more common pickers are on the way.  
-      
![img_1282](https://cloud.githubusercontent.com/assets/115201/21414801/e6341b36-c83d-11e6-9e5a-3acdabb592ee.png)
-    There are two ways to use `picker`
-    - Use `picker` module directly:
-    ``` javascript
-    var picker = require('@weex-module/picker');
-    var self = this;
-    picker.pickDate({
-        'value':'2016-11-28',
-        'max':'2029-11-28',
-        'min':'2015-11-28'
-    },function (ret) {
-        var result = ret.result;
-        if(result == 'success')
-        {
-            self.value = ret.data;
-        }
-    });
-    ```
-    - `input` component also add 'date' and 'time`type to work with`picker` 
module internally:
-    ``` html
-    <input
-      type="date"
-      placeholder="select date"
-      class="input"
-      autofocus="false"
-      value=""
-      onchange="onchange"
-      max = "2029-11-28"
-      min = "2015-11-28"
-              ></input>
-    ```
-  - Support animation with `width` and `height` property.
-  - Support use empty value to reset css property to default value.
-  - Components can expose methods too, like modules do. Developers use the 
same way as create module method to achieve that.
-  -  Add `blur` and `focus` method to manually control `input` component to 
lose or get focus.
-  -  Support relative URL, which will resolve real URL by bundle's URL.
-  -  Core javascript framework's unit test coverage is 100% now. we'll pay 
more attention to quality.  
-  - DevTool
-    - Support to check the node hierarchy in 
[weex-devtool-extension](https://github.com/weexteam/weex-devtool-extension) 
and highlight the node if it exceeds an specified level.
-    - Support different refresh mode in devtools to reload the page or SDK 
automatically when source file updated.
-    - Improve quality in 
[weex-devtools-android](https://github.com/weexteam/weex-devtools-android) 
module
-      - Remove explicit dependency on okhttp and okhttp3 by reflection and 
proxy
-      - Improve demo application with less and refactored code
-      - Fix some crash caused by class up cast
-      - Fix reflection crash caused by complier optimization
-      - Fix "network on main thread" and stop screencast when disconnect
-    - Add 
[weex-analyzer-android](https://github.com/weexteam/weex-analyzer-android) and 
[weex-analyzer-ios](https://github.com/weexteam/weex-analyzer-ios) which 
support the following on device directly:
-      - Inspect FPS/CPU/memory
-      - Inspect storage
-      - Display log information
-      - 3D viewer of the weex page
-      - Javascript error prompt
-
-
-## v0.8.0
-------
-
-- New Features
-  - Add [globalEvent 
module](https://github.com/alibaba/weex/blob/doc/doc/modules/globalevent.md)
-  - Support `width/height` animation in transition
-  - Refactor the default js framework code, hide almost all the private APIs 
#777
-  - iOS 10 compatibility
-- Performance
-  - Support `callAddElement` low-level API to make rendering faster
-  - Improve SDK initialization performance, for minimise invoke thread impact.
-  - Use native `Set` polyfill to fix iOS7 memory leak
-  - Use `setProperty` replace reflection for better performance
-  - Add `static` directive in default js framework to avoid unnecessary 
data-binding and take down the memory use
-- Tools
-  - Add [weex-pack](https://github.com/weexteam/weex-pack), our next 
generation of engineering development kits. It allows developers to create weex 
projects with simple commands and run the project on different development 
platforms.
-  - Add 
[weex-devtool-extension](https://github.com/weexteam/weex-devtool-extension), a 
extension for Weex devtool to improve your debug experience,which equivalent 
an element tag for debugger page.
-  - Move devtool to separate 
[iOS](https://github.com/weexteam/weex-devtool-iOS) and 
[Android](https://github.com/weexteam/weex_devtools_android) repos.
-    - Add "screencast" which enable the screen of the device(or monitor) to 
appear on the "Inspector" page; 
-    - Add "remote control" function, in Android user could control remote 
device(or monitor) when he moves mouse on screencast; 
-    - Add "select element" function which enable the user to find the exact 
node in "Elements" inspector Tab when he click the mouse on screencast;  
-    - Add "vdom inspector", so user can choose to see the details of native 
dom or vdom in "Elements" Tab at his preference; 
-    - Adjust interfaces with weex SDK to support "callAddElement"; 
-
-
-## v0.7.0
-------
-- New Features
-  - [Timer 
Module](https://github.com/alibaba/weex/blob/doc/doc/modules/timer.md)
-  - [Storage 
Module](https://github.com/alibaba/weex/blob/dev/doc/modules/storage.md)
-  - Unify the `image` component's error page when src is invalid
-  - Unify the `border`,`padding`,`background-color` style
-  - Horizontal-scroller support  `scrollto`  api
-  - Fix the issue that component with  `position:fixed` style can not be closed
-  - Module callback support `object` params
-  - Slider suppport  `setIndex` api
-- Performance
-  - Use `callNative` signal to stop JSFM render after instance been destroyed
-  - Lazily initialize JSFM When device is in low-memory status, improve SDK 
stability
-- [Tools](http://alibaba.github.io/weex/doc/tools/devtools.html)
-  - Support debugging  weex(.we) and  react(.jsx) source 
-  - Support apps debugging on the same device 
-  - Support "watch" feature
-  - Solve the dependency on Debugger, user could start "Inspector" first or 
"Debugger" at will
-  - Add "refresh" function in sdk, user could inspect new file by scanning its 
QR code in playground;
-  - Android/ios inspect module split from weex sdk,  and will deliver in 
separate repo in future; support inspect in windows system
-
-## v0.6.1
-------
-- New Features
-  1. [iOS has been open sourced](https://github.com/alibaba/weex/tree/dev/ios)
-  2. [Lifecycle Page 
Event](https://github.com/alibaba/weex/blob/v0.6.1/doc/references/common-event.md#page-event):
 viewappear, viewdisappear
-  3. 
[fetch](https://github.com/alibaba/weex/blob/v0.6.1/doc/modules/stream.md#fetchoptions-callbackprogresscallback)
-  4. 
[line-height](https://github.com/alibaba/weex/blob/v0.6.1/doc/components/text.md#styles)
-  5. [list 
component](https://github.com/alibaba/weex/blob/v0.6.1/doc/components/list.md) 
-     - support sticky header 
-     - support scrollToElement API
-     - support nested horizontal scroller
-     - support cell children nodes event: appear/disappear
-  6. 
[Gesture](https://github.com/alibaba/weex/blob/v0.6.1/doc/references/gesture.md):
 panstart/panmove/panend, swipe, longpress
-  7. Improve Android text compatibility
-- Performance
-  1. iOS, iPhone 5c, rendering frame rate ascends from 45FPS to 52FPS
-  2. Android, Redmi Note 1, loading time of the first screen  descends from 
602ms to 480ms
-  3. Improve Android animation performance
-- Tools
-  1. [weex-toolkit](https://www.npmjs.com/package/weex-toolkit) supports 
require and generator
-  2. Playground supports runtime performance viewer
-  3. [Weex 
DevTools](https://github.com/alibaba/weex/blob/v0.6.1/doc/tools/devtools.md)
-     
-     <img 
src="https://img.alicdn.com/tps/TB1O.nwKFXXXXX8XpXXXXXXXXXX-1436-811.png"; 
width="600">
-
-
-## v0.5.0
-------
-
-### New Features
-1. 
[TabBar](https://github.com/alibaba/weex/blob/dev/doc/components/wxc-tabbar.md) 
is a specialized component corresponding to the radio-style selection.
-2. 
[NavPage](https://github.com/alibaba/weex/blob/dev/doc/components/wxc-navpage.md)
 contains a navbar at the top of the window and an embed content page.
-3. [Activity 
Showcase](https://github.com/alibaba/weex/blob/dev/examples/showcase/new-fashion/index.we)
 is built by composing TabBar and NavPage.
-4. [Web](https://github.com/alibaba/weex/blob/dev/doc/components/web.md) 
displays web content in the weex page.
-5. [A](https://github.com/alibaba/weex/blob/dev/doc/components/a.md)  defines 
a hyperlink to a page in the web.
-6. `Text` supports style 
[text-overflow](https://github.com/alibaba/weex/blob/dev/doc/references/text-style.md#properties).
-7. `Image` supports attribute 
[resize](https://github.com/alibaba/weex/blob/dev/doc/components/image.md#styles).
-8. `List` supports [events `appear`, `disappear`, 
`loadmore`](https://github.com/alibaba/weex/blob/dev/doc/components/list.md#events)
 and 
[refresh](https://github.com/alibaba/weex/blob/dev/doc/components/list.md#child-components).
-9. New Syntax
-   1. [Inline 
event](https://github.com/alibaba/weex/blob/dev/doc/syntax/events.md#inline-handler)
 supports a expression of calling event handler in template.
-   2. [Require Native 
Module](https://github.com/alibaba/weex/blob/dev/doc/modules#how-to-use) 
requires a native module by `require('@weex-module/moduleName')`.
-   3. [Computed 
Property](https://github.com/alibaba/weex/blob/dev/doc/syntax/data-binding.md#computed-properties)
 supports complicated logic in data bindings.
-   4. [New Repeat 
Syntax](https://github.com/alibaba/weex/blob/dev/doc/syntax/display-logic.md#a-extension-of-repeat-syntax)
 is easy to access the key or value of repeated object.
-
-
-------
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/create-a-weex-project.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/create-a-weex-project.md 
b/doc/source/cn/v-0.10/advanced/create-a-weex-project.md
deleted file mode 100644
index 780341b..0000000
--- a/doc/source/cn/v-0.10/advanced/create-a-weex-project.md
+++ /dev/null
@@ -1,271 +0,0 @@
----
-title: 如何创建一个 Weex 项目
-type: advanced
-order: 3
-has_chapter_content: true
-version: 0.10
----
-
-# 如何创建一个 Weex 项目
-
-对于前端开发者来说开发一个 app 是不容易的,既然 Weex 
能以 web 的开发体验构建高性能、可扩展的 native 
应用,那我们怎么利用 Weex 简单高效的开发一个 native 
应用呢?Weex 替你考虑了这件事。在本章中,我们将学习
如何使用 Weexpack 工具快速生成一个全新的 Weex 项目。
-
-根据你的操作系统的不同,步骤也略有差异,如果你
从未接触过 native 开发,请慢慢来,遇到问题随时查阅 
[FAQ](../faq.md)。
-
-首先,不论任何平台,我们都需要 node.js 和 
Weexpack。在本节中,默认你已经安装好了 node.js 和 
npm,如有疑问,可参考上一章 [如何在本地开发 Weex 
页面](../guide/develop-on-your-local-machine.html)。
-
-Weexpack 是 Weex 新一代的工程开发套件,它允许开发者
通过简单的命令,创建 weex 
工程项目,将项目运行在不同的开发平台上。未来,我们考虑会将å
…¶é›†æˆåœ¨ weex-toolkits 上,但目前仍需要单独安装。好在安装 
Weexpack 非常简单,可以直接使用 npm 安装:
-
-```bash
-npm install weexpack -g
-```
-
-或者用 cnpm:
-
-```bash
-cnpm install weexpack -g
-```
-
-接下来的步骤会有一些复杂和区别,æ 
¹æ®å¼€å‘平台的不同,我们提供了快速导航便于阅读:
-
-- [iOS](#ios)
-- [Android](#android)
-
-## iOS
-
-Mac 是唯一可以开发 iOS 应用的平台,因此创建 iOS 
项目只支持 mac。对于 iOS,你需要安装 
[Xcode](https://developer.apple.com/xcode/) 和 
[CocoaPods](https://guides.cocoapods.org/using/getting-started.html) 。
-
-安装 Xcode 最简单的方法是到 [Mac App 
Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12)。Xcode 
体积较大,下载请耐心等待。
-
-安装好 Xcode 后,你需要运行 Xcode,使 Xcode 自动安装开发者
工具和确认使用协议。
-
-之后你还需要安装 
[CocoaPods](https://guides.cocoapods.org/using/getting-started.html) 
。CocoaPods 是 Xcode 项目的类库管理工å…
·ï¼Œå¯ä»¥ä½¿ç”¨å¦‚下命令安装:
-
-```bash
-$ sudo gem install cocoapods
-```
-
-如果执行该命令无反应,很可能是 gem source 问题,你
可以切换为淘宝 gem source:
-
-```bash
-$ gem sources --remove https://rubygems.org/
-$ gem sources -a https://ruby.taobao.org/
-$ sudo gem install cocoapods
-```
-
-如有问题,可参考 [CocoaPods 
官方文档](https://guides.cocoapods.org/using/getting-started.html)
-
-### 创建项目
-
-然后,就可以使用 weexpack 创建 weex 工程了:
-
-```bash
-$ weexpack init appName
-```
-
-weexpack 会自动新建以 appName 
命名的目录,并将项目模板拉取到该目录。
-
-最终形成如下目录结构:
-
-```bash
--> /appName
-.
-|—— .gitignore
-|—— README.md
-|—— package.json
-|-- android.config.json
-|-- ios.config.json
-|—— webpack.config.js
-|—— /src
-|     |—— index.we
-|—— /html5
-|     |—— index.html
-|—— /ios
-|     |—— /playground
-|     |—— /sdk
-|     |—— /WXDevtool
-|—— /android
-|     |—— /playground
-|     |—— /appframework
-```
-
-其中:
-
-- `webpack.config.js` 是 webpack 配置文件,用于生成 `.we` 文件的 
JSBunlde
-- `ios.config.json` 是 iOS 项目配置文件
-- `android.config.json` 是 Android 项目配置文件
-- `/src` 目录放置 Weex 页面
-- `/html5` 是 H5 端入口文件
-- `/ios` 放置 iOS 项目
-- `/android` 放置 Android 项目
-
-紧接着,进入目录,并且安装依赖:
-
-```bash
-$ cd appName && npm install
-```
-
-至此,项目模版创建完成,接下来我们可以自定义我们的 
APP 信息并打包运行。
-
-### 运行与打包
-
-如果一切正常,你可以使用 weexpack 打包或模拟器运行了:
-
-模拟器运行
-
-```bash
-$ weexpack run ios
-```
-
-构建 ipa 包:
-
-```bash
-$ weexpack build ios
-```
-
-构建包的过程中,将会提示让您输入 
CodeSign(证书)、Profile(provisioning profile)、AppId,只有输å…
¥çœŸå®žçš„这些信息才能成功打包。 其余如AppName,和入口 weex 
bundle 文件可以编辑项目目录下的 `ios.config.json` 配置。 
打完包成功之后,可以在 `/playground/build/ipa_build/` 
目录下获取 ipa 文件。
-
-注:证书需要预先安装到 keychain 中,在 keychain 
中点击右键获取证书 id(证书名称)、provisioning profile 
文件(\*mobileprovision)需要获取 UUID,进入目录可以看到 
mobileprovision_UUID.sh 文件,此文件可以获取到 UUID。
-
-mobileprovision_UUID.sh 用法如下:
-
-```bash
-$ ./mobileprovision_UUID.sh *mobileprovision
-```
-
-参数(\*mobileprovision)为 provisioning profile 文件路径
-
-** 注:run 与 build 部分涉及 pod 的依赖安装问题。**
-
-- 首先要安装 cocoapods ,具体安装
步骤可查看[这里](https://cocoapods.org/),建议安装 0.39.0 版本。
-- 为了加快 CLI 执行速度,weexpack 创建的工程默认安装
了需要的依赖库。但是命令执行依然会更新需要升级的依赖库。
-  - 如果出现这种错误提示 `unable to find a specification for 
'WeexSDK'` 这种错误,说明你本地没有更新 cocoapods master 
仓库,运行 `pod repo update` ,此时运行 `pod search WeexSDK`:
- 
-  ![](https://img.alicdn.com/tps/TB1jLx4OFXXXXaoXFXXXXXXXXXX-212-33.png)  
- 
-  说明 master repo 更新成功。以上是以 `WeexSDK` 为例,å…
¶ä»–库类似。
- 
-  - 如果出现这种错误 `error: The sandbox is not in sync with the 
Podfile.lock. Run 'pod install' or update your CocoaPods installation.` 进入 
playground 目录(podfile 文件所在目录)按提示执行。
-
-  更多 pod 使用细节请移步[cocoapods](https://cocoapods.org/)
-
-- mobileprovision,参数(\*mobileprovision)为 provisioning profile 
文件路径。
-
-----
-
-## Android
-
-在 Mac 平台开发 Android 首先需要下载 [Android 
Studio](https://developer.android.com/studio/install.html)(你
可能需要翻墙才能访问)。[Android 
Studio](https://developer.android.com/studio/install.html) 为我们提供了 
Android SDK 及 AVD(模拟器)以便我们快速运行 Android 项目。
-
-下载完成后运行 Android Studio,任意新建一个 Android 
项目,在第二步中选择 **Android 5.1**,然后点击 next 
完成项目创建,如图所示:
-
-![android](https://gw.alicdn.com/tps/TB1VulhOFXXXXcPXFXXXXXXXXXX-828-686.png) 
-
-待 Android Studio 打开后,在顶部菜单栏选择 Tools -> Android -> 
AVD Manager,安装 Android 模拟器:
-
-![android](https://img.alicdn.com/tps/TB1CBdgOFXXXXXnXVXXXXXXXXXX-661-392.jpg)
-
-之后,打开模拟器运行 Android。
-
-**注意:**
-
-1. 必须保持模拟器运行。
-2. 保证 Android build-tool 的版本为 23.0。【可以在 Android Studio 
的 SDK Manager 里查看是否已安装
这个版本,如果没有可选择安装这一版本】。
-
-### 配置环境变量
-
-因为 Android Studio 安装的 SDK 不会自动配置环境变量(你
自己安装的 SDK 同样不会)。所以需要您自己手动配置 
Android_HOME 环境变量和 PATH 
-
-如果是 Android Studio 安装的 SDK 安装路径可已在 SDK manager 
里找到(打开 SDK manager 的方式请参照图2)
-
-Windows 下请参照 [window 下如何设置 ANDROID 
环境变量](http://jingyan.baidu.com/article/09ea3ede1b4df6c0aede39ab.html)
-
-Linux/Mac 下只需编辑 `.bash_profile` 增加 PATH 即可:
-
-```bash
-vim ~/.bash_profile
-```
-
-然后添加下列代码进去(路径替换为你的真实路径)
-
-```bash
-export ANDROID_HOME=/xxx/Library/Android/sdk
-export 
PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools
-```
-
-然后保存退出(:wq)。再执行下列命令:
-
-```bash
-source ~/.bash_profile
-```
-
-### 创建项目
-
-然后,就可以使用 weexpack 创建 weex 工程了:
-
-```bash
-$ weexpack init appName
-```
-
-weexpack 会自动新建以 appName 
命名的目录,并将项目模板拉取到该目录。
-
-最终形成如下目录结构:
-
-```bash
--> /appName
-.
-|—— .gitignore
-|—— README.md
-|—— package.json
-|-- android.config.json
-|-- ios.config.json
-|—— webpack.config.js
-|—— /src
-|     |—— index.we
-|—— /html5
-|     |—— index.html
-|—— /ios
-|     |—— /playground
-|     |—— /sdk
-|     |—— /WXDevtool
-|—— /android
-|     |—— /playground
-|     |—— /appframework
-```
-
-其中:
-
-- `webpack.config.js` 是 webpack 配置文件,用于生成 `.we` 文件的 
JSBunlde
-- `ios.config.json` 是 iOS 项目配置文件
-- `android.config.json` 是 Android 项目配置文件
-- `/src` 目录放置 Weex 页面
-- `/html5` 是 H5 端入口文件
-- `/ios` 放置 iOS 项目
-- `/android` 放置 Android 项目
-
-紧接着,进入目录,并且安装依赖:
-
-```bash
-$ cd appName && npm install
-```
-
-至此,项目模版创建完成,接下来我们可以自定义我们的 
APP 信息并打包运行。
-
-### 运行与打包
-
-如果一切正常,你可以使用 weexpack 打包或模拟器运行了:
-
-Android 的打包和构建是一体的 :
-
-```bash
-$ weexpack run android
-```
-
-同样的你可以更改项目目录下的android.config.json
-
-- `AppName`: 应用名
-- `AppId`: application_id 包名
-- `SplashText`: 欢迎页上面的文字
-- `WeexBundle`: 指定的 weex bundle 文件(支持文件名和 url 
的形式)
-
-  指定文件名则以本地文件的方式加载 bundle,指定 url 
则以远程的方式加载 JSBundle。如果以本地方式指定 bundle `.we` 
文件请放到 `src` 目录。

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/customize-a-native-component.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/customize-a-native-component.md 
b/doc/source/cn/v-0.10/advanced/customize-a-native-component.md
deleted file mode 100644
index 404f25c..0000000
--- a/doc/source/cn/v-0.10/advanced/customize-a-native-component.md
+++ /dev/null
@@ -1,168 +0,0 @@
----
-title: 自定义 native 组件
-type: advanced
-order: 7
-has_chapter_content: true
-version: 0.10
----
-
-# 如何自定义 native 组件?
-
-Weex 已经包含了最关键的平台组件,例如 `ScrollView, ListView, 
Text, Imageview` 等等。当然,这些组件并不能完全满足你
的需求。另外,那些在你的工程中常用的大量原生 UI 
组件,可能需要被简单地集合到 Weex 
中。幸运的是,通过任意已存在的组件来创建你
的自定义组件是一件很方便的事。
-
-## Android
-
-### 步骤:
-
-1.自定义组件必须继承自 `WXComponent` 或者 `WXContainer` ;
-2.weex SDK 可以识别 @WXComponentProp (name = value(value 是 attr 或者 
dsl style));
-3.方法必须是 `public` 的;
-4.组件类不能是一个内部类;
-5.自定义组件不能被 ProGuard 之类的工具混淆;
-6.组件方法在 UI 线程被调用,因
此不要在里面进行耗时的操作;
-7.Weex 的参数类型可以是 int, double, float, String, Map, List 
和实现了 WXObject 接口的自定义类;
-
-### 参考以下例子:
-
-``` java
- `package com.taobao.weex.ui.component;
-// ……
-
-public class  MyViewComponent extends WXComponent{
-
-       public MyViewComponent(WXSDKInstance instance, WXDomObject node, 
-                    WXVContainer parent,  String instanceId, boolean lazy) {   
             
-           super(instance, node, parent, instanceId, lazy);
-        }
-
-       @Override
-       protected void initView() {
-          //TODO:your own code ……
-       }
-
-      @Override
-      public WXFrameLayout getView() {
-         //TODO:your own code ………        
-      }
-      @WXComponentProp(name=WXDomPropConstant.WX_ATTR_VALUE)
-      public void setMyViewValue(String value) {
-         ((TextView)mHost).setText(value);
-      }
-
-}
-```
-
-必须注册组件:
-
-``` java
-WXSDKEngine.registerComponent("MyView", MyViewComponent.class);
-```
-
-## iOS
-
-虽然 WeexSDK 中有很多的 native 的 
Component,但这有可能并不能满足你的需求。在之前你
可能已经写了一些很酷炫 native 的组件,想包装一下,导å…
¥åˆ° Weex 中,因此我们提供了让开发者实现自己的 native 
Component。下面将以 WeexSDK 中已经存在的 Component:`image` 
为例子,介绍一下如何构建一个 native Component。假设你
已经了解 iOS 开发
-
-### 注册 Component
-
-注册一个 component 比较简单,调用 `WXSDKEngine` 中的 
`registerComponent:withClass:` 方法,传入组件的æ 
‡ç­¾åç§°ï¼Œè¿˜æœ‰å¯¹åº”çš„ class  然后你可以创建一个 
`WXImageComponent` 表示 `image` 组件的实现。在 `.we` 
文件中,只需要写 `<image></image>`
-
-### 添加属性 
-
-现在我们要做一些让 image component 更加强大的事情
。既然作为一个图片的 component,那它应该要有源,给他加
上一个  `src` 的属性,同时给它加上一个 `resize` 
的属性(可以配置的有 `contain/cover/stretch`)
-
-```object-c
-@interface WXImageComponent ()
-
-@property (nonatomic, strong) NSString *imageSrc;
-@property (nonatomic, assign) UIViewContentMode resizeMode;
-
-@end
-```
-
-component 中所有的 style,attribute,events 都会被传递到 Component 
的初始化方法中,所以,你可以在初始化方法中存储你感å…
´è¶£çš„一些属性值
-
-```object-c
-@implementation WXImageComponent
-
-- (instancetype)initWithRef:(NSString *)ref type:(NSString *)type 
styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes 
events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance
-{
-    if (self = [super initWithRef:ref type:type styles:styles 
attributes:attributes events:events weexInstance:weexInstance]) {
-        _imageSrc = [WXConvert NSString:attributes[@"src"]];
-        _resizeMode = [WXConvert UIViewContentMode:attributes[@"resize"]];
-}
-
-    return self;
-}
-
-@end
-```
-
-attribute 中拿到的值的类型都是 
`id`,我们可以用转换方法把它转换到任何值。Weex SDK 
提供了一些基础的转换方法,可以参考 `WXConvert` 类,或者你
可以添加自己的转换函数。
-
-### Hooking 渲染生命周期
-
-native 的 component 是由 Weex 管理的,Weex 
创建,布局,渲染,销毁。Weex 的 component 生命周期都是可以 
hook 的,你可以在这些生命周期中去做自己的事情。
-
-| 方法 | 描述 |
-| :-: | --- |
-| initWithRef:type:... | 用给定的属性初始化一个component. |
-| layoutDidFinish | 在component完成布局时候会调用. |
-| loadView | 创建component管理的view. |
-| viewWillLoad | 在component的view加载之前会调用. |
-| viewDidLoad | 在component的view加载完之后调用. |
-| viewWillUnload | 在component的view被释放之前调用. |
-| viewDidUnload | 在component的view被释放之后调用. |
-| updateStyles: | 在component的style更新时候调用. |
-| updateAttributes: | 在component的attribute更新时候调用. |
-| addEvent: | 给component添加event的时候调用. |
-| removeEvent: | 在event移除的时候调用. |
-
-在 image component 的例子里面,如果我们需要我们自己的 image 
view 的话,可以复写 `loadView`这个方法.
-
-```object-c
-- (UIView *)loadView
-{
-return [[WXImageView alloc] init];
-}
-```
-
-现在我们使用 `WXImageView` 渲染 `image` component。  
-作为一个 image 
component,我们需要拿到服务器图片,而且把它设置进 image 
view 里. 这个操作可以在 `viewDidLoad` 方法中做,这个方法是在 
view 已经被创建而且加载了时候 Weex SDK 会调用到,而且 
`viewDidLoad` 这个方法是你做额外初始化工作比如改变 content 
mode(也就是设置resize) 的最好时间.
-
-```object-c
-- (void)viewDidLoad
-{
-    UIImageView *imageView = (UIImageView *)self.view;
-    imageView.contentMode = _resizeMode;
-    imageView.userInteractionEnabled = YES;
-    imageView.clipsToBounds = YES;
-    imageView.exclusiveTouch = YES;
-
-    // Do your image fetching and updating logic
-}
-```
-
-如果可以改变 image 的 src,也可以 hook `updateAttributes:`  
方法来做属性更新操作,当 `updateAttributes:` 或者  
`updateStyles:` 被调用的时候, component 的 view 已经加载完成
-
-```object-c
-- (void)updateAttributes:(NSDictionary *)attributes
-{
-    if (attributes[@"src"]) {
-        _imageSrc = [WXConvert NSString:attributes[@"src"]];
-        // Do your image updating logic
-    }
-
-    if (attributes[@"resize"]) {
-        _resizeMode = [WXConvert UIViewContentMode:attributes[@"resize"]];
-        self.view.contentMode = _resizeMode;
-    }
-}
-```
-
-或许你需要考虑更多的生命周期方法去 
Hook,当布局完成时候,像 `layoutDidFinish`,如果你
想了解更多,可以参考一下`WXComponent.h` 声明的方法。
-
-现在你可以用在任何 `.we` 文件里面使用 
`<image>`,而且可以加上 image 的属性。
-
-```html
-<image style="your-custom-style" src="image-remote-source" 
resize="contain/cover/stretch"></image>
-```

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/cuszomize-native-apis.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/cuszomize-native-apis.md 
b/doc/source/cn/v-0.10/advanced/cuszomize-native-apis.md
deleted file mode 100644
index 55e5e4c..0000000
--- a/doc/source/cn/v-0.10/advanced/cuszomize-native-apis.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: 自定义 native API
-type: advanced
-order: 8
-has_chapter_content: true
-version: 0.10
----
-
-# 如何自定义 native API?
-
-Weex 的 SDK 只提供了页面渲染的能力,但是一些å…
¶å®ƒæ“ä½œï¼Œæ¯”如网络请求、图片加载、重定向等功能需要你
自己去实现,这个例子讲述了如何用原生代码去扩展 Weex 
的功能。
-
-## 关于 URLHelper 的例子
-
-### 新建一个 WXModule
-
-```java
-public class URLHelperModule extends WXModule{
-    private static final String 
WEEX_CATEGORY="com.taobao.android.intent.category.WEEX";
-    @WXModuleAnno
-    public void openURL(String url){
-        if (TextUtils.isEmpty(url)) {
-            return;
-        }
-        StringBuilder builder=new StringBuilder("http:");
-        builder.append(url);
-        Uri uri = Uri.parse(builder.toString());
-        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-        intent.addCategory(WEEX_CATEGORY);
-        mWXSDKInstance.getContext().startActivity(intent);
-    }
-} 
-```
-
-这里要注意   `@WXModuleAnno` 这个注解,它表示了你
把这个方法暴露给 JavaScript。
-
-```java
-public class URLHelperModule extends WXModule{
-
-    @WXModuleAnno
-    public void openURL(String url,String callbackId){
-        //...
-        //callback to javascript 
-        Map<String, Object> result = new HashMap<String, Object>();
-        result.put("ts", System.currentTimeMillis());
-        WXBridgeManager.getInstance().callback(mWXSDKInstance.getInstanceId(), 
callbackId, result);
-    }
-}
-```
-
-### 把module注册到WXSDKEngine:
-
-```java
-try {
-     WXSDKEngine.registerModule("myURL", URLHelperModule.class);
-     //'myURL' is the name you'll use in javascript
-    } catch (WXException e) {
-       WXLogUtils.e(e.getMessage());
-    }
-```
-
-### 在 JavaScript 中使用 `eventModule`:
-
-```javascript
-let URLHelper = require('@weex-module/myURL');//same as you registered
-URLHelper.openURL("http://www.taobao.com",function(ts){  
-  console.log("url is open at "+ts);
-});
-```
-
-## 一些注意事项:
-
-1. 定义一个 components 需要继承 `WXModule`
-
-2. 不要忘记添加 `@WXModuleAnno` 注解,不然 Weex 
没法识别这个方法
-
-3. 定义的方法必须是 `public 的
-
-4. module 类一定不能是内部类
-
-5. 你定义的 components 不能被混淆,不然会找不到
-
-6. Module 中的方法会在 UI 
线程中被调用,所以一定不要做一些耗时操作
-
-7. Moudle 中的方法参数类型可以为 
`int`,`double`,`float`,`String`,`Map`,`List`,以及实现 
`WXObject` 接口的类。

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/extend-to-android.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/extend-to-android.md 
b/doc/source/cn/v-0.10/advanced/extend-to-android.md
deleted file mode 100644
index f816ebd..0000000
--- a/doc/source/cn/v-0.10/advanced/extend-to-android.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-title: Android 扩展
-type: advanced
-order: 9
-has_chapter_content: true
-version: 0.10
----
-
-# Android 扩展
-
-Weex 提供了扩展机制,可以æ 
¹æ®è‡ªå·±çš„业务进行定制自己的功能。  
-主要分为两类扩展:  
-
-- Module 扩展 非 UI 的特定功能。例如 sendHttp、openURL 等。
-- Component 扩展 实现特别功能的 Native 
控件。例如:RichTextview,RefreshListview 等。
-- Adapter 扩展 Weex 
对一些基础功能实现了统一的接口,可实现这些接口来定制自己的业务。例如:图片下载等。
-
-## Module 扩展
-
-1. Module 扩展必须继承 WXModule 类。
-2. 扩展方法必须加上 @WXModuleAnno 注解。Weex 会æ 
¹æ®æ³¨è§£æ¥åˆ¤æ–­å½“前方法是否要运行在 UI 
线程,和当前方法是否是扩展方法。
-3. Weex是根据反射来进行调用 Module 
扩展方法,所以Module中的扩展方法必须是 public 类型。
-4. 同样因为是通过反射调用,Module 
不能被混淆。请在混淆文件中添加代码:`-keep public class * 
extends com.taobao.weex.common.WXModule{*;}`
-5. Module 扩展的方法可以使用 int, double, float, String, Map, List 
类型的参数
-6. 完成 Module 后一定要在初始化时注册 
`WXSDKEngine.registerModule("myModule", MyModule.class);` 
否则会报类似错误:`ReportException :undefined:9: TypeError: Object 
#<Object> has no method 'printLog'`
-
-示例如下:
-
-```java
-public class MyModule extends WXModule {
-
-  @WXModuleAnno(runOnUIThread = true)
-  public void printLog(String msg) {
-    Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show();
-  }
-}
-```
-
-JS 调用如下:
-
-```html
-<template>
-  <div>
-    <text onclick="click">点击我测试</text>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    methods: {
-      click: function() {
-        require('@weex-module/myModule').printLog("我是一个测试!");
-      }
-    }
-  }
-</script>
-```
-
-## Component 扩展
-
-1. Component 扩展类必须集成 WXComponent.
-2. Component 对应的设置属性的方法必须添加注解 
@WXComponentProp(name=value(value is attr or style of dsl))
-3. Weex sdk 通过反射调用对应的方法,所以 Component 
对应的属性方法必须是 
public,并且不能被混淆。请在混淆文件中添加代码  `-keep 
public class * extends com.taobao.weex.ui.component.WXComponent{*;}`
-4. Component 扩展的方法可以使用 int, double, float, String, Map, List 
类型的参数
-5. 完成 Component 后一定要在初始化时注册 
`WXSDKEngine.registerComponent("richtext",RichText.class);`
-
-示例如下:
-
-```java
-public class RichText extends WXComponent {
-
-  public RichText(WXSDKInstance instance, WXDomObject dom, WXVContainer 
parent, boolean isLazy) {
-    super(instance, dom, parent, isLazy);
-  }
-
-  @Override
-  protected void initView() {
-    mHost=new TextView(mContext);
-    ((TextView)mHost).setMovementMethod(LinkMovementMethod.getInstance());
-  }
-
-  @WXComponentProp(name = "tel")
-  public void setTelLink(String tel){
-    SpannableString spannable=new SpannableString(tel);
-    spannable.setSpan(new URLSpan("tel:"+tel),0,tel.length(), 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-    ((TextView)mHost).setText(spannable);
-  }
-}
-```
-
-JS 调用如下:
-
-```html
-<template>
-  <div>
-    <richText tel="12305" style="width:200;height:100">12305</text>
-  </div>
-</template>
-```
-## Adapter扩展
-
-图片下载:
-
-需要时集成接口 IWXImgLoaderAdapter,实现 setImage 方法。
-
-示例如下:
-
-```java
-public class ImageAdapter implements IWXImgLoaderAdapter {
-
-  public ImageAdapter() {
-  }
-
-  @Override
-  public void setImage(final String url, final ImageView view,
-                       WXImageQuality quality, WXImageStrategy strategy) {
-
-    WXSDKManager.getInstance().postOnUiThread(new Runnable() {
-
-      @Override
-      public void run() {
-        if(view==null||view.getLayoutParams()==null){
-          return;
-        }
-        if (TextUtils.isEmpty(url)) {
-          view.setImageBitmap(null);
-          return;
-        }
-        String temp = url;
-        if (url.startsWith("//")) {
-          temp = "http:" + url;
-        }
-        if (view.getLayoutParams().width <= 0 || view.getLayoutParams().height 
<= 0) {
-          return;
-        }
-        Picasso.with(WXEnvironment.getApplication())
-            .load(temp)
-            .into(view);
-      }
-    },0);
-  }
-}
-```
-#### 组件方法支持
-从WeexSDK 0.9.5开始,你可以定义组件方法
-
-- 在组件中如下声明一个组件方法
-
- ```java
- @JSMethod
- public void focus(){
- //method implementation
- }
- ```
-- 注册组之后,你可以在weex 文件中调用
-  
-  ```html
-       <template>
-    <mycomponent id='mycomponent'></mycomponent>
-       </template>
-       <script>
-    module.exports = {
-      created: function() {
-        this.$el('mycomponent').focus();
-      }
-    }
-       </script>
-       ```
-       
-注:工程要添加依赖 `compile 'com.squareup.picasso:picasso:2.5.2'`

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/extend-to-html5.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/extend-to-html5.md 
b/doc/source/cn/v-0.10/advanced/extend-to-html5.md
deleted file mode 100644
index ff99629..0000000
--- a/doc/source/cn/v-0.10/advanced/extend-to-html5.md
+++ /dev/null
@@ -1,253 +0,0 @@
----
-title: weex-html5 扩展
-type: advanced
-order: 11
-has_chapter_content: true
-version: 0.10
----
-
-# 扩展 weex-html5
-
-### 简介
-
-Weex 是一个高可扩展性的跨平台动态化开发方案,你
可以在现有组件基础上定制自己需要的三端组件。你可以为 
Weex API 模块添加新的方法,或者创建新的 API 模块和新的加
载器。按照以下几个步骤扩展你的组件,API 或者加载器。
-
-首先要明确的是,组件和 API 模块是基于 Weex 
的扩展,但是独立于 Weex,组件的定义本身是不需要依赖于 
Weex 的,这样有助于组件的分散化管理,去除中心化依赖。
-
-其次,当你扩展一个组件,你
需要同时扩展三端的组件(android, ios 和 web 端),毕竟 Weex 
是一个重视三端一致体验的跨平台移动框架。你
可以一个端一个端的扩展,也可以召唤其他端上的开发者来å…
±åŒå®Œæˆä½ åœ¨å…¶ä»–端上的组件(你
总是可以在社区找到对某个功能有共同需求的开发者
)。这里有一些在 [android 端](./extend-to-android.md)和 [ios 
端](./extend-to-ios.md)做扩展的文档可以参考。
-
-你应该将你的扩展发布到 Weex 开发者
可以方便找到和使用的渠道,比如 `npm`。我们推荐你将你
开发的组件发布到 `npm` 供其他 Weex 开发者使用。
-
-最重要的是,你的组件的命名需要遵守 Weex 
组件命名规范:以 `weex-` 开头作为组件的前缀,并且以 
`-<platform>` 做为结尾后缀,除非你发布的包是三端的实现都包
含在内的。这里有个 
[`<weex-hello-web`>](https://github.com/MrRaindrop/weex-hello-web) 
的例子作为参考,这里注册了一个简单的自定义的组件。
-
-### 创建新组件
-
-步骤:
-1. 在你的组件实现中必须继承 `Weex.Component` 这个类, 
并选择性的重写其中的一些方法。
-2. 你的组件的 exports 需要暴露一个 `init` 方法,并在å…
¶ä¸­ä½¿ç”¨ `Weex.registerComponent` 注册你的组件。
-
-**这里用一个例子展示如何扩展一个新的组件**
-
-看这个组件扩展的代码( web 端上的组件):
-
-``` javascript
-const attr = {
-  // ...
-}
-const style = {
-  // ...
-}
-const event = {
-  // ...
-}
-// 
每个扩展组件都需要实现一个init方法,Weex会通过这方法进行安è£
…和注册.
-function init (Weex) {
-  const Component = Weex.Component
-  const extend = Weex.utils.extend
-
-  // 组件的构造函数
-  function Hello (data) {
-    Component.call(this, data)
-  }
-
-  // prototype继承
-  Hello.prototype = Object.create(Component.prototype)
-  extend(Hello.prototype, proto)
-
-  // 配置属性、样式以及事件
-  extend(Hello.prototype, { attr })
-  extend(Hello.prototype, {
-    style: extend(Object.create(Component.prototype.style), style)
-  })
-  extend(Hello.prototype, { event })
-
-  Weex.registerComponent('weex-hello', Hello)
-}
-
-// 暴露init方法接口.
-export default { init }
-```
-
-上述代码摘引自 
[weex-hello-web/src/index.js](https://github.com/MrRaindrop/weex-hello-web/blob/master/src/index.js#L46-L65)
-
-这个demo重写了基类 `Component`中的`create`方法。你
也可以选择重写`Component`中的一些å…
¶ä»–方法来定制组件的行为。典型的方法包括:
-- `create`: 创建组件的节点,在方法体中return这个节点.
-- `createChildren` 创建子节点.
-- `insertBefore` 在某个子节点之前插入一个新的子节点.
-- `appendChild` 在子节点列表的最后加上一个节点.
-- `removeChild` 移除一个子节点.
-
-**进阶**:更多关于组件定制和扩展的细节和代ç 
å±•ç¤ºï¼Œå¯ä»¥å‚考 [weex 主仓库的代ç 
](https://github.com/apache/incubator-weex/tree/dev/html5),这里的组件基本上都是通过上述方式进行定义的。
-
-重要的一点,注册组件的关键方法是 
`Weex.registerComponent`,如示例里的 `weex-hello` 组件的注册:
-
-``` javascript
-Weex.registerComponent('weex-hello', Hello)
-```
-
-上述代码引自 
[weex-hello-web/src/index.js](https://github.com/MrRaindrop/weex-hello-web/blob/master/src/index.js#L62)
-
-在某个需要使用该组件的weex项目中使用 `Weex.install` 
方法安装该组件:
-
-``` javascript
-// import the original weex-html5.
-import weex from 'weex-html5'
-import hello from 'weex-hello-web'
-// install the component.
-weex.install(hello)
-```
-
-上述代码引自 
[weex_extend_demo/src/main.js](https://github.com/MrRaindrop/weex_extend_demo/blob/master/src/main.js#L1-L5)
-
-在你的 `.we` 文件中直接使用这个组件:
-
-``` html
-<template>
-  <div>
-    <weex-hello class="hello" style="txt-color:#fff;bg-color:green"
-      value="WEEX" onclick="handleClick">
-    </weex-hello>
-  </div>
-</template>
-```
-
-上述代ç 
å¼•è‡ª[weex_extend_demo/demo/index.we](https://github.com/MrRaindrop/weex_extend_demo/blob/master/demo/index.we#L10-L15)
-### 扩展API
-
-你可以扩展新的 API 模块,或者为某个已有的模块添加新的 
API. 比如,你可以添加一个 API 模块叫做 `user`,在里面添加
一些用户登录登出处理的 API,比如 `login`, `logout` 等等。你
可以通过 `require('@weex-module/moduleName)[methodName](arg1, arg2, ...)` 
([Module APIs](../references/api.md)) 的方式调用你的 API.
-
-步骤:
-1. 实现你的 API module.
-2. 在你的 API 安装模块里暴露一个 `init` 
方法,并在这个方法里面使用 `Weex.registerAPIModules` 注册你的 
API module.
-
-**这里用一个例子展示如何扩展一个新的 API 模块**
-
-创建一个文件 `user.js`,在其中定义登录登出 `login/logout` 
方法.
-
-``` javascript
-const user = {
-  // 定义用户登录方法.
-  login (callbackId) {
-    login.then(res => {
-      this.sender.performCallback(callbackId, res)
-    }).catch(err => {
-      this.sender.performCallback(callbackId, err)
-    })
-  },
-
-  // 定义用户登出方法.
-  logout (callbackId) {
-    logout.then(res => {
-      this.sender.performCallback(callbackId, res)
-    }).catch(err => {
-      this.sender.performCallback(callbackId, err)
-    })
-  }
-}
-
-// 定义user模块的元 (meta) 信息.
-const meta = {
-  user: [{
-    name: 'login',
-    args: ['function']
-  }, {
-    name: 'logout',
-    args: ['function']
-  }]
-}
-
-export default {
-  init (Weex) {
-    // 注册这个模块,最后一个参数是模块的元信息.
-    Weex.registerApiModule('user', user, meta)
-  }
-}
-```
-
-这个简单的 user helper 模块就实现好了,可以发布到 npm 
上,我们可以给这个模块取个名字,比如说 `weex-user-helper`。
-
-在你的新的 Weex 项目里安装这个模块:
-
-``` javascript
-import Weex from 'weex-html5'
-import user from 'weex-user-helper'
-
-Weex.install(user)
-```
-
-安装了这个模块,你就可以在 DSL 代ç 
é‡Œå¼•ç”¨è¿™ä¸ªæ¨¡å—干点事情了:
-
-``` html
-<template>
-  <div>
-    <div class="btn" onclick="handleClick">
-      <text>LOGIN</text>
-    </div>
-  </div>
-</template>
-
-<script>
-  var userHelper = require('@weex-module/user')
-  module.exports = {
-    methods: {
-      handleClick: function () {
-        userHelper.login(function () {
-          // ... do sth. in callback.
-        })
-      }
-    }
-  }
-</script>
-```
-
-### 定制加载器loader
-
-**Loader仅用于weex-html5 (web端)加载dsl打包出来的bundle代ç 
ï¼Œnative平台有其他的加载机制**
-
-已有的加载器包括 `xhr`, `jsonp` 和 `source`. 你可以使用 
`weex.registerLoader` 注册一个新的加载器。例如,你有一个获取 
Weex bundle 的服务 `myServe.getWeexBundle` , 通过这个服务可以加载 
weex bundle,为此你可以定义一个加载器:
-
-``` javascript
-function loadByMyServe(pageId, callback) {
-  myServe.getWeexBundle(pageId).then(function (bundle) {
-    callback(bundle)
-  }).catch(function(err) {
-    callback(err)
-  })
-}
-
-// 暴露init方法用于Weex安装此加载器.
-export default {
-  init (Weex) {
-    Weex.registerLoader('myserve', loadByMyServe)
-  }
-}
-```
-
-在你的 weex-html5 项目的启动文件里安装并使用这个加载器:
-
-``` javascript
-import Weex from 'weex-html5'
-
-// 或者import from 
'./myserve.js',不管是import一个npm模块还是import一个文件.
-import loader from 'myLoader'
-
-Weex.install(loader)
-
-// 在init方法里使用这个加载器加载bundle文件.
-(function () {
-  function getUrlParam (key) {
-    const reg = new RegExp('[?|&]' + key + '=([^&]+)')
-    const match = location.search.match(reg)
-    return match && match[1]
-  }
-  const page = getUrlParam('page') || 'examples/build/index.js'
-  Weex.init({
-    appId: location.href,
-    loader: 'myserve',  // 使用刚才定义的loader类型
-    source: page,
-    rootId: 'weex'
-  })
-})();
-```
-
-以上是 Weex 
带来的扩展性里比较主要的一部分,更多实现细节可以在 
[weex 项目代码库](https://github.com/alibaba/weex)以及 weex 
的开源社区里找到。

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/extend-to-ios.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/extend-to-ios.md 
b/doc/source/cn/v-0.10/advanced/extend-to-ios.md
deleted file mode 100644
index b163d62..0000000
--- a/doc/source/cn/v-0.10/advanced/extend-to-ios.md
+++ /dev/null
@@ -1,279 +0,0 @@
----
-title: iOS 扩展
-type: advanced
-order: 10
-has_chapter_content: true
-version: 0.10
----
-
-## iOS 扩展
-
-### Module 扩展
-
-[swift](https://github.com/weexteam/article/issues/55) 扩展 module 
-
-Weex SDK 只提供渲染,而不是其他的能力,如果你需要 
像网络,图片,URL跳转这些特性,需要自己动手实现他们
-例如,如果你想实现一个url地址跳转函数,你可以按ç…
§å¦‚下步骤实现一个 Module
-1. **自定义module的步骤**
-   1. 自定义的module类 必须实现 `WXModuleProtocol`
-   2. 必须添加宏`WX_EXPORT_METHOD`, 
它可以被weex识别,它的参数是 JavaScript调用 
module指定方法的参数
-   3. 添加`@synthesized 
weexInstance`,每个moudle对象被绑定到一个指定的实例上
-   4. Module 
方法会在UI线程中被调用,所以不要做太多耗时的任务在这里,如果要在å
…¶ä»–线程执行整个module 方法,需要实现`WXModuleProtocol`中`- 
(NSThread *)targetExecuteThread`的方法,这æ 
·ï¼Œåˆ†å‘到这个module的任务会在指定的线程中运行
-   5. Weex 的参数可以是 String 或者Map
-   6. Module 支持返回值给 
JavaScript中的回调,回调的类型是`WXModuleCallback`,回调的参数可以是String或è€
…Map
-      
-      ```object-c
-      @implementation WXEventModule
-      @synthesize weexInstance;
-         WX_EXPORT_METHOD(@selector(openURL:callback))
-      - (void)openURL:(NSString *)url callback:(WXModuleCallback)callback
-      {
-          NSString *newURL = url;
-          if ([url hasPrefix:@"//"]) {
-              newURL = [NSString stringWithFormat:@"http:%@", url];
-          } else if (![url hasPrefix:@"http"]) {
-             newURL = [NSURL URLWithString:url 
relativeToURL:weexInstance.scriptURL].absoluteString;
-          }
-      
-          UIViewController *controller = [[WXDemoViewController alloc] init];
-          ((WXDemoViewController *)controller).url = [NSURL 
URLWithString:newURL];
-      
-          [[weexInstance.viewController navigationController] 
pushViewController:controller animated:YES];
-          callback(@{@"result":@"success"});
-      }
-      
-      @end
-      ```
-2. **Register the module**
-   通过调用 WXSDKEngine 中的 
`registerModule:withClass`方法来注册自己的module
-   
-   ```object-c
-   WXSDKEngine.h
-   /**
-   *  @abstract Registers a module for a given name
-   *  @param name The module name to register
-   *  @param clazz  The module class to register
-   **/
-   + (void)registerModule:(NSString *)name withClass:(Class)clazz;
-   [WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
-   ```
-3. **使用自己的module**
-    这里的  require 里面的event 就是在 
上一步调用`registerModule:` 注册module 时候的name
-   
-   ```javascript
-    var eventModule = require('@weex-module/event'); 
-    eventModule.openURL('url',function(ret) {   
-        nativeLog(ret);
-    });
-   ```
-   
-   Weex SDK没有 图片下载,navigation 
操作的能力,请大家自己实现这些 protocol
-
-### handler 扩展
-   **WXImgLoaderProtocol**  
-
-   weexSDK 没有提供图片下载的能力,需要实现 
WXImgLoaderProtocol,参考下面的例子
-   
-   ```object-c
-   WXImageLoaderProtocol.h
-   @protocol WXImgLoaderProtocol <WXModuleProtocol>
-   /**
-    * @abstract Creates a image download handler with a given URL
-    * @param imageUrl The URL of the image to download
-    * @param imageFrame  The frame of the image you want to set
-    * @param options : The options to be used for this download
-    * @param completedBlock : A block called once the download is completed.
-      image : the image which has been download to local.
-      error : the error which has happened in download.
-      finished : a Boolean value indicating whether download action has 
finished.
-   */
-   -(id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url 
imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)options 
completed:(void(^)(UIImage *image,  NSError *error, BOOL 
finished))completedBlock;
-   @end
-   ```
-   
-   实现上述协议  
-   
-   ```object-c
-   @implementation WXImgLoaderDefaultImpl
-   #pragma mark -
-   #pragma mark WXImgLoaderProtocol
-   
-   - (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url 
imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo 
completed:(void(^)(UIImage *image,  NSError *error, BOOL 
finished))completedBlock
-   {
-       if ([url hasPrefix:@"//"]) {
-           url = [@"http:" stringByAppendingString:url];
-       }
-       return (id<WXImageOperationProtocol>)[[SDWebImageManager sharedManager] 
downloadImageWithURL:[NSURL URLWithString:url] options:0 progress:^(NSInteger 
receivedSize, NSInteger expectedSize) {     
-       } completed:^(UIImage *image, NSError *error, SDImageCacheType 
cacheType, BOOL finished, NSURL *imageURL) {
-       if (completedBlock) {
-           completedBlock(image, error, finished);
-       }
-       }];
-   }
-   @end
-   ```
-
-5. **handler注册** 
- 
-   你可以通过WXSDKEngine 中的 
`registerHandler:withProtocol`注册handler
-   
-   ```object-c
-   WXSDKEngine.h
-   /**
-   * @abstract Registers a handler for a given handler instance and specific 
protocol
-   * @param handler The handler instance to register
-   * @param protocol The protocol to confirm
-   */
-   + (void)registerHandler:(id)handler withProtocol:(Protocol *)protocol;
-   
-   [WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] 
withProtocol:@protocol(WXImgLoaderProtocol)]
-   ```
-
-#### Component 扩展
-   虽然WeexSDK中有提供内
置的一些Component,但这有可能并不能满足你
的需求。在之前你可能已经写了一些很é…
·ç‚«native的组件,想包装一下,导入到Weex中,因
此我们提供了让开发者实现自己的native Component   
-   下面将以WeexSDK 中已经存在的 
Component:`image`为例子,介绍一下如何构建一个native Component.
-   假设你已经了解IOS开发  
-   1. 注册 Component  
-      注册一个component比较简单,调用 `WXSDKEngine` 中的 
`registerComponent:withClass:`方法,传入组件的æ 
‡ç­¾åç§°ï¼Œè¿˜æœ‰å¯¹åº”çš„class  
-      然后你可以创建一个 `WXImageComponent` 
表示`image`组件的实现     在.we 文件中,只需要写 
-          <image></image>  
-   2. 添加属性   
-      现在我们要做一些让image component更加强大的事情
。既然作为一个图片的component,那它应该要有源,给他加
上一个 `src`的属性,同时给它加上一个`resize`的属性(可以é…
ç½®çš„有`contain/cover/stretch`)
-      
-  ```
-  @interface WXImageComponent ()
-  
-  @property (nonatomic, strong) NSString *imageSrc;
-  @property (nonatomic, assign) UIViewContentMode resizeMode;
-  
-  @end
-  ```
-   component中所有的style,attribute,events都会被传递到 
Component的初始化方法中,所以,你
可以在初始化方法中存储你感兴趣的一些属性值
-      
-  ```
-  @implementation WXImageComponent
-  
-  - (instancetype)initWithRef:(NSString *)ref type:(NSString *)type 
styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes 
events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance
-  {
-      if (self = [super initWithRef:ref type:type styles:styles 
attributes:attributes events:events weexInstance:weexInstance]) {
-          _imageSrc = [WXConvert NSString:attributes[@"src"]];
-          _resizeMode = [WXConvert UIViewContentMode:attributes[@"resize"]];
-  }
-  
-      return self;
-  }
-  
-  @end
-  ```
-      
-   
attribute中拿到的值的类型都是`id`,我们可以用转换方法把它转换到任何值。Weex
 SDK提供了一些基础的转换方法,可以参考 `WXConvert`类,或者
你可以添加自己的转换函数
-   
-   1. Hooking 渲染生命周期  
-         native 的component 是由Weex管理的,weex 
创建,布局,渲染,销毁。weex的component生命周期都是可以hook的,ä½
 å¯ä»¥åœ¨è¿™äº›ç”Ÿå‘½å‘¨æœŸä¸­åŽ»åšè‡ªå·±çš„事情
-      
-  | 方法 | 描述 |
-  | :-: | --- |
-  | initWithRef:type:... | 用给定的属性初始化一个component. |
-  | layoutDidFinish | 在component完成布局时候会调用. |
-  | loadView | 创建component管理的view. |
-  | viewWillLoad | 在component的view加载之前会调用. |
-  | viewDidLoad | 在component的view加载完之后调用. |
-  | viewWillUnload | 在component的view被释放之前调用. |
-  | viewDidUnload | 在component的view被释放之后调用. |
-  | updateStyles: | 在component的style更新时候调用. |
-  | updateAttributes: | 在component的attribute更新时候调用. |
-  | addEvent: | 给component添加event的时候调用. |
-  | removeEvent: | 在event移除的时候调用. |
-      
-   在image component的例子里面,如果我们需要我们自己的image 
view 的话,可以复写 `loadView`这个方法.
-   
-   ```
-   - (UIView *)loadView
-   {
-       return [[WXImageView alloc] init];
-   }
-   ```
-   
-   现在我们使用 `WXImageView` 渲染 `image` component。  
-   1. 作为一个image 
component,我们需要拿到服务器图片,而且把它设置进image view 
里. 这个操作可以在 `viewDidLoad` 
方法中做,这个方法是在view已经被创建而且加载了时候weex 
SDK会调用到,而且`viewDidLoad`这个方法是你
做额外初始化工作比如改变content mode(也就是设置resize) 
的最好时间.
-   
-   ```
-   - (void)viewDidLoad
-   {
-       UIImageView *imageView = (UIImageView *)self.view;
-       imageView.contentMode = _resizeMode;
-       imageView.userInteractionEnabled = YES;
-       imageView.clipsToBounds = YES;
-       imageView.exclusiveTouch = YES;
-   
-       // Do your image fetching and updating logic
-   }
-   ```
-   
- 1. 如果可以改变image的src,也可以hook 
`updateAttributes:`方法来做属性更新操作,当`updateAttributes:`或者
 `updateStyles:`被调用的时候, component的view 已经加载完成
-   
-   ```
-   - (void)updateAttributes:(NSDictionary *)attributes
-   {
-       if (attributes[@"src"]) {
-           _imageSrc = [WXConvert NSString:attributes[@"src"]];
-           // Do your image updating logic
-       }
-   
-       if (attributes[@"resize"]) {
-           _resizeMode = [WXConvert UIViewContentMode:attributes[@"resize"]];
-           self.view.contentMode = _resizeMode;
-       }
-   }
-   ```
-   
-   或许你
需要考虑更多的生命周期方法去Hook,当布局完成时候,像`layoutDidFinish`,如果ä½
 æƒ³äº†è§£æ›´å¤šï¼Œå¯ä»¥å‚考一下`WXComponent.h` 声明的方法
-   现在你可以用在任何 .we文件里面使用 
`<image>`,而且可以加上 image的属性
-   
-   ```
-   <image style="your-custom-style" src="image-remote-source" 
resize="contain/cover/stretch"></image>
-   ```
-##### component 方法
-WeexSDK 0.9.5 
之后支持了在js中直接调用component的方法,这里提供一个例子,
-
-- 自定义一个WXMyCompoenent 的组件
-
-    ```
-    @implementation WXMyComponent
-    WX_EXPORT_METHOD(@selector(focus)) // 暴露该方法给js
-    - (instancetype)initWithRef:(NSString *)ref type:(NSString *)type 
styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes 
events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance
-    {
-        if (self = [super initWithRef:ref type:type styles:styles 
attributes:attributes events:events weexInstance:weexInstance]) {
-            // handle your attributes
-            // handle your styles
-        }
-        
-        return self;
-    }
-    
-    - (void)focus
-    {
-        NSLog(@"you got it");
-    }
-    @end
-    ```
-       
-- 注册组件 `[WXSDKEngine registerComponent:@"mycomponent" 
withClass:[WXMyComponent class]] `
-- 在weex 文件中调用
-
-  ```html
-  <template>
-    <mycomponent id='mycomponent'></mycomponent>
-  </template>
-  <script>
-    module.exports = {
-      created: function() {
-        this.$el('mycomponent').focus();
-      }
-    }
-  </script>
-  ``` 
- 
- 
- 
- 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/how-data-binding-works.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/how-data-binding-works.md 
b/doc/source/cn/v-0.10/advanced/how-data-binding-works.md
deleted file mode 100644
index a905422..0000000
--- a/doc/source/cn/v-0.10/advanced/how-data-binding-works.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: 数据绑定原理
-type: advanced
-order: 2
-has_chapter_content: true
-version: 0.10
----
-
-# 数据绑定实现原理
-
-Weex 的 JS Framework 是一个 MVVM,即 Model-View-ViewModel 
框架。他会自动监听数据的变化,并通过 `{% raw 
%}{{字段名}}{% endraw %}` 的语法把数据和视图中所展示的内
容自动绑定起来。当数据被改写的时候,视图会自动æ 
¹æ®æ•°æ®çš„变化而发生相应的变化。
-
-比如下面这个例子,`<text>` 的内容被绑定在了 `notes` 
数据字段上:
-
-```html
-<template>
-  <div>
-    <text>{{notes}}</text>
-  </div>
-<template>
-
-<script>
-  module.exports = {
-    data: {
-      notes: 'Hello'
-    }
-  }
-</script>
-```
-
-Weex 的 JS Framework 会首先对 `data` 里的数据进行监听,这æ 
·æœªæ¥çš„数据变化都能够被监听到。然后我们会编译整个 
`<template>` 标签里的内容。当我们找到 `<text>` 标签里的 `{% raw 
%}{{notes}}{% endraw %}` 时,JS Framework 会跟踪 `data.notes` 
的变化并在其发生变化时触发一个句柄,将 `<text>` 的内
容设置为 `data.notes` 最新的值。这样的话开发者就不必手动å…
³å¿ƒæ•°æ®å’Œè§†å›¾ä¹‹é—´çš„数据同步问题了。
-
-在这个基础上我们还设计了一些特殊的语法:
-
-- `<foo if="...">` 代表一个条件监听,当其值为 `true` 
时,`<foo>` 元素将会被创建和载å…
¥ï¼Œåä¹‹åˆ™ä¸ä¼šè¢«åˆ›å»ºæˆ–被移除掉。
-- `<foo repeat="...">` 代表一个列表监听,第一次加载的时候 
`<foo>` 元素会被按照数组里的数据逐条 clone 
并赋值。而当有列表项增加
、移动或移除时,视图层也会自动触发相应的改变,并且智能优化至最小变更策略
-- `<foo if="..." repeat="...">` 两个特殊语法共用时,将会优å…
ˆå±•å¼€ `repeat` 然后逐条判断 `if`。
-
-相比于一些 virtual-DOM 的 diff 
计算机制,我们会直接对数据进行 diff,而且只会 diff 
由于用户操作或数据操作发生改变的那部分数据和视图,这是一种更小范围的计算方式。尤å
…¶åœ¨è¿½æ±‚轻量快速的移动端界面上,这种更新机制更加显得å…
·æœ‰ä¼˜åŠ¿ã€‚

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/images/how-arch.png
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/images/how-arch.png 
b/doc/source/cn/v-0.10/advanced/images/how-arch.png
deleted file mode 100644
index a13df7a..0000000
Binary files a/doc/source/cn/v-0.10/advanced/images/how-arch.png and /dev/null 
differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/images/how-render.png
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/images/how-render.png 
b/doc/source/cn/v-0.10/advanced/images/how-render.png
deleted file mode 100644
index db9b0f4..0000000
Binary files a/doc/source/cn/v-0.10/advanced/images/how-render.png and 
/dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/8162f8c2/doc/source/cn/v-0.10/advanced/index.md
----------------------------------------------------------------------
diff --git a/doc/source/cn/v-0.10/advanced/index.md 
b/doc/source/cn/v-0.10/advanced/index.md
deleted file mode 100644
index 8fea01e..0000000
--- a/doc/source/cn/v-0.10/advanced/index.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-title: Weex 工作原理
-type: advanced
-order: 1
-has_chapter_content: true
-version: 0.10
----
-
-# Weex 工作原理概述
-
-## 总览
-
-Weex是跨平台,可扩展的动态化技术. 你能通过在Weex源ç 
ä¸­å†™`<template>`, `<style>` 和  `<script>`标签,然后把这些æ 
‡ç­¾è½¬æ¢ä¸ºJS Bundle用于部署, 在服务端以这些JS Bundle响应请求. 
当客户端接收到JS 
Bundle时,它能用被客户端中的JS引擎用于管理Native渲染;API调用和用户交互.
-
-### 工作流
-
-```
-Weex we 文件 --------------前端(we源码)
-↓ (转换) ------------------前端(构建过程)
-JS Bundle -----------------前端(JS Bundle代码)
-↓ (部署) ------------------服务器
-在服务器上的JS bundle  ----服务器
-↓ (编译) ------------------ 客户端(JS引擎)
-虚拟 DOM 树 --------------- 客户端(Weex JS Framework)
-↓ (渲染) ------------------ 客户端(渲染引擎)
-Native视图 ---------------  客户端(渲染引擎)
-```
-
-在上面的工作流中,我们提到:
-
-- Transformer(转换器):  一个Node JS工具, 转换Weex源码为JS 
Bundle  
-- Weex JS Framework(JS框架): 
运行于客户端的的JS框架,管理着Weex实例的运行。Weex实例由JS
 Bundle创建并构建起虚拟DOM树. 另外,它发送/接受 Native 
渲染层产生的系统调用,从而间接的响应用户交互。
-- Native引擎:  在不同的端上,有着不同的实现: 
iOS/Android/HTML5. 他们有着共同的组件设计, 模块API 
和渲染效果. 所以他们能配合同样的 JS Framework 和  JS 
Bundle工作。
-
-## 转换器
-
-转换器转换Weex源码为JS Bundle. 整体工作可以分为三个部分:
-
-- 转换 `<template>` 为类JSON的树状数据结构, 
转换数据绑定为返回数据的函数原型.例如. For example: `<foo 
a="{% raw %}{{x}}{% endraw %}" b="1" />` 将转换为 `{type: "foo", attr: {a: 
function () {return this.x}, b: 1}}`.
-- 转换 `<style>` 为类JSON的树状数据结构. 例如: `.classname {name: 
value;}` 将转换为 `{classname: {name: value}}`.
-- 把上面两部分的内容和 `<script>` 中的内容结合. 
上面的三个部分将结合成一个JavaScript AMD 模块.
-
-一个完整的例子:
-
-```html
-<template>
-  <foo a="{{x}}" b="1" class="bar"></foo>
-</template>
-<style>
-  .bar {width: 200; height: 200}
-</style>
-<script>
-  module.exports = {
-    data: function () {
-      return {x: 100}
-    }
-  }
-</script>
-```
-
-将转换为:
-
-```javascript
-define('@weex-component/main', function () {
-  module.exports = {
-    data: function () {
-      return {x: 100}
-    }
-  }
-  module.template = {
-    type: "foo",
-    attr: {
-      a: function () {return this.x},
-      b: 1,
-      classname: ['bar']
-    }
-  }
-  module.style = {
-    bar: {width: 200, height: 200}
-  }
-})
-bootstrap('@weex-component/main')
-```
-
-除此之外,转换器还会做一些额外的事情: 合并Bundle ,添加
引导函数,配置外部数据等等,更详细的,请参阅
[Synatax](../references/specs/js-bundle-format.html)章节.
-
-## 注意
-
-当前大部分Weex工具最终输出的JS Bundleæ 
¼å¼éƒ½ç»è¿‡äº†[Webpack](https://webpack.github.io/)的二次处理,所以你
实际使用工具输出的JS Bundle会和上面的有所区别.
-## JS Framework
-
-JS Framework 在初始化阶段被原生 JavaScript 引擎运行. 
它提供被每个JS Bundle调用的 `define()` 和 `bootstrap()` 函数.  
一旦JS Bundle从服务器下载后,这些函数就会执行. `define()` 
函数以注册模块;`bootstrap()`会编译主要的模块为虚拟DOM,并发送渲染指令给Native
 .
-
-JS 和 Native 的沟通主要通过两个关键方法进行:
-
-- `callNative` 是一个由native代码实现的函数, 它被JS代ç 
è°ƒç”¨å¹¶å‘native发送指令,例如 `rendering`, `networking`, 
`authorizing`和其他客户端侧的 `toast` 等API.
-- `callJS` 是一个由JS实现的函数,  它用于Native向JS发送指令. 
目前这些指令由用户交互和Native的回调函数组成.
-## Native 渲染引擎
-
-Native 渲染引擎提供客户端组件和模块.
-
-**Component(组件)** 在屏幕内可见,有特定行为. 能被é…
ç½®ä¸åŒçš„属性和样式,能响应用户交互. 常见的组件有:  
`<div>`, `<text>`, `<image>`.
-
-**Module(模块)** 是一组能被JS Framework调用的API. å…
¶ä¸­çš„一些能以异步的方式调用JS Framework, 例如: 发送HTTP请求.
-
-在Weex实例运行期间,Native渲染引擎将接收各种各æ 
·ä¸åŒæ¨¡å—çš„API调用。这些调用创建或更新组件外观,运行如`toast`的Native
 API.当用户交互或模块回调时,`callJS()`会由JS Framework调用.  
这样的循环往复将从Weex实例初始化到销毁一直持续. 
如下面的架构图所示, HTML5渲染引擎提供和Native渲染引擎几
乎一致的功能。 
-
-![arch](http://gtms02.alicdn.com/tps/i2/TB1ootBMpXXXXXrXXXXwi60UVXX-596-397.png)
-
-Weex架构图
-
-### 从Javascript中调用Native
-
-```
-[JS Framework]
-↓ callNative
-模块 APIs
-  渲染 -> 模块显示
-  其他功能
-[Native 渲染引擎]
-```
-### 从Native中调用Javascript
-
-```
-[Native 渲染引擎]
-模块 APIs 回调
-用户交互
-↓ callJS
-[JS Framework]
-```
-### 渲染流程
-
-![render 
flow](http://gtms03.alicdn.com/tps/i3/TB1_SA4MXXXXXXGaXXXpZ8UVXXX-519-337.png)  
-
-Weex 渲染流程
-
-1. 虚拟DOM.
-2. **构造树结构**. 分析虚拟DOM JSON数据以构造渲染树(RT).
-3. **添加样式**. 为渲染树的各个节点添加样式.
-4. **创建视图**. 为渲染树各个节点创建Native视图.
-5. **绑定事件**. 为Native视图绑定事件.
-6. **CSS布局**.  使用 [css-layout](https://github.com/facebook/css-layout) 
来计算各个视图的布局.
-7. **更新视窗(Frame)**. 
采用上一步的计算结果来更新视窗中各个视图的最终布局位置.
-8. 最终页面呈现.
-
-在Weex HTML5环境下 `CSS 布局` and `更新视窗` 
由浏览器引擎(例如webkit)实现.

Reply via email to