You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2019/12/02 03:22:27 UTC

[incubator-weex-site] branch master updated: 把博客中使用cdn的图转存到GitHub (#560)

This is an automated email from the ASF dual-hosted git repository.

kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 0143a9f  把博客中使用cdn的图转存到GitHub (#560)
0143a9f is described below

commit 0143a9faedc352636d59cf04fd092d4fb0bd1b6c
Author: 任跃兵 <cn...@live.cn>
AuthorDate: Mon Dec 2 11:22:15 2019 +0800

    把博客中使用cdn的图转存到GitHub (#560)
---
 ...779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png | Bin 0 -> 3950169 bytes
 ...850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png | Bin 0 -> 598125 bytes
 ...896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png | Bin 0 -> 500176 bytes
 ...927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png | Bin 0 -> 165377 bytes
 ...955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png | Bin 0 -> 3809104 bytes
 ...968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png | Bin 0 -> 4556109 bytes
 ...815712-c17b4df4-e072-42b7-8c77-560deabf7696.png | Bin 0 -> 129402 bytes
 ...050649-50116f85-0101-4389-99f5-35f3ef4813d9.png | Bin 0 -> 165241 bytes
 .../45e36879f4baed04dfbad0382c23dd8a.png           | Bin 0 -> 382857 bytes
 .../ac84ce579b28867aac2e8ba18e40e954.png           | Bin 0 -> 325606 bytes
 .../e5aae2e2c2da360fb6204f64b1e3cd31.png           | Bin 0 -> 97954 bytes
 ...663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png | Bin 0 -> 204364 bytes
 ...699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png | Bin 0 -> 261853 bytes
 ...726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png | Bin 0 -> 134777 bytes
 ...745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png | Bin 0 -> 84438 bytes
 ...778053-070004cb-8157-466c-846b-5e403c9364e3.png | Bin 0 -> 451500 bytes
 ...875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png | Bin 0 -> 268101 bytes
 ...945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png | Bin 0 -> 77832 bytes
 .../1b94848aaa731b146228090093b5cc92.png           | Bin 0 -> 67416 bytes
 .../22195f7e61b2267f50dc78226d98aff3.png           | Bin 0 -> 46590 bytes
 .../4545bcabcdac57acfe0be1692a8b9cc5.png           | Bin 0 -> 191284 bytes
 .../7d0c65a3a4b79ac3d990dfaa8f203be1.png           | Bin 0 -> 205709 bytes
 .../872298694d6e7f1a311ade626da0f0f8.png           | Bin 0 -> 130871 bytes
 .../937def357b6528b0d78f0e948560e5dc.png           | Bin 0 -> 65396 bytes
 .../950b476fb53468ba2f309b73435a9e15.png           | Bin 0 -> 169816 bytes
 .../965358b8880bc1e1547654ca3f26b79a.png           | Bin 0 -> 190839 bytes
 .../cc6710bafd8edd87a577c72d89a764fb.png           | Bin 0 -> 335427 bytes
 .../f31103153fd160ae4723069f88c61e34.png           | Bin 0 -> 213670 bytes
 docs/blog/ios-weexcore.md                          |   8 ++--
 docs/zh/blog/interaction-optimization.md           |  18 ++++-----
 docs/zh/blog/ios-weexcore.md                       |  10 ++---
 docs/zh/blog/weex-auto-test-locating.md            |   4 +-
 docs/zh/blog/weexcore-multiprocess-evolution.md    |  20 +++++-----
 package-lock.json                                  |  41 +++++++++++++++------
 34 files changed, 60 insertions(+), 41 deletions(-)

diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png b/docs/.vuepress/public/blog/interaction-optimization/1532953779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png
new file mode 100644
index 0000000..454184a
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png b/docs/.vuepress/public/blog/interaction-optimization/1532953850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png
new file mode 100644
index 0000000..8c6d79c
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png b/docs/.vuepress/public/blog/interaction-optimization/1532953896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png
new file mode 100644
index 0000000..33dd5fa
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png b/docs/.vuepress/public/blog/interaction-optimization/1532953927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png
new file mode 100644
index 0000000..d5f615c
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png b/docs/.vuepress/public/blog/interaction-optimization/1532953955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png
new file mode 100644
index 0000000..c0bdfe6
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1532953968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png b/docs/.vuepress/public/blog/interaction-optimization/1532953968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png
new file mode 100644
index 0000000..8e502fa
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1532953968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1533125815712-c17b4df4-e072-42b7-8c77-560deabf7696.png b/docs/.vuepress/public/blog/interaction-optimization/1533125815712-c17b4df4-e072-42b7-8c77-560deabf7696.png
new file mode 100644
index 0000000..1b4b04a
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1533125815712-c17b4df4-e072-42b7-8c77-560deabf7696.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/1533126050649-50116f85-0101-4389-99f5-35f3ef4813d9.png b/docs/.vuepress/public/blog/interaction-optimization/1533126050649-50116f85-0101-4389-99f5-35f3ef4813d9.png
new file mode 100644
index 0000000..01f4dd2
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/1533126050649-50116f85-0101-4389-99f5-35f3ef4813d9.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/45e36879f4baed04dfbad0382c23dd8a.png b/docs/.vuepress/public/blog/interaction-optimization/45e36879f4baed04dfbad0382c23dd8a.png
new file mode 100644
index 0000000..70f09a4
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/45e36879f4baed04dfbad0382c23dd8a.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/ac84ce579b28867aac2e8ba18e40e954.png b/docs/.vuepress/public/blog/interaction-optimization/ac84ce579b28867aac2e8ba18e40e954.png
new file mode 100644
index 0000000..d619562
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/ac84ce579b28867aac2e8ba18e40e954.png differ
diff --git a/docs/.vuepress/public/blog/interaction-optimization/e5aae2e2c2da360fb6204f64b1e3cd31.png b/docs/.vuepress/public/blog/interaction-optimization/e5aae2e2c2da360fb6204f64b1e3cd31.png
new file mode 100644
index 0000000..cd173bf
Binary files /dev/null and b/docs/.vuepress/public/blog/interaction-optimization/e5aae2e2c2da360fb6204f64b1e3cd31.png differ
diff --git a/docs/.vuepress/public/blog/ios-weexcore/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png b/docs/.vuepress/public/blog/ios-weexcore/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png
new file mode 100644
index 0000000..75a6490
Binary files /dev/null and b/docs/.vuepress/public/blog/ios-weexcore/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png differ
diff --git a/docs/.vuepress/public/blog/ios-weexcore/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png b/docs/.vuepress/public/blog/ios-weexcore/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png
new file mode 100644
index 0000000..4027b4a
Binary files /dev/null and b/docs/.vuepress/public/blog/ios-weexcore/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png differ
diff --git a/docs/.vuepress/public/blog/ios-weexcore/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png b/docs/.vuepress/public/blog/ios-weexcore/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png
new file mode 100644
index 0000000..e7daffc
Binary files /dev/null and b/docs/.vuepress/public/blog/ios-weexcore/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png differ
diff --git a/docs/.vuepress/public/blog/ios-weexcore/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png b/docs/.vuepress/public/blog/ios-weexcore/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png
new file mode 100644
index 0000000..5151f70
Binary files /dev/null and b/docs/.vuepress/public/blog/ios-weexcore/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png differ
diff --git a/docs/.vuepress/public/blog/ios-weexcore/1550801778053-070004cb-8157-466c-846b-5e403c9364e3.png b/docs/.vuepress/public/blog/ios-weexcore/1550801778053-070004cb-8157-466c-846b-5e403c9364e3.png
new file mode 100644
index 0000000..dec0185
Binary files /dev/null and b/docs/.vuepress/public/blog/ios-weexcore/1550801778053-070004cb-8157-466c-846b-5e403c9364e3.png differ
diff --git a/docs/.vuepress/public/blog/weex-auto-test-locating/1531211875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png b/docs/.vuepress/public/blog/weex-auto-test-locating/1531211875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png
new file mode 100644
index 0000000..757d7e1
Binary files /dev/null and b/docs/.vuepress/public/blog/weex-auto-test-locating/1531211875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png differ
diff --git a/docs/.vuepress/public/blog/weex-auto-test-locating/1531211945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png b/docs/.vuepress/public/blog/weex-auto-test-locating/1531211945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png
new file mode 100644
index 0000000..1217dfa
Binary files /dev/null and b/docs/.vuepress/public/blog/weex-auto-test-locating/1531211945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/1b94848aaa731b146228090093b5cc92.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/1b94848aaa731b146228090093b5cc92.png
new file mode 100644
index 0000000..6c5a3ab
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/1b94848aaa731b146228090093b5cc92.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/22195f7e61b2267f50dc78226d98aff3.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/22195f7e61b2267f50dc78226d98aff3.png
new file mode 100644
index 0000000..318eaeb
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/22195f7e61b2267f50dc78226d98aff3.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/4545bcabcdac57acfe0be1692a8b9cc5.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/4545bcabcdac57acfe0be1692a8b9cc5.png
new file mode 100644
index 0000000..0a4cae8
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/4545bcabcdac57acfe0be1692a8b9cc5.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/7d0c65a3a4b79ac3d990dfaa8f203be1.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/7d0c65a3a4b79ac3d990dfaa8f203be1.png
new file mode 100644
index 0000000..450e917
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/7d0c65a3a4b79ac3d990dfaa8f203be1.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/872298694d6e7f1a311ade626da0f0f8.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/872298694d6e7f1a311ade626da0f0f8.png
new file mode 100644
index 0000000..0fc008f
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/872298694d6e7f1a311ade626da0f0f8.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/937def357b6528b0d78f0e948560e5dc.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/937def357b6528b0d78f0e948560e5dc.png
new file mode 100644
index 0000000..69b7b32
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/937def357b6528b0d78f0e948560e5dc.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/950b476fb53468ba2f309b73435a9e15.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/950b476fb53468ba2f309b73435a9e15.png
new file mode 100644
index 0000000..88d266f
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/950b476fb53468ba2f309b73435a9e15.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/965358b8880bc1e1547654ca3f26b79a.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/965358b8880bc1e1547654ca3f26b79a.png
new file mode 100644
index 0000000..daec076
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/965358b8880bc1e1547654ca3f26b79a.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/cc6710bafd8edd87a577c72d89a764fb.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/cc6710bafd8edd87a577c72d89a764fb.png
new file mode 100644
index 0000000..e31508f
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/cc6710bafd8edd87a577c72d89a764fb.png differ
diff --git a/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/f31103153fd160ae4723069f88c61e34.png b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/f31103153fd160ae4723069f88c61e34.png
new file mode 100644
index 0000000..7052aa4
Binary files /dev/null and b/docs/.vuepress/public/blog/weexcore-multiprocess-evolution/f31103153fd160ae4723069f88c61e34.png differ
diff --git a/docs/blog/ios-weexcore.md b/docs/blog/ios-weexcore.md
index 72fb254..16933e8 100644
--- a/docs/blog/ios-weexcore.md
+++ b/docs/blog/ios-weexcore.md
@@ -17,7 +17,7 @@ Before importing WeexCore, we get render commands from Objective-C style Javascr
 2.	In styles field of one component, values related to CSS layout and other self-defined styles are mixed together.
 At the same time,  iOS uses Yoga as its layout engine. And each WXComponent(base class of any component) manages a Yoga node. The structure sketch is as follows:
 
-![Screen Shot 2018-08-03 at 15.00.43.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png)
+![Screen Shot 2018-08-03 at 15.00.43.png](ios-weexcore/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png)
 
 After importing WeexCore, we use shared new layout engine called WeexLayout which lies in WeexCore layer. Now Javascript engine outputs render commands which serves as input to RenderManager in WeexCore. RenderManager processes each command and create RenderObjects as required and fill in styles and attributes. Also each RenderObject extracts CSS layout properties from styles and configurates its WeexLayout node. Actually RenderObject inherites from WeexLayoutNode. RenderManager generate [...]
 
@@ -25,15 +25,15 @@ Besides, layout is now triggered under two circumstances. Firstly, any change to
 
 As we mentioned above, in this first stage, WeexCore has not shown its strength. In the future, it will play a far more important role as a common layer.
 
-![Screen Shot 2018-08-03 at 16.54.25.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png)
+![Screen Shot 2018-08-03 at 16.54.25.png](ios-weexcore/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png)
 
 # 0x3 Staple change points
 
 ## 0x31 Render commands data link
 
-![Screen Shot 2018-08-03 at 16.57.39.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png?x-oss-process=image/resize,w_1492)
+![Screen Shot 2018-08-03 at 16.57.39.png](ios-weexcore/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png)
 
-![Screen Shot 2018-08-03 at 16.57.48.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png?x-oss-process=image/resize,w_1492)
+![Screen Shot 2018-08-03 at 16.57.48.png](ios-weexcore/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png)
 
 In the first stage, we still use Objective-C interface of JavascriptCore and forward render commands to WeexCore using WXCoreBridge methods.
 
diff --git a/docs/zh/blog/interaction-optimization.md b/docs/zh/blog/interaction-optimization.md
index 6271fc4..92e8d29 100644
--- a/docs/zh/blog/interaction-optimization.md
+++ b/docs/zh/blog/interaction-optimization.md
@@ -262,24 +262,24 @@ weex在统计可交互时间的同时,同时记录了以下几个辅助信息
 
 
 
-[img_interaction_logic]: http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/ac84ce579b28867aac2e8ba18e40e954.png
+[img_interaction_logic]: /blog/interaction-optimization/ac84ce579b28867aac2e8ba18e40e954.png
 
-[img_yhh_android]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png
+[img_yhh_android]: /blog/interaction-optimization/1532953968812-86ca8419-7b4f-4ac1-987a-1cc32049e385.png
 
-[img_tttj_first_iOS]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png
+[img_tttj_first_iOS]: /blog/interaction-optimization/1532953955583-a020c31d-9e1e-4d5f-8754-ba9b42e04eb6.png
 
-[img_agj_iOS]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png
+[img_agj_iOS]: /blog/interaction-optimization/1532953779052-391a0eb5-2902-4a76-bb7d-ecb79fad40d5.png
 
-[img_js_logic_normal]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png
+[img_js_logic_normal]: /blog/interaction-optimization/1532953927448-6af8006c-efa9-4a83-a33e-31ac264e2320.png
 
-[img_interaction_screen_case]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png
+[img_interaction_screen_case]: /blog/interaction-optimization/1532953896764-72b52689-f4b2-4442-9f0f-9a2e4edb007f.png
 
-[img_async_data_case]: https://cdn.nlark.com/lark/0/2018/png/48836/1532953850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png
+[img_async_data_case]: /blog/interaction-optimization/1532953850732-b0d52294-a6c6-4fbb-bd08-ee7e2a4b84b8.png
 
-[img_wx_render_compare]: https://cdn.nlark.com/lark/0/2018/png/48836/1533126050649-50116f85-0101-4389-99f5-35f3ef4813d9.png
+[img_wx_render_compare]: /blog/interaction-optimization/1533126050649-50116f85-0101-4389-99f5-35f3ef4813d9.png
 
 
-[img_wx_screen_render_stream]: https://cdn.nlark.com/lark/0/2018/png/48836/1533125815712-c17b4df4-e072-42b7-8c77-560deabf7696.png
+[img_wx_screen_render_stream]: /blog/interaction-optimization/1533125815712-c17b4df4-e072-42b7-8c77-560deabf7696.png
 
 
 
diff --git a/docs/zh/blog/ios-weexcore.md b/docs/zh/blog/ios-weexcore.md
index 8743dc4..90c4617 100644
--- a/docs/zh/blog/ios-weexcore.md
+++ b/docs/zh/blog/ios-weexcore.md
@@ -14,7 +14,7 @@ WeexCore 为了实现跨平台,使用 C++ 编写。其当前基本职责为:
 
 此外,在接入 WeexCore 前,ObjC 层除了需要维护 Component Tree 外,还需要建立并维护排版引擎使用的 Layout Tree。架构如下:
 
-![Screen Shot 2018-08-03 at 15.00.43.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png)
+![Screen Shot 2018-08-03 at 15.00.43.png](/blog/ios-weexcore/1550801663181-91fc0fd3-8568-42f7-b026-83e56e5f2c7f.png)
 
 接入 WeexCore 后,Layout 引擎下沉到 WeexCore 层,JSFramework 输出的渲染指令直接交给 WeexCore 中的 RenderManager。RenderManager 进行解析后,创建 RenderObject。RenderObject 直接是 LayoutNode 的子类,可由 LayoutEngine 处理。不需要像之前那样由上层 Component 创建并手工关联。RenderManager 将渲染指令平坦化,并输出相关 Action 到 Render Action Pool,再通过 PlatformBridge 传递给 ObjC 层的 ComponentManager。平坦化体现在:
 * 组件及它的孩子被拆分成多条 AddElementAction 输出。
@@ -24,7 +24,7 @@ WeexCore 为了实现跨平台,使用 C++ 编写。其当前基本职责为:
 
 架构图如下:
 
-![Screen Shot 2018-08-03 at 16.54.25.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png)
+![Screen Shot 2018-08-03 at 16.54.25.png](/blog/ios-weexcore/1550801699138-b1bd32d9-8cea-4375-aec2-e23f81d7edd6.png)
 
 初看两副架构图,当前的 WeexCore 还没有发挥出威力。未来,它将在 JSFramework 与平台层中间发挥越来越大的作用。
 
@@ -32,15 +32,15 @@ WeexCore 为了实现跨平台,使用 C++ 编写。其当前基本职责为:
 
 ## 0x31 将前端渲染指令传给WeexCore
 
-![Screen Shot 2018-08-03 at 16.57.39.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png?x-oss-process=image/resize,w_1492)
+![Screen Shot 2018-08-03 at 16.57.39.png](/blog/ios-weexcore/1550801726358-df1c5c8e-8f4a-4c79-9ddd-a9dd2e791132.png)
 
-![Screen Shot 2018-08-03 at 16.57.48.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png?x-oss-process=image/resize,w_1492)
+![Screen Shot 2018-08-03 at 16.57.48.png](/blog/ios-weexcore/1550801745140-2d132467-dc6d-4fd9-ac8a-8acdd6de1a24.png)
 
 相比于接入前,拿到前端渲染指令和数据后,不做逻辑,直接将数据透传给 WeexCore。此处涉及一次 OC 对象到 wson 数据的转换,未来可以优化。
 
 ## 0x32 实现 PlatformBridge,接收平坦化后的指令
 
-![Screen Shot 2018-08-03 at 17.06.02.png](https://cdn.nlark.com/yuque/0/2019/png/272593/1550801778053-070004cb-8157-466c-846b-5e403c9364e3.png?x-oss-process=image/resize,w_1492)
+![Screen Shot 2018-08-03 at 17.06.02.png](/blog/ios-weexcore/1550801778053-070004cb-8157-466c-846b-5e403c9364e3.png)
 
 以 AddElement 为例,WeexCore 回吐的每条指令,只对应一个 Element。数据经过平坦化,但是需要转换回 OC 对象,未来可以优化。
 
diff --git a/docs/zh/blog/weex-auto-test-locating.md b/docs/zh/blog/weex-auto-test-locating.md
index 625eed5..79d4a36 100644
--- a/docs/zh/blog/weex-auto-test-locating.md
+++ b/docs/zh/blog/weex-auto-test-locating.md
@@ -11,7 +11,7 @@
 ---
 **实现原理**
 
-![image.png](https://cdn.yuque.com/lark/0/2018/png/34622/1531211875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png)
+![image.png](/blog/weex-auto-test-locating/1531211875576-24be9339-cb25-41fc-8b4c-26d74aaf1ddd.png)
 
 如上图所示,我们首先在weex页面的根部,创建了一个container节点,用于存储当前页面所有添加test-id属性的节点其test-id值与实际节点ID的映射关系;其次,在页面的layout发生变化时,触发收集新的携带test-id节点的信息,并为其分配一个新的ID;最后,我们将该节点的test-id属性和对应的ID写入到container节点中,方便自动化脚本查询指定节点时,能够获取其真实ID的信息;
 
@@ -141,7 +141,7 @@ if (attributes[@"testId"]) {
 由于iOS下,只需要获取“testID”属性即可,此处我们不在赘述在iOS下定位带元素的方法。下面,我们将给出Android下查找test-id的测试代码。而业务方在实际使用过程当中,可以在自己的自动化框架中,封装统一的FindByTestID方法,来达到一套代码双端执行的效果。后续,我们也会对外推出一个基于Appium的测试框架,提供一个功能较为丰富的weex自动化执行框架给外部开发者。
 
 **原理示意图**
-![image.png](https://cdn.yuque.com/lark/0/2018/png/34622/1531211945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png)
+![image.png](/blog/weex-auto-test-locating/1531211945217-fe2a8501-dfd8-4372-a3e5-b5007e5bced2.png)
 
 针对本方案,我们基于Appium测试框架,实现了对应查找元素的方法。代码逻辑如下:
 ```java
diff --git a/docs/zh/blog/weexcore-multiprocess-evolution.md b/docs/zh/blog/weexcore-multiprocess-evolution.md
index b285540..268789c 100644
--- a/docs/zh/blog/weexcore-multiprocess-evolution.md
+++ b/docs/zh/blog/weexcore-multiprocess-evolution.md
@@ -6,7 +6,7 @@
 `WeexCore` 在今年三月份的时候, 加入了一个新的成员, 叫 `LayoutEngine`, 它的算法都沉到 c++ 层. 而且一同带下来的还有它的合作伙伴 `Parser`. 这样, `DOM 解析`和 `Layout` 全家桶就全部进入了 `JSThread`. 在减少一个线程的情况下, Weex 的渲染性能还能有所提升, 足以说明目前的 `LayoutEngine` 的强大.
 
 演变过程大致如下图所示, 黄色 DOMParser 本来在一个独立的线程里, 现在和绿色块合成了一个线程.
-![2018-12-07 at 13.18.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/f31103153fd160ae4723069f88c61e34.png)
+![2018-12-07 at 13.18.png](/blog/weexcore-multiprocess-evolution/f31103153fd160ae4723069f88c61e34.png)
 
 再说说多进程, Weex 的 jsEngine 从 V8 切到了 JavaScriptCore. 但由于以下几个问题, 所以将 JSC 引擎放到了子进程里运行.
 1. 在JSC引擎上线出现许多无定位的稳定性问题,威胁手淘等使用Weex的客户端的稳定性。
@@ -19,7 +19,7 @@
 
 先说说为什么多进程下, 为什么还是单线程的模型.
 
-![2018-12-07 at 11.29.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/872298694d6e7f1a311ade626da0f0f8.png)
+![2018-12-07 at 11.29.png](/blog/weexcore-multiprocess-evolution/872298694d6e7f1a311ade626da0f0f8.png)
 
 如上图所示, 一块共享内存分为16份, 父进程(WeexCore) 写偶数块, 读奇数块. 子进程(JSS) 写奇数块, 读偶数块. 
 
@@ -29,7 +29,7 @@
 
 所以, WeexCore 的线程模型演变成下面这个样子.
 
-![2018-12-07 at 12.23.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/cc6710bafd8edd87a577c72d89a764fb.png)
+![2018-12-07 at 12.23.png](/blog/weexcore-multiprocess-evolution/cc6710bafd8edd87a577c72d89a764fb.png)
 
 从架构上来说, 主要有以下几个变动
 * 1. WeexCore 演变成消息驱动的线程异步交互模型.  
@@ -43,7 +43,7 @@
 ### 2. 详解
 #### 2.1. 消息驱动的异步通信模型
 线程的异步通信模型可以避免线程间互不阻塞,提⾼高线程的并发性
-![2018-12-07 at 12.36.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/937def357b6528b0d78f0e948560e5dc.png)
+![2018-12-07 at 12.36.png](/blog/weexcore-multiprocess-evolution/937def357b6528b0d78f0e948560e5dc.png)
 
 异步通信可以通过简单的控制线程共享的 volatile 变量或者信号量 mutex 和条件异步调⽤用到其他线程 的函数块,然⽽简单粗暴的使⽤用这些⽅式时,线程的边界会变得不明显或者代码块都充斥着锁和信号量的控制,如果数据需要线程公用,还需要对数据块上锁,导致死锁或异步能⼒下降,对本身代码的维护和程序的稳定性都有影响。
 消息驱动的异步通信模型结是常用的线程循环模型,是一种非侵⼊式设计,消息结构耦合度底,线程中的循环实现灵活度高。尽管它也是基于上述的⽅式去进⾏线程切换,但相⽐起直接对⽅法⽤锁,或者直接利用 volatile,通过消息使代码块和数据边界明显,提⾼了程序的线程安全性,线程间互不阻塞,提⾼线程的并发性。它代表着⼀种设计哲学,但是这并不是代表它没有任何锁控制,只是可以把锁限制在⼀个极⼩的范围内。
@@ -53,7 +53,7 @@
 的消息循环机制,例例如 Android Handler。
 
 ##### 2.1.1 总体设计
-![2018-12-07 at 12.40.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/4545bcabcdac57acfe0be1692a8b9cc5.png)
+![2018-12-07 at 12.40.png](/blog/weexcore-multiprocess-evolution/4545bcabcdac57acfe0be1692a8b9cc5.png)
 
 上图是消息驱动框架的简要类关系图,整体的流程是创建或者依附到 Thread 环境,通过消息泵 MessagePump 完成线程切换,驱动消息循环体 MessageLoop 进⾏消息循环,在当前线程中执⾏来自于其他线程丢进池⼦中的消息。
 
@@ -64,13 +64,13 @@
 ##### 2.1.2 具体流程
 下⾯将从 Thread 创建过程中相关对象的创建流程图、消息循环初始化流程图和消息驱动流程图上分 析,通过具体流程可以了解内部对跨平台和对当前 Weex 的上层线程模型的适配机制。
 
-![2018-12-07 at 12.42.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/7d0c65a3a4b79ac3d990dfaa8f203be1.png)
+![2018-12-07 at 12.42.png](/blog/weexcore-multiprocess-evolution/7d0c65a3a4b79ac3d990dfaa8f203be1.png)
 
 上图是 Thread 创建过程中相关对象的创建流程图。当外界通过 new 创建 Thread 时,需要带上 MessageLoop::Type 的参数(关键:⽤于创建 MessagePump,启动时会根据类型判断是否要创建线 程环境)。ThreadImpl 是 Thread 的实现类,是真正⽤于创建 Thread 环境的对象,它是⼀个抽象类,它的⼦类后缀分别是 Android / iOS / Posix。这些⼦类分别代表了各个环境下的实现。Android 和 iOS 都是 Unix-like 系统,因此他们使⽤的都是 Posix 线程,但是在 pthread 的操作上会有不⼀致 的地⽅,例如 pthread_setname_np 在 Android 和 iOS 上传递的参数不⼀样。因此根据不同系统去 对应的对实现类做出调整。Thread 在初始化 Impl 时会根据宏定义确定初始化的 Impl ⼦类,从⽽做到平台适应。
 
 ThreadImpl 持有⼀个维护消息队列的 MessageLoop,再初始化时也会⼀并创建。MessageLoop 中 持有⼀个驱动器 MessagePump,MessagePump 是⼀个接⼝类,具体实现类由 MessageLoop::Type 决定。MessageLoop::Type 具有两种类型,DEFAULT 指驱动器由默认的 Posix Thread ⽅式进⾏,PLATFORM 指驱动器由兼容 Android 或 iOS 的线程环境和消息循环⽅式实现(具体循环请继续向后)。
 
-![2018-12-07 at 12.43.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/950b476fb53468ba2f309b73435a9e15.png)
+![2018-12-07 at 12.43.png](/blog/weexcore-multiprocess-evolution/950b476fb53468ba2f309b73435a9e15.png)
 
 上图是消息循环初始化流程图。当 Thread 创建完成后,需要通过 Thread::Start ⽅法完成内部消息循 环的构建流程。Thread::Start ⽅法会通过实现类 ThreadImpl::Run 完成,ThreadImplPosix 是 Android / iOS 的基类,基类中 Run ⽅法会对 MessageLoop::Type 进⾏判断:
 
@@ -85,7 +85,7 @@ MessageLoop 在这⾥的作⽤只是⽤于执⾏消息和存储消息,因此 M
 
 到此消息循环的初始化流程完成,DEFAULT 类型进⼊了线程阻塞等待唤醒,⽽ PLATFORM 类型进⼊ 了等待来⾃ Android / iOS 的调度。
 
-![2018-12-07 at 12.45.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/965358b8880bc1e1547654ca3f26b79a.png)
+![2018-12-07 at 12.45.png](/blog/weexcore-multiprocess-evolution/965358b8880bc1e1547654ca3f26b79a.png)
 
 上图是消息驱动流程图。当外界在其他线程通过指定线程的 MessageLoop 进⾏ PostTask 传进来了⼀ 个任务 closure,内部会对 DelayedTaskQueue 上锁,确保安全的添加操作,此时 closure 会变成 DelayedTask 扔进池⼦⾥,释放锁。通知消息泵有消息进来:
 
@@ -96,7 +96,7 @@ MessageLoop 在这⾥的作⽤只是⽤于执⾏消息和存储消息,因此 M
 MessageLoop::DoWork 中⾸先对 DelayedTaskQueue 上锁,通过对⽐ DelayedTask 时间和当前时 间获取需要执⾏的 closure 列表,如果还有任务,则通知消息泵定时驱动,接着释放锁,执⾏ closure 列表。结束后如果是 MessagePumpPosix,则需阻塞当前线程,等待下次唤醒。
 
 ##### 2.1.3 closure 设计
-![2018-12-07 at 12.47.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/1b94848aaa731b146228090093b5cc92.png)
+![2018-12-07 at 12.47.png](/blog/weexcore-multiprocess-evolution/1b94848aaa731b146228090093b5cc92.png)
 
 closure 是⼀个任务的载体,它实际是⼀个 std::function。它在被扔进任务池⼦⾥⾯时,它的⽣命周 期就跟随着线程,除⾮它离开了执⾏队列被执⾏,那么它的⽣命周期将在执⾏后被销毁,否则未被执 ⾏的任务将在执⾏完后⾃动析构。⽽这个可以拷⻉的 function 是通过 CopyableLambda 实现的, CopyableLambda 通过创建⼀个指向数据的共享指针,然后创建⼀个可复制的 lambda 来捕获该共享 指针,然后将该可复制的 lambda 包装成 std::function 请求的签名,赋予 std::function 函数拷⻉的 功能,可供 MessageLoop 持有调度。
 
@@ -117,7 +117,7 @@ weex::base::MakeCopyable([page_id = std::string(page_id), task = std::string(tas
 #### 2.2. WeexCore 分层设计
 IPC 可热插拔, 单双进程自由切换
 
-![2018-12-07 at 13.05.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/22195f7e61b2267f50dc78226d98aff3.png)
+![2018-12-07 at 13.05.png](/blog/weexcore-multiprocess-evolution/22195f7e61b2267f50dc78226d98aff3.png)
 
 如图所示.
 
diff --git a/package-lock.json b/package-lock.json
index 21402db..d7f6aa8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4878,7 +4878,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -4899,12 +4900,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -4919,17 +4922,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -5046,7 +5052,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -5058,6 +5065,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -5072,6 +5080,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -5079,12 +5088,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -5103,6 +5114,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -5183,7 +5195,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -5195,6 +5208,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -5280,7 +5294,8 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -5316,6 +5331,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -5335,6 +5351,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -5378,12 +5395,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },