From bcdb6c0ace695b961fc63e179a18088594abf075 Mon Sep 17 00:00:00 2001 From: xujiang Date: Sat, 8 May 2021 00:34:13 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=9B=B4=E6=96=B0dooring=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc-dist/404.html | 6 +- doc-dist/assets/img/v6.deploy.43cbe0de.png | Bin 0 -> 58757 bytes .../js/{10.c3aa487f.js => 10.2d5d3aaa.js} | 6 +- .../js/{11.4dfd0b43.js => 11.db03b544.js} | 6 +- doc-dist/assets/js/12.d4cc4a96.js | 177 +++++++++ .../js/{12.639e1894.js => 13.9e2d642e.js} | 8 +- .../js/{13.e30615b0.js => 14.ea0f3745.js} | 8 +- .../js/{14.eff270f4.js => 15.0bec3d88.js} | 8 +- .../js/{15.2cabc303.js => 16.7a72453e.js} | 40 +- .../js/{16.ebc27227.js => 17.c8b6849e.js} | 10 +- .../js/{17.e2c644fa.js => 18.e7ced042.js} | 4 +- .../js/{18.3e6eaba0.js => 19.90149f22.js} | 4 +- .../js/{2.693230f5.js => 2.917402d3.js} | 6 +- .../js/{19.4abe8428.js => 20.4781e342.js} | 4 +- .../js/{20.eb3d4a7f.js => 21.f426ff47.js} | 2 +- .../js/{21.acd348b3.js => 22.0e8b2b46.js} | 4 +- .../js/{22.da6fbe43.js => 23.83c4ae0b.js} | 2 +- .../js/{23.3c312dd7.js => 24.69d1e5e4.js} | 4 +- .../js/{24.96d82a87.js => 25.e10c3e5e.js} | 4 +- .../js/{25.b3baaa9c.js => 26.c1e8d4c6.js} | 4 +- .../js/{26.5755449d.js => 27.faa6f053.js} | 4 +- .../js/{27.9151272d.js => 28.f591635f.js} | 4 +- .../js/{3.0105453b.js => 3.d2d22c88.js} | 10 +- .../js/{4.2121e1d8.js => 4.f2ae7e99.js} | 6 +- .../js/{5.615d527f.js => 5.262c1769.js} | 6 +- .../js/{6.a3c1a71a.js => 6.5f53f889.js} | 6 +- .../js/{7.f3022582.js => 7.6b0d225c.js} | 10 +- .../js/{8.66884c30.js => 8.e0652172.js} | 10 +- .../js/{app.ac490cc9.js => app.7f190420.js} | 372 ++++++++++-------- doc-dist/index.html | 6 +- doc-dist/zh/guide/building.html | 6 +- .../zh/guide/componentDev/DSLAnalysis.html | 6 +- .../componentDev/componentStructure.html | 8 +- .../zh/guide/componentDev/dynamicLoading.html | 6 +- doc-dist/zh/guide/deployDev/api.html | 6 +- doc-dist/zh/guide/deployDev/deploy.html | 10 +- doc-dist/zh/guide/deployDev/deploy_v6.html | 43 ++ doc-dist/zh/guide/deployDev/https.html | 10 +- doc-dist/zh/guide/deployDev/oss.html | 6 +- doc-dist/zh/guide/directoryStructure.html | 6 +- .../functionRealization/machinePreview.html | 6 +- .../functionRealization/pagePreview.html | 6 +- .../guide/functionRealization/revocation.html | 6 +- .../guide/functionRealization/saveJson.html | 6 +- .../guide/functionRealization/screenshot.html | 6 +- .../functionRealization/templateLibrary.html | 6 +- doc-dist/zh/guide/index.html | 6 +- doc-dist/zh/guide/introduced.html | 6 +- doc-dist/zh/guide/startedQuickly.html | 6 +- doc/.vuepress/config.js | 6 + doc/img/common/v6.deploy.png | Bin 0 -> 58757 bytes doc/zh/guide/deployDev/deploy_v6.md | 46 +++ doc/zh/guide/startedQuickly.md | 5 + 53 files changed, 644 insertions(+), 315 deletions(-) create mode 100644 doc-dist/assets/img/v6.deploy.43cbe0de.png rename doc-dist/assets/js/{10.c3aa487f.js => 10.2d5d3aaa.js} (95%) rename doc-dist/assets/js/{11.4dfd0b43.js => 11.db03b544.js} (98%) create mode 100644 doc-dist/assets/js/12.d4cc4a96.js rename doc-dist/assets/js/{12.639e1894.js => 13.9e2d642e.js} (89%) rename doc-dist/assets/js/{13.e30615b0.js => 14.ea0f3745.js} (89%) rename doc-dist/assets/js/{14.eff270f4.js => 15.0bec3d88.js} (84%) rename doc-dist/assets/js/{15.2cabc303.js => 16.7a72453e.js} (73%) rename doc-dist/assets/js/{16.ebc27227.js => 17.c8b6849e.js} (98%) rename doc-dist/assets/js/{17.e2c644fa.js => 18.e7ced042.js} (97%) rename doc-dist/assets/js/{18.3e6eaba0.js => 19.90149f22.js} (93%) rename doc-dist/assets/js/{2.693230f5.js => 2.917402d3.js} (99%) rename doc-dist/assets/js/{19.4abe8428.js => 20.4781e342.js} (93%) rename doc-dist/assets/js/{20.eb3d4a7f.js => 21.f426ff47.js} (99%) rename doc-dist/assets/js/{21.acd348b3.js => 22.0e8b2b46.js} (99%) rename doc-dist/assets/js/{22.da6fbe43.js => 23.83c4ae0b.js} (99%) rename doc-dist/assets/js/{23.3c312dd7.js => 24.69d1e5e4.js} (99%) rename doc-dist/assets/js/{24.96d82a87.js => 25.e10c3e5e.js} (99%) rename doc-dist/assets/js/{25.b3baaa9c.js => 26.c1e8d4c6.js} (99%) rename doc-dist/assets/js/{26.5755449d.js => 27.faa6f053.js} (99%) rename doc-dist/assets/js/{27.9151272d.js => 28.f591635f.js} (98%) rename doc-dist/assets/js/{3.0105453b.js => 3.d2d22c88.js} (99%) rename doc-dist/assets/js/{4.2121e1d8.js => 4.f2ae7e99.js} (90%) rename doc-dist/assets/js/{5.615d527f.js => 5.262c1769.js} (90%) rename doc-dist/assets/js/{6.a3c1a71a.js => 6.5f53f889.js} (97%) rename doc-dist/assets/js/{7.f3022582.js => 7.6b0d225c.js} (90%) rename doc-dist/assets/js/{8.66884c30.js => 8.e0652172.js} (94%) rename doc-dist/assets/js/{app.ac490cc9.js => app.7f190420.js} (99%) create mode 100644 doc-dist/zh/guide/deployDev/deploy_v6.html create mode 100644 doc/img/common/v6.deploy.png create mode 100644 doc/zh/guide/deployDev/deploy_v6.md diff --git a/doc-dist/404.html b/doc-dist/404.html index 8f7da0c..190732c 100644 --- a/doc-dist/404.html +++ b/doc-dist/404.html @@ -8,13 +8,13 @@ - + -

404

Looks like we've got some broken links.
+ - + diff --git a/doc-dist/assets/img/v6.deploy.43cbe0de.png b/doc-dist/assets/img/v6.deploy.43cbe0de.png new file mode 100644 index 0000000000000000000000000000000000000000..eb44518945ccb9a945198c071036ec651e3b8e5e GIT binary patch literal 58757 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 RzkCsRsHq-TNj+rh`45`0$WH(O literal 0 HcmV?d00001 diff --git a/doc-dist/assets/js/10.c3aa487f.js b/doc-dist/assets/js/10.2d5d3aaa.js similarity index 95% rename from doc-dist/assets/js/10.c3aa487f.js rename to doc-dist/assets/js/10.2d5d3aaa.js index ad07e3e..74b28b4 100644 --- a/doc-dist/assets/js/10.c3aa487f.js +++ b/doc-dist/assets/js/10.2d5d3aaa.js @@ -1,10 +1,10 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ [10], { - 360: function(t, r, a) { + 359: function(t, r, a) { t.exports = a.p + 'assets/img/dynamic.15a5303a.png'; }, - 387: function(t, r, a) { + 388: function(t, r, a) { 'use strict'; a.r(r); var n = a(42), @@ -41,7 +41,7 @@ ), ]), t._v(' '), - n('img', { attrs: { src: a(360), alt: 'foo' } }), + n('img', { attrs: { src: a(359), alt: 'foo' } }), t._v(' '), n('p', [ t._v('具体代码可以参考Dooring的Github地址:'), diff --git a/doc-dist/assets/js/11.4dfd0b43.js b/doc-dist/assets/js/11.db03b544.js similarity index 98% rename from doc-dist/assets/js/11.4dfd0b43.js rename to doc-dist/assets/js/11.db03b544.js index 113ad6f..da8c92a 100644 --- a/doc-dist/assets/js/11.4dfd0b43.js +++ b/doc-dist/assets/js/11.db03b544.js @@ -1,10 +1,10 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ [11], { - 359: function(t, _, v) { + 360: function(t, _, v) { t.exports = v.p + 'assets/img/deploy.d1b1d698.png'; }, - 386: function(t, _, v) { + 390: function(t, _, v) { 'use strict'; v.r(_); var a = v(42), @@ -50,7 +50,7 @@ t._v(' 部署架构图'), ]), t._v(' '), - a('img', { attrs: { src: v(359), alt: 'H5-dooring部署' } }), + a('img', { attrs: { src: v(360), alt: 'H5-dooring部署' } }), t._v(' '), a('p', [t._v('部署流程如下:')]), t._v(' '), diff --git a/doc-dist/assets/js/12.d4cc4a96.js b/doc-dist/assets/js/12.d4cc4a96.js new file mode 100644 index 0000000..f310bfb --- /dev/null +++ b/doc-dist/assets/js/12.d4cc4a96.js @@ -0,0 +1,177 @@ +(window.webpackJsonp = window.webpackJsonp || []).push([ + [12], + { + 361: function(t, v, _) { + t.exports = _.p + 'assets/img/v6.deploy.43cbe0de.png'; + }, + 392: function(t, v, _) { + 'use strict'; + _.r(v); + var e = _(42), + a = Object(e.a)( + {}, + function() { + var t = this, + v = t.$createElement, + e = t._self._c || v; + return e('ContentSlotsDistributor', { attrs: { 'slot-key': t.$parent.slotKey } }, [ + e('p', [t._v('私有化部署需要获取3个核心项目包, 包括')]), + t._v(' '), + e('ul', [ + e('li', [t._v('可视化大屏编辑器(v6.dooring/)')]), + t._v(' '), + e('li', [t._v('v6管理后台(v6.dooring/manage)')]), + t._v(' '), + e('li', [t._v('服务端项目(v6.dooring/server)')]), + ]), + t._v(' '), + e('p', [ + t._v('获取以上三个核心源码工程需要满足商业授权协议, 具体可参考'), + e( + 'a', + { + attrs: { + href: 'http://h5.dooring.cn/h5_plus/price', + target: '_blank', + rel: 'noopener noreferrer', + }, + }, + [t._v('商业授权方案'), e('OutboundLink')], + 1, + ), + ]), + t._v(' '), + e('h3', { attrs: { id: '部署架构图' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#部署架构图' } }, [ + t._v('#'), + ]), + t._v(' 部署架构图'), + ]), + t._v(' '), + e('img', { attrs: { src: _(361), alt: 'H5-dooring部署' } }), + t._v(' '), + e('p', [t._v('部署流程如下:')]), + t._v(' '), + e('ol', [ + e('li', [t._v('下载3个源码工程, 安装依赖(npm install 或 yarn)')]), + t._v(' '), + e('li', [ + t._v('打包2个前端工程至'), + e('code', [t._v('server')]), + t._v('的static目录下'), + ]), + t._v(' '), + e('li', [ + t._v('在'), + e('code', [t._v('server')]), + t._v('下本地运行 '), + e('code', [t._v('yarn start')]), + t._v(' 或 '), + e('code', [t._v('npm start')]), + t._v(' 启动服务端进行本地测试'), + ]), + t._v(' '), + e('li', [ + t._v('打包服务端代码, '), + e('code', [t._v('yarn build')]), + t._v(' 生成 '), + e('code', [t._v('dist')]), + t._v(' 目录, 建议使用 '), + e('code', [t._v('pm2')]), + t._v(' 做'), + e('code', [t._v('nodejs')]), + t._v('服务的负载均衡, 运行 '), + e('code', [t._v('pm2 start dist/index.js')]), + t._v('启动生产环境代码'), + ]), + ]), + t._v(' '), + e('p', [ + t._v('也可以将以上步骤集成到gitlab等CI, CD服务中, 进行自动化打包发布, 或者采用'), + e('code', [t._v('docker')]), + t._v('进行容器化部署.'), + ]), + t._v(' '), + e('h3', { attrs: { id: '步骤3-4详细流程' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#步骤3-4详细流程' } }, [ + t._v('#'), + ]), + t._v(' 步骤3.4详细流程'), + ]), + t._v(' '), + e('h4', { attrs: { id: '_1-安装项目环境' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#_1-安装项目环境' } }, [ + t._v('#'), + ]), + t._v(' 1. 安装项目环境'), + ]), + t._v(' '), + e('p', [ + t._v( + '服务器需提前安装node和pm2, 将本项目上传至服务器指定的目录(如/www/activity), 进入项目目录, 执行:', + ), + ]), + t._v(' '), + e('div', { staticClass: 'language- extra-class' }, [ + e('pre', { pre: !0, attrs: { class: 'language-text' } }, [ + e('code', [t._v('npm install\n')]), + ]), + ]), + e('h4', { attrs: { id: '_2-修改项目域名' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#_2-修改项目域名' } }, [ + t._v('#'), + ]), + t._v(' 2. 修改项目域名'), + ]), + t._v(' '), + e('p', [ + t._v('进入'), + e('code', [t._v('./src/config/index.js')]), + t._v(', 修改'), + e('code', [t._v('staticPath')]), + t._v('变量为当前服务器域名/ip, 如'), + e('code', [t._v('http://xxx.com')]), + t._v('或'), + e('code', [t._v('http://xxx.com:8080')]), + t._v('(如非80端口)'), + ]), + t._v(' '), + e('h4', { attrs: { id: '_3-编译项目' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#_3-编译项目' } }, [ + t._v('#'), + ]), + t._v(' 3. 编译项目'), + ]), + t._v(' '), + e('p', [ + t._v('执行'), + e('code', [t._v('npm run build')]), + t._v('编译项目, 生成'), + e('code', [t._v('dist')]), + t._v('目录'), + ]), + t._v(' '), + e('h4', { attrs: { id: '_4-运行项目' } }, [ + e('a', { staticClass: 'header-anchor', attrs: { href: '#_4-运行项目' } }, [ + t._v('#'), + ]), + t._v(' 4. 运行项目'), + ]), + t._v(' '), + e('p', [ + t._v('在项目根目录执行 '), + e('code', [t._v('pm2 start dist/index.js')]), + t._v('启动项目'), + ]), + ]); + }, + [], + !1, + null, + null, + null, + ); + v.default = a.exports; + }, + }, +]); diff --git a/doc-dist/assets/js/12.639e1894.js b/doc-dist/assets/js/13.9e2d642e.js similarity index 89% rename from doc-dist/assets/js/12.639e1894.js rename to doc-dist/assets/js/13.9e2d642e.js index 6233459..9e9b52d 100644 --- a/doc-dist/assets/js/12.639e1894.js +++ b/doc-dist/assets/js/13.9e2d642e.js @@ -1,10 +1,10 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [12], + [13], { - 361: function(t, e, s) { + 364: function(t, e, s) { t.exports = s.p + 'assets/img/preview-machine.895a0711.png'; }, - 391: function(t, e, s) { + 395: function(t, e, s) { 'use strict'; s.r(e); var a = s(42), @@ -22,7 +22,7 @@ t._v(' '), a('p', [t._v('真机预览和网页预览的流程类似,工作流程如下:')]), t._v(' '), - a('img', { attrs: { src: s(361), alt: 'foo' } }), + a('img', { attrs: { src: s(364), alt: 'foo' } }), t._v(' '), a('p', [t._v('由于不同机型预览的效果有些许不同,最终效果以实际看到的为主。')]), ]); diff --git a/doc-dist/assets/js/13.e30615b0.js b/doc-dist/assets/js/14.ea0f3745.js similarity index 89% rename from doc-dist/assets/js/13.e30615b0.js rename to doc-dist/assets/js/14.ea0f3745.js index 0aca486..6510de5 100644 --- a/doc-dist/assets/js/13.e30615b0.js +++ b/doc-dist/assets/js/14.ea0f3745.js @@ -1,10 +1,10 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [13], + [14], { - 362: function(t, s, e) { + 365: function(t, s, e) { t.exports = e.p + 'assets/img/screenshot.daeecedd.png'; }, - 394: function(t, s, e) { + 398: function(t, s, e) { 'use strict'; e.r(s); var a = e(42), @@ -27,7 +27,7 @@ ), ]), this._v(' '), - s('img', { attrs: { src: e(362), alt: 'foo' } }), + s('img', { attrs: { src: e(365), alt: 'foo' } }), ]); }, [], diff --git a/doc-dist/assets/js/14.eff270f4.js b/doc-dist/assets/js/15.0bec3d88.js similarity index 84% rename from doc-dist/assets/js/14.eff270f4.js rename to doc-dist/assets/js/15.0bec3d88.js index 008b7c5..30c9f87 100644 --- a/doc-dist/assets/js/14.eff270f4.js +++ b/doc-dist/assets/js/15.0bec3d88.js @@ -1,10 +1,10 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [14], + [15], { - 367: function(t, s, e) { + 368: function(t, s, e) { t.exports = e.p + 'assets/img/framework.1c9c696b.png'; }, - 399: function(t, s, e) { + 401: function(t, s, e) { 'use strict'; e.r(s); var n = e(42), @@ -14,7 +14,7 @@ var t = this.$createElement, s = this._self._c || t; return s('ContentSlotsDistributor', { attrs: { 'slot-key': this.$parent.slotKey } }, [ - s('img', { attrs: { src: e(367), alt: 'foo' } }), + s('img', { attrs: { src: e(368), alt: 'foo' } }), this._v(' '), s('p', [this._v('注:灰色部分还未实现,正在更新中...')]), ]); diff --git a/doc-dist/assets/js/15.2cabc303.js b/doc-dist/assets/js/16.7a72453e.js similarity index 73% rename from doc-dist/assets/js/15.2cabc303.js rename to doc-dist/assets/js/16.7a72453e.js index 8742417..bc47f78 100644 --- a/doc-dist/assets/js/15.2cabc303.js +++ b/doc-dist/assets/js/16.7a72453e.js @@ -1,14 +1,14 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [15], + [16], { - 368: function(t, a, s) { - t.exports = s.p + 'assets/img/home.f76105db.png'; + 369: function(t, a, r) { + t.exports = r.p + 'assets/img/home.f76105db.png'; }, - 400: function(t, a, s) { + 402: function(t, a, r) { 'use strict'; - s.r(a); - var e = s(42), - r = Object(e.a)( + r.r(a); + var e = r(42), + s = Object(e.a)( {}, function() { var t = this, @@ -20,6 +20,28 @@ t._v(' 快速上手'), ]), t._v(' '), + e('h2', { attrs: { id: '从零搭建一个h5表单页面' } }, [ + e( + 'a', + { staticClass: 'header-anchor', attrs: { href: '#从零搭建一个h5表单页面' } }, + [t._v('#')], + ), + t._v(' 从零搭建一个H5表单页面'), + ]), + t._v(' '), + e('iframe', { + staticStyle: { width: '100%', height: '420px', 'margin-top': '20px' }, + attrs: { + src: + '//player.bilibili.com/player.html?aid=715343955&bvid=BV1QQ4y1Z725&cid=332145157&page=1', + scrolling: 'no', + border: '0', + frameborder: 'no', + framespacing: '0', + allowfullscreen: 'true', + }, + }), + t._v(' '), e('h2', { attrs: { id: '环境准备' } }, [ e('a', { staticClass: 'header-anchor', attrs: { href: '#环境准备' } }, [t._v('#')]), t._v(' 环境准备'), @@ -78,7 +100,7 @@ t._v('2.其次本地启动 h5_plus,启动完毕在浏览器打开对应的启动地址即可查看,如下:'), ]), t._v(' '), - e('img', { attrs: { src: s(368), alt: 'foo' } }), + e('img', { attrs: { src: r(369), alt: 'foo' } }), ]); }, [], @@ -87,7 +109,7 @@ null, null, ); - a.default = r.exports; + a.default = s.exports; }, }, ]); diff --git a/doc-dist/assets/js/16.ebc27227.js b/doc-dist/assets/js/17.c8b6849e.js similarity index 98% rename from doc-dist/assets/js/16.ebc27227.js rename to doc-dist/assets/js/17.c8b6849e.js index 5885960..f771512 100644 --- a/doc-dist/assets/js/16.ebc27227.js +++ b/doc-dist/assets/js/17.c8b6849e.js @@ -1,12 +1,12 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [16], + [17], { - 378: function(t, e, a) { + 379: function(t, e, a) { 'use strict'; a.r(e); - var o = a(374), - n = a(375), - i = a(376), + var o = a(375), + n = a(376), + i = a(377), s = a(308), r = { name: 'Layout', diff --git a/doc-dist/assets/js/17.e2c644fa.js b/doc-dist/assets/js/18.e7ced042.js similarity index 97% rename from doc-dist/assets/js/17.e2c644fa.js rename to doc-dist/assets/js/18.e7ced042.js index 86d96f1..d76f80e 100644 --- a/doc-dist/assets/js/17.e2c644fa.js +++ b/doc-dist/assets/js/18.e7ced042.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [17], + [18], { - 377: function(t, e, s) { + 378: function(t, e, s) { 'use strict'; s.r(e); var n = [ diff --git a/doc-dist/assets/js/18.3e6eaba0.js b/doc-dist/assets/js/19.90149f22.js similarity index 93% rename from doc-dist/assets/js/18.3e6eaba0.js rename to doc-dist/assets/js/19.90149f22.js index f71e599..07c6d00 100644 --- a/doc-dist/assets/js/18.3e6eaba0.js +++ b/doc-dist/assets/js/19.90149f22.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [18], + [19], { - 382: function(t, e, n) { + 385: function(t, e, n) { 'use strict'; n.r(e); var s = n(42), diff --git a/doc-dist/assets/js/2.693230f5.js b/doc-dist/assets/js/2.917402d3.js similarity index 99% rename from doc-dist/assets/js/2.693230f5.js rename to doc-dist/assets/js/2.917402d3.js index 46725dc..45ddab4 100644 --- a/doc-dist/assets/js/2.693230f5.js +++ b/doc-dist/assets/js/2.917402d3.js @@ -1290,7 +1290,7 @@ 'use strict'; n(331); }, - 374: function(t, e, n) { + 375: function(t, e, n) { 'use strict'; n(339), n(23), @@ -1705,7 +1705,7 @@ )); e.a = f.exports; }, - 375: function(t, e, n) { + 376: function(t, e, n) { 'use strict'; n(43), n(66); var i = n(325), @@ -2019,7 +2019,7 @@ )); e.a = m.exports; }, - 376: function(t, e, n) { + 377: function(t, e, n) { 'use strict'; var i = n(336), r = n(337), diff --git a/doc-dist/assets/js/19.4abe8428.js b/doc-dist/assets/js/20.4781e342.js similarity index 93% rename from doc-dist/assets/js/19.4abe8428.js rename to doc-dist/assets/js/20.4781e342.js index a0064ff..0e6d50a 100644 --- a/doc-dist/assets/js/19.4abe8428.js +++ b/doc-dist/assets/js/20.4781e342.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [19], + [20], { - 385: function(t, e, n) { + 386: function(t, e, n) { 'use strict'; n.r(e); var s = n(42), diff --git a/doc-dist/assets/js/20.eb3d4a7f.js b/doc-dist/assets/js/21.f426ff47.js similarity index 99% rename from doc-dist/assets/js/20.eb3d4a7f.js rename to doc-dist/assets/js/21.f426ff47.js index 52d3b6a..28e90dc 100644 --- a/doc-dist/assets/js/20.eb3d4a7f.js +++ b/doc-dist/assets/js/21.f426ff47.js @@ -1,5 +1,5 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [20], + [21], { 383: function(t, s, a) { 'use strict'; diff --git a/doc-dist/assets/js/21.acd348b3.js b/doc-dist/assets/js/22.0e8b2b46.js similarity index 99% rename from doc-dist/assets/js/21.acd348b3.js rename to doc-dist/assets/js/22.0e8b2b46.js index 593791f..e06ae6c 100644 --- a/doc-dist/assets/js/21.acd348b3.js +++ b/doc-dist/assets/js/22.0e8b2b46.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [21], + [22], { - 388: function(t, s, a) { + 387: function(t, s, a) { 'use strict'; a.r(s); var n = a(42), diff --git a/doc-dist/assets/js/22.da6fbe43.js b/doc-dist/assets/js/23.83c4ae0b.js similarity index 99% rename from doc-dist/assets/js/22.da6fbe43.js rename to doc-dist/assets/js/23.83c4ae0b.js index 74df4da..a47bc3b 100644 --- a/doc-dist/assets/js/22.da6fbe43.js +++ b/doc-dist/assets/js/23.83c4ae0b.js @@ -1,5 +1,5 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [22], + [23], { 389: function(t, s, a) { 'use strict'; diff --git a/doc-dist/assets/js/23.3c312dd7.js b/doc-dist/assets/js/24.69d1e5e4.js similarity index 99% rename from doc-dist/assets/js/23.3c312dd7.js rename to doc-dist/assets/js/24.69d1e5e4.js index 0bfb6a2..c6bcbb2 100644 --- a/doc-dist/assets/js/23.3c312dd7.js +++ b/doc-dist/assets/js/24.69d1e5e4.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [23], + [24], { - 390: function(t, s, a) { + 391: function(t, s, a) { 'use strict'; a.r(s); var n = a(42), diff --git a/doc-dist/assets/js/24.96d82a87.js b/doc-dist/assets/js/25.e10c3e5e.js similarity index 99% rename from doc-dist/assets/js/24.96d82a87.js rename to doc-dist/assets/js/25.e10c3e5e.js index fdeccc1..a0fe609 100644 --- a/doc-dist/assets/js/24.96d82a87.js +++ b/doc-dist/assets/js/25.e10c3e5e.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [24], + [25], { - 393: function(t, s, a) { + 396: function(t, s, a) { 'use strict'; a.r(s); var n = a(42), diff --git a/doc-dist/assets/js/25.b3baaa9c.js b/doc-dist/assets/js/26.c1e8d4c6.js similarity index 99% rename from doc-dist/assets/js/25.b3baaa9c.js rename to doc-dist/assets/js/26.c1e8d4c6.js index 59f799b..dc75214 100644 --- a/doc-dist/assets/js/25.b3baaa9c.js +++ b/doc-dist/assets/js/26.c1e8d4c6.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [25], + [26], { - 392: function(n, e, s) { + 393: function(n, e, s) { 'use strict'; s.r(e); var t = s(42), diff --git a/doc-dist/assets/js/26.5755449d.js b/doc-dist/assets/js/27.faa6f053.js similarity index 99% rename from doc-dist/assets/js/26.5755449d.js rename to doc-dist/assets/js/27.faa6f053.js index 71864ea..5a62627 100644 --- a/doc-dist/assets/js/26.5755449d.js +++ b/doc-dist/assets/js/27.faa6f053.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [26], + [27], { - 395: function(t, s, a) { + 399: function(t, s, a) { 'use strict'; a.r(s); var n = a(42), diff --git a/doc-dist/assets/js/27.9151272d.js b/doc-dist/assets/js/28.f591635f.js similarity index 98% rename from doc-dist/assets/js/27.9151272d.js rename to doc-dist/assets/js/28.f591635f.js index ed84678..9a1832d 100644 --- a/doc-dist/assets/js/27.9151272d.js +++ b/doc-dist/assets/js/28.f591635f.js @@ -1,7 +1,7 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ - [27], + [28], { - 396: function(t, n, e) { + 397: function(t, n, e) { 'use strict'; e.r(n); var o = e(42), diff --git a/doc-dist/assets/js/3.0105453b.js b/doc-dist/assets/js/3.d2d22c88.js similarity index 99% rename from doc-dist/assets/js/3.0105453b.js rename to doc-dist/assets/js/3.d2d22c88.js index 21631f5..38472fe 100644 --- a/doc-dist/assets/js/3.0105453b.js +++ b/doc-dist/assets/js/3.d2d22c88.js @@ -454,14 +454,14 @@ }; }, 332: function(t, n, e) {}, - 369: function(t, n, e) { + 370: function(t, n, e) { t.exports = e.p + 'assets/img/logo.001d04e6.svg'; }, - 370: function(t, n, e) { + 371: function(t, n, e) { 'use strict'; e(332); }, - 379: function(t, n, e) { + 380: function(t, n, e) { 'use strict'; e.r(n); var r = { @@ -476,7 +476,7 @@ }, }, }, - i = (e(370), e(42)), + i = (e(371), e(42)), a = Object(i.a)( r, function() { @@ -493,7 +493,7 @@ r('header', { staticClass: 'hero' }, [ null !== t.data.heroText ? r('h1', { attrs: { id: 'main-title' } }, [ - r('img', { attrs: { src: e(369), alt: t.data.heroAlt || 'hero' } }), + r('img', { attrs: { src: e(370), alt: t.data.heroAlt || 'hero' } }), r('span', [t._v(t._s(t.data.heroText || t.$title || 'Hello'))]), ]) : t._e(), diff --git a/doc-dist/assets/js/4.2121e1d8.js b/doc-dist/assets/js/4.f2ae7e99.js similarity index 90% rename from doc-dist/assets/js/4.2121e1d8.js rename to doc-dist/assets/js/4.f2ae7e99.js index f3e1899..bc99bfa 100644 --- a/doc-dist/assets/js/4.2121e1d8.js +++ b/doc-dist/assets/js/4.f2ae7e99.js @@ -2,11 +2,11 @@ [4], { 333: function(t, e, n) {}, - 371: function(t, e, n) { + 372: function(t, e, n) { 'use strict'; n(333); }, - 401: function(t, e, n) { + 403: function(t, e, n) { 'use strict'; n.r(e); var i = { @@ -26,7 +26,7 @@ ); }, }, - r = (n(371), n(42)), + r = (n(372), n(42)), p = Object(r.a)(i, void 0, void 0, !1, null, '15b7b770', null); e.default = p.exports; }, diff --git a/doc-dist/assets/js/5.615d527f.js b/doc-dist/assets/js/5.262c1769.js similarity index 90% rename from doc-dist/assets/js/5.615d527f.js rename to doc-dist/assets/js/5.262c1769.js index 57dfa6b..bf6a8e2 100644 --- a/doc-dist/assets/js/5.615d527f.js +++ b/doc-dist/assets/js/5.262c1769.js @@ -2,18 +2,18 @@ [5], { 334: function(e, t, c) {}, - 372: function(e, t, c) { + 373: function(e, t, c) { 'use strict'; c(334); }, - 380: function(e, t, c) { + 381: function(e, t, c) { 'use strict'; c.r(t); var i = { name: 'CodeBlock', props: { title: { type: String, required: !0 }, active: { type: Boolean, default: !1 } }, }, - n = (c(372), c(42)), + n = (c(373), c(42)), s = Object(n.a)( i, function() { diff --git a/doc-dist/assets/js/6.a3c1a71a.js b/doc-dist/assets/js/6.5f53f889.js similarity index 97% rename from doc-dist/assets/js/6.a3c1a71a.js rename to doc-dist/assets/js/6.5f53f889.js index d8732f6..dc46018 100644 --- a/doc-dist/assets/js/6.a3c1a71a.js +++ b/doc-dist/assets/js/6.5f53f889.js @@ -2,11 +2,11 @@ [6], { 335: function(e, t, o) {}, - 373: function(e, t, o) { + 374: function(e, t, o) { 'use strict'; o(335); }, - 381: function(e, t, o) { + 382: function(e, t, o) { 'use strict'; o.r(t); o(23), o(93), o(65), o(95); @@ -45,7 +45,7 @@ }, }, }, - c = (o(373), o(42)), + c = (o(374), o(42)), n = Object(c.a)( a, function() { diff --git a/doc-dist/assets/js/7.f3022582.js b/doc-dist/assets/js/7.6b0d225c.js similarity index 90% rename from doc-dist/assets/js/7.f3022582.js rename to doc-dist/assets/js/7.6b0d225c.js index 16506a7..a903e4f 100644 --- a/doc-dist/assets/js/7.f3022582.js +++ b/doc-dist/assets/js/7.6b0d225c.js @@ -1,13 +1,13 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ [7], { - 363: function(t, s, e) { + 362: function(t, s, e) { t.exports = e.p + 'assets/img/preview-flow.b37c7798.png'; }, - 364: function(t, s, e) { + 363: function(t, s, e) { t.exports = e.p + 'assets/img/preview-page.3ec86df5.png'; }, - 397: function(t, s, e) { + 394: function(t, s, e) { 'use strict'; e.r(s); var r = e(42), @@ -25,11 +25,11 @@ t._v(' '), r('p', [t._v('我们看看网页预览的工作流程:')]), t._v(' '), - r('img', { attrs: { src: e(363), alt: 'foo' } }), + r('img', { attrs: { src: e(362), alt: 'foo' } }), t._v(' '), r('p', [t._v('前端预览界面:')]), t._v(' '), - r('img', { attrs: { src: e(364), alt: 'foo' } }), + r('img', { attrs: { src: e(363), alt: 'foo' } }), ]); }, [], diff --git a/doc-dist/assets/js/8.66884c30.js b/doc-dist/assets/js/8.e0652172.js similarity index 94% rename from doc-dist/assets/js/8.66884c30.js rename to doc-dist/assets/js/8.e0652172.js index 07cb0f2..05a3ec1 100644 --- a/doc-dist/assets/js/8.66884c30.js +++ b/doc-dist/assets/js/8.e0652172.js @@ -1,13 +1,13 @@ (window.webpackJsonp = window.webpackJsonp || []).push([ [8], { - 365: function(t, s, a) { + 366: function(t, s, a) { t.exports = a.p + 'assets/img/template-ft.4f6e0d14.png'; }, - 366: function(t, s, a) { + 367: function(t, s, a) { t.exports = a.p + 'assets/img/template-bg.244b9ac7.png'; }, - 398: function(t, s, a) { + 400: function(t, s, a) { 'use strict'; a.r(s); var e = a(42), @@ -38,7 +38,7 @@ t._v(' 模板前台展示:'), ]), t._v(' '), - e('img', { attrs: { src: a(365), alt: 'foo' } }), + e('img', { attrs: { src: a(366), alt: 'foo' } }), t._v(' '), e('h3', { attrs: { id: '模板后台展示' } }, [ e('a', { staticClass: 'header-anchor', attrs: { href: '#模板后台展示' } }, [ @@ -47,7 +47,7 @@ t._v(' 模板后台展示:'), ]), t._v(' '), - e('img', { attrs: { src: a(366), alt: 'foo' } }), + e('img', { attrs: { src: a(367), alt: 'foo' } }), ]); }, [], diff --git a/doc-dist/assets/js/app.ac490cc9.js b/doc-dist/assets/js/app.7f190420.js similarity index 99% rename from doc-dist/assets/js/app.ac490cc9.js rename to doc-dist/assets/js/app.7f190420.js index abacc48..d7a7ed0 100644 --- a/doc-dist/assets/js/app.ac490cc9.js +++ b/doc-dist/assets/js/app.7f190420.js @@ -47,32 +47,33 @@ ({}[t] || t) + '.' + { - 2: '693230f5', - 3: '0105453b', - 4: '2121e1d8', - 5: '615d527f', - 6: 'a3c1a71a', - 7: 'f3022582', - 8: '66884c30', + 2: '917402d3', + 3: 'd2d22c88', + 4: 'f2ae7e99', + 5: '262c1769', + 6: '5f53f889', + 7: '6b0d225c', + 8: 'e0652172', 9: '5e6217e4', - 10: 'c3aa487f', - 11: '4dfd0b43', - 12: '639e1894', - 13: 'e30615b0', - 14: 'eff270f4', - 15: '2cabc303', - 16: 'ebc27227', - 17: 'e2c644fa', - 18: '3e6eaba0', - 19: '4abe8428', - 20: 'eb3d4a7f', - 21: 'acd348b3', - 22: 'da6fbe43', - 23: '3c312dd7', - 24: '96d82a87', - 25: 'b3baaa9c', - 26: '5755449d', - 27: '9151272d', + 10: '2d5d3aaa', + 11: 'db03b544', + 12: 'd4cc4a96', + 13: '9e2d642e', + 14: 'ea0f3745', + 15: '0bec3d88', + 16: '7a72453e', + 17: 'c8b6849e', + 18: 'e7ced042', + 19: '90149f22', + 20: '4781e342', + 21: 'f426ff47', + 22: '0e8b2b46', + 23: '83c4ae0b', + 24: '69d1e5e4', + 25: 'e10c3e5e', + 26: 'c1e8d4c6', + 27: 'faa6f053', + 28: 'f591635f', }[t] + '.js' ); @@ -11033,69 +11034,72 @@ var Aa = n(40), ka = { NotFound: function() { - return n.e(17).then(n.bind(null, 377)); + return n.e(18).then(n.bind(null, 378)); }, Layout: function() { - return Promise.all([n.e(0), n.e(2), n.e(16)]).then(n.bind(null, 378)); + return Promise.all([n.e(0), n.e(2), n.e(17)]).then(n.bind(null, 379)); }, }, Ca = { - 'v-11d3734f': function() { - return n.e(18).then(n.bind(null, 382)); - }, 'v-50357228': function() { - return n.e(20).then(n.bind(null, 383)); + return n.e(21).then(n.bind(null, 383)); }, 'v-77cb6b9f': function() { return n.e(9).then(n.bind(null, 384)); }, - 'v-27f2dbac': function() { + 'v-11d3734f': function() { return n.e(19).then(n.bind(null, 385)); }, - 'v-1c499b2c': function() { - return n.e(11).then(n.bind(null, 386)); - }, - 'v-358de850': function() { - return n.e(10).then(n.bind(null, 387)); + 'v-27f2dbac': function() { + return n.e(20).then(n.bind(null, 386)); }, 'v-2c7961a6': function() { - return n.e(21).then(n.bind(null, 388)); + return n.e(22).then(n.bind(null, 387)); + }, + 'v-358de850': function() { + return n.e(10).then(n.bind(null, 388)); }, 'v-6be2680e': function() { - return n.e(22).then(n.bind(null, 389)); + return n.e(23).then(n.bind(null, 389)); + }, + 'v-1c499b2c': function() { + return n.e(11).then(n.bind(null, 390)); }, 'v-3e53f828': function() { - return n.e(23).then(n.bind(null, 390)); + return n.e(24).then(n.bind(null, 391)); }, - 'v-1995786c': function() { - return n.e(12).then(n.bind(null, 391)); + 'v-94956b5c': function() { + return n.e(12).then(n.bind(null, 392)); }, 'v-4574ee28': function() { - return n.e(25).then(n.bind(null, 392)); - }, - 'v-25c71eb8': function() { - return n.e(24).then(n.bind(null, 393)); - }, - 'v-31643a8c': function() { - return n.e(13).then(n.bind(null, 394)); - }, - 'v-76fd0d8c': function() { - return n.e(26).then(n.bind(null, 395)); - }, - 'v-0be2f96c': function() { - return n.e(27).then(n.bind(null, 396)); + return n.e(26).then(n.bind(null, 393)); }, 'v-f3d01ce0': function() { - return n.e(7).then(n.bind(null, 397)); + return n.e(7).then(n.bind(null, 394)); + }, + 'v-1995786c': function() { + return n.e(13).then(n.bind(null, 395)); + }, + 'v-25c71eb8': function() { + return n.e(25).then(n.bind(null, 396)); + }, + 'v-0be2f96c': function() { + return n.e(28).then(n.bind(null, 397)); + }, + 'v-31643a8c': function() { + return n.e(14).then(n.bind(null, 398)); + }, + 'v-76fd0d8c': function() { + return n.e(27).then(n.bind(null, 399)); }, 'v-a9b10980': function() { - return n.e(8).then(n.bind(null, 398)); + return n.e(8).then(n.bind(null, 400)); }, 'v-c2ed5468': function() { - return n.e(14).then(n.bind(null, 399)); + return n.e(15).then(n.bind(null, 401)); }, 'v-3f5a1068': function() { - return n.e(15).then(n.bind(null, 400)); + return n.e(16).then(n.bind(null, 402)); }, }; function $a(t) { @@ -11457,15 +11461,6 @@ } })(fu, 'mixins', uu); var lu = [ - { - name: 'v-11d3734f', - path: '/', - component: fu, - beforeEnter: function(t, e, n) { - Wa('Layout', 'v-11d3734f').then(n); - }, - }, - { path: '/index.html', redirect: '/' }, { name: 'v-50357228', path: '/zh/guide/componentDev/DSLAnalysis.html', @@ -11483,6 +11478,15 @@ }, }, { path: '/zh/guide/index.html', redirect: '/zh/guide/' }, + { + name: 'v-11d3734f', + path: '/', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-11d3734f').then(n); + }, + }, + { path: '/index.html', redirect: '/' }, { name: 'v-27f2dbac', path: '/zh/guide/building.html', @@ -11491,22 +11495,6 @@ Wa('Layout', 'v-27f2dbac').then(n); }, }, - { - name: 'v-1c499b2c', - path: '/zh/guide/deployDev/deploy.html', - component: fu, - beforeEnter: function(t, e, n) { - Wa('Layout', 'v-1c499b2c').then(n); - }, - }, - { - name: 'v-358de850', - path: '/zh/guide/componentDev/dynamicLoading.html', - component: fu, - beforeEnter: function(t, e, n) { - Wa('Layout', 'v-358de850').then(n); - }, - }, { name: 'v-2c7961a6', path: '/zh/guide/componentDev/componentStructure.html', @@ -11515,6 +11503,14 @@ Wa('Layout', 'v-2c7961a6').then(n); }, }, + { + name: 'v-358de850', + path: '/zh/guide/componentDev/dynamicLoading.html', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-358de850').then(n); + }, + }, { name: 'v-6be2680e', path: '/zh/guide/deployDev/api.html', @@ -11523,6 +11519,14 @@ Wa('Layout', 'v-6be2680e').then(n); }, }, + { + name: 'v-1c499b2c', + path: '/zh/guide/deployDev/deploy.html', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-1c499b2c').then(n); + }, + }, { name: 'v-3e53f828', path: '/zh/guide/deployDev/https.html', @@ -11532,11 +11536,11 @@ }, }, { - name: 'v-1995786c', - path: '/zh/guide/functionRealization/machinePreview.html', + name: 'v-94956b5c', + path: '/zh/guide/deployDev/deploy_v6.html', component: fu, beforeEnter: function(t, e, n) { - Wa('Layout', 'v-1995786c').then(n); + Wa('Layout', 'v-94956b5c').then(n); }, }, { @@ -11547,6 +11551,22 @@ Wa('Layout', 'v-4574ee28').then(n); }, }, + { + name: 'v-f3d01ce0', + path: '/zh/guide/functionRealization/pagePreview.html', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-f3d01ce0').then(n); + }, + }, + { + name: 'v-1995786c', + path: '/zh/guide/functionRealization/machinePreview.html', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-1995786c').then(n); + }, + }, { name: 'v-25c71eb8', path: '/zh/guide/deployDev/oss.html', @@ -11555,6 +11575,14 @@ Wa('Layout', 'v-25c71eb8').then(n); }, }, + { + name: 'v-0be2f96c', + path: '/zh/guide/functionRealization/saveJson.html', + component: fu, + beforeEnter: function(t, e, n) { + Wa('Layout', 'v-0be2f96c').then(n); + }, + }, { name: 'v-31643a8c', path: '/zh/guide/functionRealization/screenshot.html', @@ -11571,22 +11599,6 @@ Wa('Layout', 'v-76fd0d8c').then(n); }, }, - { - name: 'v-0be2f96c', - path: '/zh/guide/functionRealization/saveJson.html', - component: fu, - beforeEnter: function(t, e, n) { - Wa('Layout', 'v-0be2f96c').then(n); - }, - }, - { - name: 'v-f3d01ce0', - path: '/zh/guide/functionRealization/pagePreview.html', - component: fu, - beforeEnter: function(t, e, n) { - Wa('Layout', 'v-f3d01ce0').then(n); - }, - }, { name: 'v-a9b10980', path: '/zh/guide/functionRealization/templateLibrary.html', @@ -11619,6 +11631,27 @@ base: '/doc/', headTags: [], pages: [ + { + title: 'DSL设计', + frontmatter: {}, + regularPath: '/zh/guide/componentDev/DSLAnalysis.html', + relativePath: 'zh/guide/componentDev/DSLAnalysis.md', + key: 'v-50357228', + path: '/zh/guide/componentDev/DSLAnalysis.html', + lastUpdated: '1/17/2021, 9:57:34 PM', + }, + { + frontmatter: {}, + regularPath: '/zh/guide/', + relativePath: 'zh/guide/README.md', + key: 'v-77cb6b9f', + path: '/zh/guide/', + headers: [ + { level: 2, title: '功能特点', slug: '功能特点' }, + { level: 2, title: '为什么选择 Dooring', slug: '为什么选择-dooring' }, + ], + lastUpdated: '3/22/2021, 10:16:35 AM', + }, { title: 'Home', frontmatter: { @@ -11649,27 +11682,6 @@ path: '/', lastUpdated: '1/17/2021, 11:22:04 PM', }, - { - title: 'DSL设计', - frontmatter: {}, - regularPath: '/zh/guide/componentDev/DSLAnalysis.html', - relativePath: 'zh/guide/componentDev/DSLAnalysis.md', - key: 'v-50357228', - path: '/zh/guide/componentDev/DSLAnalysis.html', - lastUpdated: '1/17/2021, 9:57:34 PM', - }, - { - frontmatter: {}, - regularPath: '/zh/guide/', - relativePath: 'zh/guide/README.md', - key: 'v-77cb6b9f', - path: '/zh/guide/', - headers: [ - { level: 2, title: '功能特点', slug: '功能特点' }, - { level: 2, title: '为什么选择 Dooring', slug: '为什么选择-dooring' }, - ], - lastUpdated: '3/22/2021, 10:16:35 AM', - }, { frontmatter: {}, regularPath: '/zh/guide/building.html', @@ -11678,27 +11690,6 @@ path: '/zh/guide/building.html', lastUpdated: '1/17/2021, 11:22:04 PM', }, - { - frontmatter: {}, - regularPath: '/zh/guide/deployDev/deploy.html', - relativePath: 'zh/guide/deployDev/deploy.md', - key: 'v-1c499b2c', - path: '/zh/guide/deployDev/deploy.html', - headers: [ - { level: 3, title: '部署架构图', slug: '部署架构图' }, - { level: 3, title: '步骤3.4详细流程', slug: '步骤3-4详细流程' }, - ], - lastUpdated: '4/20/2021, 10:19:10 PM', - }, - { - frontmatter: {}, - regularPath: '/zh/guide/componentDev/dynamicLoading.html', - relativePath: 'zh/guide/componentDev/dynamicLoading.md', - key: 'v-358de850', - path: '/zh/guide/componentDev/dynamicLoading.html', - headers: [{ level: 2, title: 'umi3提供的dynamic', slug: 'umi3提供的dynamic' }], - lastUpdated: '1/17/2021, 9:57:34 PM', - }, { frontmatter: {}, regularPath: '/zh/guide/componentDev/componentStructure.html', @@ -11711,6 +11702,15 @@ { level: 2, title: 'schema设计', slug: 'schema设计' }, { level: 3, title: '组件编辑区属性类型', slug: '组件编辑区属性类型' }, ], + lastUpdated: '4/27/2021, 1:17:02 AM', + }, + { + frontmatter: {}, + regularPath: '/zh/guide/componentDev/dynamicLoading.html', + relativePath: 'zh/guide/componentDev/dynamicLoading.md', + key: 'v-358de850', + path: '/zh/guide/componentDev/dynamicLoading.html', + headers: [{ level: 2, title: 'umi3提供的dynamic', slug: 'umi3提供的dynamic' }], lastUpdated: '1/17/2021, 9:57:34 PM', }, { @@ -11747,6 +11747,18 @@ ], lastUpdated: '2/15/2021, 12:27:31 AM', }, + { + frontmatter: {}, + regularPath: '/zh/guide/deployDev/deploy.html', + relativePath: 'zh/guide/deployDev/deploy.md', + key: 'v-1c499b2c', + path: '/zh/guide/deployDev/deploy.html', + headers: [ + { level: 3, title: '部署架构图', slug: '部署架构图' }, + { level: 3, title: '步骤3.4详细流程', slug: '步骤3-4详细流程' }, + ], + lastUpdated: '4/20/2021, 10:19:10 PM', + }, { frontmatter: {}, regularPath: '/zh/guide/deployDev/https.html', @@ -11761,11 +11773,14 @@ }, { frontmatter: {}, - regularPath: '/zh/guide/functionRealization/machinePreview.html', - relativePath: 'zh/guide/functionRealization/machinePreview.md', - key: 'v-1995786c', - path: '/zh/guide/functionRealization/machinePreview.html', - lastUpdated: '1/17/2021, 9:57:34 PM', + regularPath: '/zh/guide/deployDev/deploy_v6.html', + relativePath: 'zh/guide/deployDev/deploy_v6.md', + key: 'v-94956b5c', + path: '/zh/guide/deployDev/deploy_v6.html', + headers: [ + { level: 3, title: '部署架构图', slug: '部署架构图' }, + { level: 3, title: '步骤3.4详细流程', slug: '步骤3-4详细流程' }, + ], }, { frontmatter: {}, @@ -11775,6 +11790,22 @@ path: '/zh/guide/directoryStructure.html', lastUpdated: '1/17/2021, 7:12:02 PM', }, + { + frontmatter: {}, + regularPath: '/zh/guide/functionRealization/pagePreview.html', + relativePath: 'zh/guide/functionRealization/pagePreview.md', + key: 'v-f3d01ce0', + path: '/zh/guide/functionRealization/pagePreview.html', + lastUpdated: '1/17/2021, 9:57:34 PM', + }, + { + frontmatter: {}, + regularPath: '/zh/guide/functionRealization/machinePreview.html', + relativePath: 'zh/guide/functionRealization/machinePreview.md', + key: 'v-1995786c', + path: '/zh/guide/functionRealization/machinePreview.html', + lastUpdated: '1/17/2021, 9:57:34 PM', + }, { frontmatter: {}, regularPath: '/zh/guide/deployDev/oss.html', @@ -11784,6 +11815,14 @@ headers: [{ level: 3, title: '前端上传文件到oss', slug: '前端上传文件到oss' }], lastUpdated: '1/31/2021, 1:25:02 AM', }, + { + frontmatter: {}, + regularPath: '/zh/guide/functionRealization/saveJson.html', + relativePath: 'zh/guide/functionRealization/saveJson.md', + key: 'v-0be2f96c', + path: '/zh/guide/functionRealization/saveJson.html', + lastUpdated: '1/17/2021, 9:57:34 PM', + }, { frontmatter: {}, regularPath: '/zh/guide/functionRealization/screenshot.html', @@ -11800,22 +11839,6 @@ path: '/zh/guide/functionRealization/revocation.html', lastUpdated: '1/17/2021, 9:57:34 PM', }, - { - frontmatter: {}, - regularPath: '/zh/guide/functionRealization/saveJson.html', - relativePath: 'zh/guide/functionRealization/saveJson.md', - key: 'v-0be2f96c', - path: '/zh/guide/functionRealization/saveJson.html', - lastUpdated: '1/17/2021, 9:57:34 PM', - }, - { - frontmatter: {}, - regularPath: '/zh/guide/functionRealization/pagePreview.html', - relativePath: 'zh/guide/functionRealization/pagePreview.md', - key: 'v-f3d01ce0', - path: '/zh/guide/functionRealization/pagePreview.html', - lastUpdated: '1/17/2021, 9:57:34 PM', - }, { frontmatter: {}, regularPath: '/zh/guide/functionRealization/templateLibrary.html', @@ -11845,6 +11868,7 @@ key: 'v-3f5a1068', path: '/zh/guide/startedQuickly.html', headers: [ + { level: 2, title: '从零搭建一个H5表单页面', slug: '从零搭建一个h5表单页面' }, { level: 2, title: '环境准备', slug: '环境准备' }, { level: 2, title: '源码工程', slug: '源码工程' }, { level: 2, title: '本地运行', slug: '本地运行' }, @@ -11967,6 +11991,12 @@ collapsable: !1, sidebarDepth: 1, }, + { + title: 'v6.dooring私有化部署(临时)', + path: '/zh/guide/deployDev/deploy_v6', + collapsable: !1, + sidebarDepth: 1, + }, { title: '支持https', path: '/zh/guide/deployDev/https', @@ -11992,16 +12022,16 @@ }; n(300), n(301); Ro.component('Home', function() { - return Promise.all([n.e(0), n.e(3)]).then(n.bind(null, 379)); + return Promise.all([n.e(0), n.e(3)]).then(n.bind(null, 380)); }), Ro.component('Badge', function() { - return Promise.all([n.e(0), n.e(4)]).then(n.bind(null, 401)); + return Promise.all([n.e(0), n.e(4)]).then(n.bind(null, 403)); }), Ro.component('CodeBlock', function() { - return Promise.all([n.e(0), n.e(5)]).then(n.bind(null, 380)); + return Promise.all([n.e(0), n.e(5)]).then(n.bind(null, 381)); }), Ro.component('CodeGroup', function() { - return Promise.all([n.e(0), n.e(6)]).then(n.bind(null, 381)); + return Promise.all([n.e(0), n.e(6)]).then(n.bind(null, 382)); }); n(302); var hu = [ @@ -12498,7 +12528,7 @@ var e = this.$site.base; return '/' === t.charAt(0) ? e + t.slice(1) : t; }), - (window.__VUEPRESS__ = { version: '1.8.0', hash: '615c49f' }), + (window.__VUEPRESS__ = { version: '1.8.0', hash: 'f428a54' }), (function(t) { return $u.apply(this, arguments); })(!1).then(function(t) { diff --git a/doc-dist/index.html b/doc-dist/index.html index 213c863..6f9318e 100644 --- a/doc-dist/index.html +++ b/doc-dist/index.html @@ -8,7 +8,7 @@ - + @@ -28,11 +28,11 @@ 体验 (opens new window)

hero一款所见即所得的H5编辑器

1

简洁方便

任何人只需傻瓜式拖拽或进行简单编辑即可生成精美的H5页面

2

插拔式体验

产品以GPL协议开源, 授权后可植入任何系统,并支持二次开发

3

持续迭代,无限可能

目前正在持续迭代中,后续可根据需求开发功能更强大的可视化系统

hero一款所见即所得的H5编辑器

1

简洁方便

任何人只需傻瓜式拖拽或进行简单编辑即可生成精美的H5页面

2

插拔式体验

产品以GPL协议开源, 授权后可植入任何系统,并支持二次开发

3

持续迭代,无限可能

目前正在持续迭代中,后续可根据需求开发功能更强大的可视化系统

- + diff --git a/doc-dist/zh/guide/building.html b/doc-dist/zh/guide/building.html index 808a529..ef5e88f 100644 --- a/doc-dist/zh/guide/building.html +++ b/doc-dist/zh/guide/building.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

正在建设中...

Last Updated: 1/17/2021, 11:22:04 PM
- + (opens new window)

正在建设中...

Last Updated: 1/17/2021, 11:22:04 PM
+ diff --git a/doc-dist/zh/guide/componentDev/DSLAnalysis.html b/doc-dist/zh/guide/componentDev/DSLAnalysis.html index 4fd2e87..f391b9b 100644 --- a/doc-dist/zh/guide/componentDev/DSLAnalysis.html +++ b/doc-dist/zh/guide/componentDev/DSLAnalysis.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# DSL设计

DSL层主要约定了Dooring组件的数据协议,包括组件的可编辑属性、编辑类型、初始值等,之所以定义一致的协议层,主要是方便后期的组件扩展,配置后移,有助于不同后端语言开发和数据存储,接下来我们看看header组件的schema。

1.editData 可编辑的属性类型DSL

2.config 可编辑组件的默认属性

const Header: IHeaderSchema = {
+   (opens new window)

# DSL设计

DSL层主要约定了Dooring组件的数据协议,包括组件的可编辑属性、编辑类型、初始值等,之所以定义一致的协议层,主要是方便后期的组件扩展,配置后移,有助于不同后端语言开发和数据存储,接下来我们看看header组件的schema。

1.editData 可编辑的属性类型DSL

2.config 可编辑组件的默认属性

const Header: IHeaderSchema = {
   editData: [
     {
       key: 'bgColor',
@@ -88,6 +88,6 @@
       
       →
     

- + diff --git a/doc-dist/zh/guide/componentDev/componentStructure.html b/doc-dist/zh/guide/componentDev/componentStructure.html index 092a377..4a45e61 100644 --- a/doc-dist/zh/guide/componentDev/componentStructure.html +++ b/doc-dist/zh/guide/componentDev/componentStructure.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 组件结构

dooring的组件设计包含以下3个部分组件:

1、component 组件主体

2、schema 组件的DSL,结构协议层

3、template 定义了组件的类型、外观、从属关系,后期考虑纳入schema

接下来我会介绍一个基本的组件主体设计,以为template设计,在下一章会具体介绍schema部分。

# 组件设计

我们这里拿基本的header组件来举例,如下是header组件的代码:

interface HeaderPropTypes extends IHeaderConfig {
+   (opens new window)

# 组件结构

dooring的组件设计包含以下3个部分组件:

1、component 组件主体

2、schema 组件的DSL,结构协议层

3、template 定义了组件的类型、外观、从属关系,后期考虑纳入schema

接下来我会介绍一个基本的组件主体设计,以为template设计,在下一章会具体介绍schema部分。

# 组件设计

我们这里拿基本的header组件来举例,如下是header组件的代码:

interface HeaderPropTypes extends IHeaderConfig {
   isTpl: boolean;
 }
 
@@ -139,7 +139,7 @@
 };
 
 export default Header;
-

editData表示组件的可编辑属性, 我们可以自定义哪些组件可编辑. config为组件接收的属性, 和editData数组项中的key一一对应.

# 组件编辑区属性类型

Dooring组件编辑面板有如下对应编辑类型:

  • Upload 上传组件
  • Text 文本框
  • RichText 富文本
  • TextArea 多行文本
  • Number 数字输入框
  • DataList 列表编辑器
  • FileList 文件列表编辑器
  • InteractionData 交互设置
  • Color 颜色面板
  • MutiText 多文本
  • Select 选择下拉框
  • Radio 单选框
  • Switch 开关切换
  • CardPicker 卡片面板
  • Table 表格编辑器
  • Pos 坐标编辑器
  • FormItems 表单设计器
Last Updated: 1/17/2021, 9:57:34 PM

editData表示组件的可编辑属性, 我们可以自定义哪些组件可编辑. config为组件接收的属性, 和editData数组项中的key一一对应.

# 组件编辑区属性类型

Dooring组件编辑面板有如下对应编辑类型:

  • Upload 上传组件
  • Text 文本框
  • RichText 富文本
  • TextArea 多行文本
  • Number 数字输入框
  • DataList 列表编辑器
  • FileList 文件列表编辑器
  • InteractionData 交互设置
  • Color 颜色面板
  • MutiText 多文本
  • Select 选择下拉框
  • Radio 单选框
  • Switch 开关切换
  • CardPicker 卡片面板
  • Table 表格编辑器
  • Pos 坐标编辑器
  • FormItems 表单设计器
Last Updated: 4/27/2021, 1:17:02 AM
- + diff --git a/doc-dist/zh/guide/componentDev/dynamicLoading.html b/doc-dist/zh/guide/componentDev/dynamicLoading.html index dfaa7fb..f70a6ab 100644 --- a/doc-dist/zh/guide/componentDev/dynamicLoading.html +++ b/doc-dist/zh/guide/componentDev/dynamicLoading.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 组件动态加载

目前H5-Dooring的组件都是通过动态加载的方式引入,好处是我们在页面中只会加载我们需要的组件,不需要的组件不会被加载,这样可以提高页面加载的速度,这样做也会出现一些问题,比如一个长页面,配置了很多组件,那么一个页面加载过程可以会触发多次请求,目前还没有遇到性能问题,但后续会逐渐优化这个问题。

# umi3提供的dynamic

目前组件的动态加载我们采用的umi的dynamic方案,基于它我们上层封装了一个组件动态加载器,原理如下:

foo

具体代码可以参考Dooring的Github地址:https://github.com/MrXujiang/h5-Dooring (opens new window)

Last Updated: 1/17/2021, 9:57:34 PM

# 组件动态加载

目前H5-Dooring的组件都是通过动态加载的方式引入,好处是我们在页面中只会加载我们需要的组件,不需要的组件不会被加载,这样可以提高页面加载的速度,这样做也会出现一些问题,比如一个长页面,配置了很多组件,那么一个页面加载过程可以会触发多次请求,目前还没有遇到性能问题,但后续会逐渐优化这个问题。

# umi3提供的dynamic

目前组件的动态加载我们采用的umi的dynamic方案,基于它我们上层封装了一个组件动态加载器,原理如下:

foo

具体代码可以参考Dooring的Github地址:https://github.com/MrXujiang/h5-Dooring (opens new window)

Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/deployDev/api.html b/doc-dist/zh/guide/deployDev/api.html index 32f734f..2bc565b 100644 --- a/doc-dist/zh/guide/deployDev/api.html +++ b/doc-dist/zh/guide/deployDev/api.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

H5-Dooring后端部分主要使用 Nodejs 开发, 为了满足更多定制化需求和服务的可移植性, 特意编写了API接口文档, + (opens new window)

H5-Dooring后端部分主要使用 Nodejs 开发, 为了满足更多定制化需求和服务的可移植性, 特意编写了API接口文档, 方便大家使用不同的后端语言实现服务接入.

  • 注意: 接口统一前缀为/api/v0

# 用户相关

# 登录

用户登录接口

  • POST /vip/check
参数名 是否必选 类型 说明
n true string 用户名
co true string 密码

返回示例

{
     "result": { 
         "n": "test", 
@@ -308,6 +308,6 @@
        

- + diff --git a/doc-dist/zh/guide/deployDev/deploy.html b/doc-dist/zh/guide/deployDev/deploy.html index 4ab18b8..b7c9d90 100644 --- a/doc-dist/zh/guide/deployDev/deploy.html +++ b/doc-dist/zh/guide/deployDev/deploy.html @@ -8,7 +8,7 @@ - + @@ -28,16 +28,16 @@ 体验 (opens new window)

私有化部署需要获取4个核心项目包, 包括

  • H5编辑器(h5_plus)
  • H5基座(h5)
  • Dooring管理后台(Dooring-Admin)
  • 服务端项目(Server)

获取以上四个核心源码工程需要满足商业授权协议, 具体可参考商业授权方案 (opens new window)

# 部署架构图

H5-dooring部署

部署流程如下:

  1. 下载4个源码工程, 安装依赖(npm install 或 yarn)
  2. 打包3个前端工程至server的static目录下
  3. server下本地运行 yarn startnpm start 启动服务端进行本地测试
  4. 打包服务端代码, yarn build 生成 dist 目录, 建议使用 pm2nodejs服务的负载均衡, 运行 pm2 start dist/index.js启动生产环境代码

也可以将以上步骤集成到gitlab等CI, CD服务中, 进行自动化打包发布, 或者采用docker进行容器化部署.

# 步骤3.4详细流程

# 1. 安装项目环境

服务器需提前安装node和pm2, 将本项目上传至服务器指定的目录(如/www/activity), 进入项目目录, 执行:

npm install
+   (opens new window)

私有化部署需要获取4个核心项目包, 包括

  • H5编辑器(h5_plus)
  • H5基座(h5)
  • Dooring管理后台(Dooring-Admin)
  • 服务端项目(Server)

获取以上四个核心源码工程需要满足商业授权协议, 具体可参考商业授权方案 (opens new window)

# 部署架构图

H5-dooring部署

部署流程如下:

  1. 下载4个源码工程, 安装依赖(npm install 或 yarn)
  2. 打包3个前端工程至server的static目录下
  3. server下本地运行 yarn startnpm start 启动服务端进行本地测试
  4. 打包服务端代码, yarn build 生成 dist 目录, 建议使用 pm2nodejs服务的负载均衡, 运行 pm2 start dist/index.js启动生产环境代码

也可以将以上步骤集成到gitlab等CI, CD服务中, 进行自动化打包发布, 或者采用docker进行容器化部署.

# 步骤3.4详细流程

# 1. 安装项目环境

服务器需提前安装node和pm2, 将本项目上传至服务器指定的目录(如/www/activity), 进入项目目录, 执行:

npm install
 

# 2. 修改项目域名

进入./src/config/index.js, 修改staticPath变量为当前服务器域名/ip, 如http://xxx.comhttp://xxx.com:8080(如非80端口)

# 3. 编译项目

执行npm run build编译项目, 生成dist目录

# 4. 运行项目

在项目根目录执行 pm2 start dist/index.js启动项目

Last Updated: 4/20/2021, 10:19:10 PM
- + diff --git a/doc-dist/zh/guide/deployDev/deploy_v6.html b/doc-dist/zh/guide/deployDev/deploy_v6.html new file mode 100644 index 0000000..e5e64bb --- /dev/null +++ b/doc-dist/zh/guide/deployDev/deploy_v6.html @@ -0,0 +1,43 @@ + + + + + + h5-dooring + + + + + + + + +

私有化部署需要获取3个核心项目包, 包括

  • 可视化大屏编辑器(v6.dooring/)
  • v6管理后台(v6.dooring/manage)
  • 服务端项目(v6.dooring/server)

获取以上三个核心源码工程需要满足商业授权协议, 具体可参考商业授权方案 (opens new window)

# 部署架构图

H5-dooring部署

部署流程如下:

  1. 下载3个源码工程, 安装依赖(npm install 或 yarn)
  2. 打包2个前端工程至server的static目录下
  3. server下本地运行 yarn startnpm start 启动服务端进行本地测试
  4. 打包服务端代码, yarn build 生成 dist 目录, 建议使用 pm2nodejs服务的负载均衡, 运行 pm2 start dist/index.js启动生产环境代码

也可以将以上步骤集成到gitlab等CI, CD服务中, 进行自动化打包发布, 或者采用docker进行容器化部署.

# 步骤3.4详细流程

# 1. 安装项目环境

服务器需提前安装node和pm2, 将本项目上传至服务器指定的目录(如/www/activity), 进入项目目录, 执行:

npm install
+

# 2. 修改项目域名

进入./src/config/index.js, 修改staticPath变量为当前服务器域名/ip, 如http://xxx.comhttp://xxx.com:8080(如非80端口)

# 3. 编译项目

执行npm run build编译项目, 生成dist目录

# 4. 运行项目

在项目根目录执行 pm2 start dist/index.js启动项目

+ + + diff --git a/doc-dist/zh/guide/deployDev/https.html b/doc-dist/zh/guide/deployDev/https.html index cbe98ab..669be49 100644 --- a/doc-dist/zh/guide/deployDev/https.html +++ b/doc-dist/zh/guide/deployDev/https.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

目前H5-Dooring全面支持https部署, 具体方式方案如下.

# 前端工程

我们需要在前端工程中的src/pages/document.ejs中的head中添加如下代码:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
+   (opens new window)

目前H5-Dooring全面支持https部署, 具体方式方案如下.

# 前端工程

我们需要在前端工程中的src/pages/document.ejs中的head中添加如下代码:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
 

目的是强制将页面中HTTP请求转换为HTTPS.

# 服务器工程

# 1. 申请SSL证书

# 2. 生成 server.csr+server.key

# 3. 通过证书链生成.pem文件

#server中的src/index.js按如下方式修改

// 忽略部分无影响代码
 import https from 'https';
 
@@ -59,13 +59,13 @@
 start()
 
Last Updated: 1/31/2021, 1:25:02 AM
- + diff --git a/doc-dist/zh/guide/deployDev/oss.html b/doc-dist/zh/guide/deployDev/oss.html index df80352..550f395 100644 --- a/doc-dist/zh/guide/deployDev/oss.html +++ b/doc-dist/zh/guide/deployDev/oss.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

H5-Dooring全面支持第三方对象存储服务, 我们以七牛云对象存储为例.

# 前端上传文件到oss

首先我们需要在第三方对象储存服务中配置对应的服务和域名. 其次安装对应的sdk, 如七牛云sdk:

import * as qiniu from 'qiniu-js';
+   (opens new window)

H5-Dooring全面支持第三方对象存储服务, 我们以七牛云对象存储为例.

# 前端上传文件到oss

首先我们需要在第三方对象储存服务中配置对应的服务和域名. 其次安装对应的sdk, 如七牛云sdk:

import * as qiniu from 'qiniu-js';
 

其次我们修改h5_plus工程的Upload组件, 详细地址为src/core/FormComponents/Upload.

修改内容如下:

const fileName = file.name
 const suffix = '自定义文件后缀'
 const putExtra = {
@@ -58,6 +58,6 @@ observe.subs
       
       →
     

- + diff --git a/doc-dist/zh/guide/directoryStructure.html b/doc-dist/zh/guide/directoryStructure.html index cbb8435..397e927 100644 --- a/doc-dist/zh/guide/directoryStructure.html +++ b/doc-dist/zh/guide/directoryStructure.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)
src
+   (opens new window)
src
 ├─ assets
 │  ├─ header.png
 │  ├─ form.png
@@ -322,6 +322,6 @@
       
       →
     

- + diff --git a/doc-dist/zh/guide/functionRealization/machinePreview.html b/doc-dist/zh/guide/functionRealization/machinePreview.html index 1585cc5..75d0df9 100644 --- a/doc-dist/zh/guide/functionRealization/machinePreview.html +++ b/doc-dist/zh/guide/functionRealization/machinePreview.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 真机预览

真机预览和网页预览的流程类似,工作流程如下:

foo

由于不同机型预览的效果有些许不同,最终效果以实际看到的为主。

Last Updated: 1/17/2021, 9:57:34 PM

# 真机预览

真机预览和网页预览的流程类似,工作流程如下:

foo

由于不同机型预览的效果有些许不同,最终效果以实际看到的为主。

Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/functionRealization/pagePreview.html b/doc-dist/zh/guide/functionRealization/pagePreview.html index bd7dd50..0b0c32a 100644 --- a/doc-dist/zh/guide/functionRealization/pagePreview.html +++ b/doc-dist/zh/guide/functionRealization/pagePreview.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 网页预览

我们看看网页预览的工作流程:

foo

前端预览界面:

foo
Last Updated: 1/17/2021, 9:57:34 PM

# 网页预览

我们看看网页预览的工作流程:

foo

前端预览界面:

foo
Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/functionRealization/revocation.html b/doc-dist/zh/guide/functionRealization/revocation.html index 613b43e..98fd5c4 100644 --- a/doc-dist/zh/guide/functionRealization/revocation.html +++ b/doc-dist/zh/guide/functionRealization/revocation.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 撤销/重做

撤销重做我们主要使用了redux-undo这个库,配合Dva使用,具体使用方法参考如下操作:

import { createLogger } from 'redux-logger';
+   (opens new window)

# 撤销/重做

撤销重做我们主要使用了redux-undo这个库,配合Dva使用,具体使用方法参考如下操作:

import { createLogger } from 'redux-logger';
 import { message } from 'antd';
 import undoable, { StateWithHistory } from 'redux-undo';
 import { Reducer, AnyAction } from 'redux';
@@ -58,6 +58,6 @@
       
       →
     

- + diff --git a/doc-dist/zh/guide/functionRealization/saveJson.html b/doc-dist/zh/guide/functionRealization/saveJson.html index 9a37e8b..6376c4e 100644 --- a/doc-dist/zh/guide/functionRealization/saveJson.html +++ b/doc-dist/zh/guide/functionRealization/saveJson.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 保存json

我们配置好H5页面之后,如果希望其他人观看,我们可以保存页面并发送链接。但是如果有多人协作的需求,比如一个H5页面可能由多个人完成,这个时候该怎么实现呢?基于已有的方案,我们可以采用socket实现多人协同编辑,但是成本比较大,所有这里我们提供了保存json的功能。

我们可以将配置好的页面导出为json,发送给另一个人,这样另一个人通过导入该json文件可以实时看到当前的页面,这里还是依靠我们的页面渲染引擎viewEngine。实现思路也很简单,可以在github[https://github.com/MrXujiang/h5-Dooring (opens new window)]上参考体验。

Last Updated: 1/17/2021, 9:57:34 PM

# 保存json

我们配置好H5页面之后,如果希望其他人观看,我们可以保存页面并发送链接。但是如果有多人协作的需求,比如一个H5页面可能由多个人完成,这个时候该怎么实现呢?基于已有的方案,我们可以采用socket实现多人协同编辑,但是成本比较大,所有这里我们提供了保存json的功能。

我们可以将配置好的页面导出为json,发送给另一个人,这样另一个人通过导入该json文件可以实时看到当前的页面,这里还是依靠我们的页面渲染引擎viewEngine。实现思路也很简单,可以在github[https://github.com/MrXujiang/h5-Dooring (opens new window)]上参考体验。

Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/functionRealization/screenshot.html b/doc-dist/zh/guide/functionRealization/screenshot.html index 577cd75..f3878a3 100644 --- a/doc-dist/zh/guide/functionRealization/screenshot.html +++ b/doc-dist/zh/guide/functionRealization/screenshot.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 截图功能

截图功能这里我们主要使用了dom-to-image这个库,来将html转化为图片,并进行分享。

foo
Last Updated: 1/17/2021, 9:57:34 PM

# 截图功能

截图功能这里我们主要使用了dom-to-image这个库,来将html转化为图片,并进行分享。

foo
Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/functionRealization/templateLibrary.html b/doc-dist/zh/guide/functionRealization/templateLibrary.html index 2010996..c8c61e6 100644 --- a/doc-dist/zh/guide/functionRealization/templateLibrary.html +++ b/doc-dist/zh/guide/functionRealization/templateLibrary.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 模板库实现思路

我们目前开放了模板库功能,一方面我们会定期配置行业模板,另一个方面Dooring还支持用户自己配置模板,可以一键保存到云端供用户使用。我们也可以将模板变成自己的页面共享给其他人。实现方式本质上是保存用户的配置信息,上传到服务器中做存储,在后台提供了管理模板的模块,可以修改,删除模板。如下图所示:

# 模板前台展示:

foo

# 模板后台展示:

foo
Last Updated: 1/17/2021, 9:57:34 PM

# 模板库实现思路

我们目前开放了模板库功能,一方面我们会定期配置行业模板,另一个方面Dooring还支持用户自己配置模板,可以一键保存到云端供用户使用。我们也可以将模板变成自己的页面共享给其他人。实现方式本质上是保存用户的配置信息,上传到服务器中做存储,在后台提供了管理模板的模块,可以修改,删除模板。如下图所示:

# 模板前台展示:

foo

# 模板后台展示:

foo
Last Updated: 1/17/2021, 9:57:34 PM
- + diff --git a/doc-dist/zh/guide/index.html b/doc-dist/zh/guide/index.html index 4cf11b2..49be58f 100644 --- a/doc-dist/zh/guide/index.html +++ b/doc-dist/zh/guide/index.html @@ -8,7 +8,7 @@ - + @@ -28,11 +28,11 @@ 体验 (opens new window)
foo

H5-Dooring 是一款功能强大,高可扩展的 H5 可视化页面配置解决方案,致力于提供一套简单方便、专业可靠、无限可能的 H5 落地页最佳实践。

# 功能特点

🎉 可扩展, Dooring 实现了较为完整的业务闭环,并使其模块化,编辑器内部功能接口也全部可以对接不同服务端语言,实现了标准化接口。此外还支持自定义组件,二次开发,设计模板等能力,以满足功能和跨领域的分层需求。

📦 开箱即用, Dooring 内置了表单渲染器、页面渲染器、动态加载内核等,仅需一套源码即可上手开发。并且还提供针对 React 的定制插件,内涵丰富的功能,可满足日常 80%的页面制作需求。

🚀 大量自研, 包含整个编辑器架构、组件设计、文档、请求库封装,后台管理系统等,满足日常项目的周边需求。

🚄 与时俱进, 在满足需求的同时,我们也不会停止对新技术的探索。比如更多营销组件、业务功能,后台管理可视化,PC 页面编辑器,数据大屏定制等等。

# 为什么选择 Dooring

目前github已超过 3000+star,上线 2 个月累计 500+用户使用,解决完善了 100+问题,后续会持续迭代,更新,自研优秀,先进的 lowcode/nocode 解决方案。

Last Updated: 3/22/2021, 10:16:35 AM
foo

H5-Dooring 是一款功能强大,高可扩展的 H5 可视化页面配置解决方案,致力于提供一套简单方便、专业可靠、无限可能的 H5 落地页最佳实践。

# 功能特点

🎉 可扩展, Dooring 实现了较为完整的业务闭环,并使其模块化,编辑器内部功能接口也全部可以对接不同服务端语言,实现了标准化接口。此外还支持自定义组件,二次开发,设计模板等能力,以满足功能和跨领域的分层需求。

📦 开箱即用, Dooring 内置了表单渲染器、页面渲染器、动态加载内核等,仅需一套源码即可上手开发。并且还提供针对 React 的定制插件,内涵丰富的功能,可满足日常 80%的页面制作需求。

🚀 大量自研, 包含整个编辑器架构、组件设计、文档、请求库封装,后台管理系统等,满足日常项目的周边需求。

🚄 与时俱进, 在满足需求的同时,我们也不会停止对新技术的探索。比如更多营销组件、业务功能,后台管理可视化,PC 页面编辑器,数据大屏定制等等。

# 为什么选择 Dooring

目前github已超过 3000+star,上线 2 个月累计 500+用户使用,解决完善了 100+问题,后续会持续迭代,更新,自研优秀,先进的 lowcode/nocode 解决方案。

Last Updated: 3/22/2021, 10:16:35 AM
- + diff --git a/doc-dist/zh/guide/introduced.html b/doc-dist/zh/guide/introduced.html index f152d82..251b3f9 100644 --- a/doc-dist/zh/guide/introduced.html +++ b/doc-dist/zh/guide/introduced.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)
foo

注:灰色部分还未实现,正在更新中...

Last Updated: 1/17/2021, 7:12:02 PM
foo

注:灰色部分还未实现,正在更新中...

Last Updated: 1/17/2021, 7:12:02 PM
- + diff --git a/doc-dist/zh/guide/startedQuickly.html b/doc-dist/zh/guide/startedQuickly.html index 40e88e2..de00f83 100644 --- a/doc-dist/zh/guide/startedQuickly.html +++ b/doc-dist/zh/guide/startedQuickly.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ 体验 (opens new window)

# 快速上手

# 环境准备

首先得有 node,并确保 node 版本是 10.13 或以上,(mac/win 下推荐使用 n 来管理 node 版本)

$ node-v
+   (opens new window)

# 快速上手

# 从零搭建一个H5表单页面

# 环境准备

首先得有 node,并确保 node 版本是 10.13 或以上,(mac/win 下推荐使用 n 来管理 node 版本)

$ node-v
 v10.13.0
 

注:推荐使用 yarn 管理 npm 依赖

# 源码工程

h5_plus(编辑器项目) admin(管理后台) Server(服务端项目)

本地拿到源码工程之后先安装对应依赖,在对应工程目录里执行 yarn 命令,等待依赖安装完成。

# 本地运行

1.首先本地启动 server,在 src 目录的 index.js 中修改跨域白名单,改为本地的 ip+端口,如http://192.167.0.3:8000

2.其次本地启动 h5_plus,启动完毕在浏览器打开对应的启动地址即可查看,如下:

foo
Last Updated: 1/17/2021, 7:12:02 PM
- + diff --git a/doc/.vuepress/config.js b/doc/.vuepress/config.js index e9fd765..38984b4 100755 --- a/doc/.vuepress/config.js +++ b/doc/.vuepress/config.js @@ -124,6 +124,12 @@ module.exports = { collapsable: false, sidebarDepth: 1, }, + { + title: 'v6.dooring私有化部署(临时)', + path: '/zh/guide/deployDev/deploy_v6', + collapsable: false, + sidebarDepth: 1, + }, { title: '支持https', path: '/zh/guide/deployDev/https', diff --git a/doc/img/common/v6.deploy.png b/doc/img/common/v6.deploy.png new file mode 100644 index 0000000000000000000000000000000000000000..eb44518945ccb9a945198c071036ec651e3b8e5e GIT binary patch literal 58757 zcmeFZ2T)Yo+9r$$2TTNsN)!YnCnZP80+J+0$%r(E3{7lMfhLROC^;htG`Uep5+#Qw zC=HT9=q9Isw;s>&+{>N$zo|P@U(H;qsNU5(^jd4b@p+$jg{nVPxOVyGWh^YLYf6f; znpjx43|LqfZ{q(3eDiWZXc`OaDw~~*jJlGH486LuqqW^rD=aL<&^TQ@J*|)A>4q<( zqd#H4R=m^{%AlBV(;(*o+0$pYqt(q7@fqA@AN|f*p!bHMnBj66Zgks=CJtzmB&oE< zXq)!af<`6mrIo#zqnU%|x;?l}Un(lY#pY|u1u5}lMsl0iH?b_koSArUUFZo_`lvFf z6>xzh^K#WYd;(pz-Ka54Tx z-^eD|7vGHSHGM7-+cL!RLIf{4FO$VjAI#&HULkiIk`_W1to)+a=g(bnxR zu1z-HA$r3Q{PcDurLfI@KW{YirAUoQGxCYS*Nr@CkZ2m=kPj}nPOrNv#vgGhyi+Bd zyV~q(zE7k^E6JmnM4{73(MGu4(bZaafj4MZd#+?j+PfqvgN$J;MS6;@H;m>cBIOE8 z3ZE%;h)Xu|)zt6nSNryDnee6vo?Rrz$5EjV;v`eSyCF3`IrQlw{FV5-fQz^3X}&=| zWLn$GW@RbhWK?8g9bY1*Qw;9Fy#qd=CtQJFwU1N7i_Tl>)e7&#F($GJ;)%wETR}Cl zzSv&+%sPzk5AAzy^wunP?d^j4sW7u7}aNqS_)c%48J$RUp8txh{_#z zpK;x%`f}+D^Xs(VJ(Az3Z(np_4#8TFw)ke|UN~zLY$#pM<%zX%?L=l)=%OGN!M+~l zN4mY|6~>vn-er|v!r>#%pC~3`!e6?5^s`K%yHPMvSa;PsMt9}N;Eq==fo|BnDU=0m z$>vH&(B>OD&I+b+={0Ki>kR?-EUpEF(sbOc=pNS)rcI|(BXhC1V-Oyw#*Ah>W~H^^ z$!mO~*>ST2)X^X0OP`RD!EVY?vOJe`{c$~g!ZM+Uy+kbMT;$D^22*&1L%VDY4H!qh&y;~@`(sH0#rt&g>_{%ol1@!nPy8k|g z^7bVq=|N&*1{rI{D>0fmS0_TADip=cMl*IQ&0`O~n3AJqobH_MWFeI)ED(6|%;0sl zhQ~17H5ue5R$GzeAo5JPC1+Q0gU}7R)q&V0CN%S8WV7rMPe7sh)gDrpmMLCx^5;wz zc8NGCVR2>)dQ3WD_ufhR(%5%^-$V%!=Ob07F7%D5i_tF53GW;E+-N4AjTl4bZ>{cI zG*X;B$RxgcX%|NgJB24E`eCB<9p+ag?$-%O`dX@olspw~U%w%1pG9Tlt<-vTj$@8* z&f1)23#TFic#(`TiifwoUkb89TW>AAgep-fdMkA(jVY$(5V94qF|$2nd&l;XjUn!S zoO7HwTgRiaLNTpn7W-((xr?sP=mdW-gt-RjE4Zh+v(osZLXz)msElebdEt@NUBP%^~Cb#+ZfUVA5 zNdrF4gqlx69b{pzRSo_ZhO|3GNT}9-rR=@a`?S|8+50ZHt;86EoxUBe-BuN}%H1|?a3#~i z)kP$%FPA$&(< zm{FTenfnah8{8RNSmhci9cjutGI4yCogM)4fAIV~McDJ%dC&S-qZ`f{I!jr5aZlsb1MzF`I*#u1U6mCl%U3BQEyh z_BC!0w}_pKRLK$Ls*$R>z1Ix0N*f&V)~yl6?geRKX)R^%H=yEAHlJ`;%|4wKc*!$p zkz;GQ(1{>;gy$bD7JM_fBbze&y#iU}6Uv<@Rc%Z21I6+gR3{??ZM@wTU0bJ=rM$=v z(n!0TC|GP7$ynk02 zU*hL#KCag^)Oc4N@$I2#aiXxIyl8uA>BNo2UBn4JPZt(G$1PWPtR4uhIvqP{BSji} z8--^OO$gsa304V&&!n%auW)l*v)XabiKn0FN%{fe&}M&g$DiyoCH*BK>Tl@_ACo_b z5QpHtz=_AH`OOZu4bR~!nDi-mDyAP`?Riv;KjtpWOcr{L(~>&K(oU$DI&shxOb`b(f|n? zvuj&;XcCPJS3IpKr@Pu(Lv27UnbRK9Va{rc^U}(tSdt==8J6Feff4gtKSxGu}^x;bC8eg5~b}8$q)^@&8;uD^G_A3K+D?>s<1bIZ7*R^(Y ze7?#$u?hPYt_`aeHW`t7(CjhwN5Ni<_3nL5*viQD%8$zxSKE7Nnl{7vjqKGG@H37t z@?TcNKZTdx*yPXV^RObYWU?NyDz?nGq$9Qq<&(?Lr&8nB|p*lKHx6BBdW)_c`i*$NS3nuqz}K0%SMHdbwBh zNGl8S^h)(KeY`8i=1P^nF}-IhRZdF)=^a)-({-*GuBd86qxd!|!{FfuRwvvSyNBXo zWxpF&STQ-}+Afr8Hy67n*u|5*ax00{GlsvY%d_l7R1b}s+@UjUcB8RMdun`i_-!YG zibJ4e>YG=#8L}4|0IgSjkrEFA!;@eKljLyDYQu<{c+g3eYVCU8ZuI(2oKD<=Xo%>x zyQ?g_m-c)R#wDcctFdnp3C)FZ<6bCe5u0~HV?ZpYEX5H)nFisZxqU+KbWVQ4-mHU0Pc9hLDU zlub~7y2zsc#=h4ks+U5Ho4Rhvuj0$g)!f5wt^~rfFWVhobjC&x*+IHD%fUttPpHP+ z*OE7@W5+I*XEeQQc3QTc@2xT1f^AHt`!t*oZ1$lV^gT>xyBo&*{ZB8x4|*AVldzla zhD6bE!a96q(ijmXLEz(aptKfyL^Bncpq8s9=|S!`P~Vl2Bv$OVfo`l5tvy-^Q{ome zg_`c}k)9PEEavG7loOmR?2RqVgf^v>GnM0=n(WG-^_IabW^2%Ld*a}Pld?14k9a49 z4U+Z#VtcGxLvK%SWGH2f`B$6_qVKJ(20_*!7kCxkYf$6zjDM=Si*-7Ki^X{f>rmU% zFEOVvg%w9*hJ_6On5Co<&e}>AV6gv^?t?xH);M9xh|dy&5bJbUyl7fPKhc1d+Nm*fX@LPA1VY7Rr+^y|KI0t- zvSvBS-sll*1d@lRR(eX-s;XFQz%f1+&V`#;xWLf`;9ueb)t|@m7w%wP{Qf;Q7FMtw z7S12nJOn;5f6>4{=AIv)*qPWrufS!f9E0V(K4~VoC@tZvV#+Uo9Day22$6Ry!0@$%Dt*OGUj^J z-qftp$*nw`vR%9wue{ZLeJAgDrEWp6%Gc~k-|AN9J|WX4Y}I>rKr=bV!g2b2X2dT^ey@H`8UnkUk$yndb{sR4?Vp7Q_Z^ms%iB~68oc)W@q6*aRx zXhMBkb^{p5gcoB13UFmjN|W~nwrWii5n|7g-ev`zs++#^}CS*nynq9AU{5AV*ITf zDL7tWO5k_m`tLYgMZ4JVn(+(&ZM=WHQN1j{P+h-3#&V88n!N$enKAz7zJJi3|6c3T zvUYszv%vP^qhYS*j<&{1TCk~O3Y-1@zw@xm@2&RbPMM!pAbN1J+Mf4MQ&e&vf{ByK zHb(Z>2iE}6ZqZrzFPYcBY>?T`Wpso51`I?Q;}j)$Z@T%Z77z^Z6(|05q->WtI5-~l zuu}bW|+95quszUy{;pZb-ihzK_$Sru7;G7VEQWCKATcXSc=Z$6rFui5D60=(z#YDBg&ky!8*Vj9Drq zFn?jc4%x7CMpGgJOhem4ah>Srtp8dE$QCevYPdy~+&QDsNdu-)B%0%X-ootz^N*b6 z9bhwFY_Q>pnPZ^gde7inV3JpZrrtzTTTPPr7^e%^2O1@VnN zPpzT#ZUHMvafY{0)}JH!Yn3iwGh&wMMk(|>=iLds7yb9Ie!cvU0YhRiixjTYcHRUm zfw#i(_`ImJr4tYl1^Ht0bCwpT5{NM3dCm(y%q)R{FlKA>o;Lw~DSAHTKUMHoDdFJ* z1`;z+lz83*IOvIzm{iW2HDwYY9G$k>D*vph0aD~dAwAdg&YN|(3LxQ@Rcy?EDfXWa zpud7IYkf)U*I9D}wE(8Eet#}(i0*8^<8_UD8=3CaI7vQJ-<^@=?QU+mdZTh|U1K-x z`i=TkaOp<9*!J01LAcVDD_4xi3>7iY9%2M^L%d@${igu}X8$G-+w^#jVrZjbGhJZX zb*Rd^H`z6aYKne(E7C(nfzH>p{`7FQp=PaW=%Mn_CftAWNpb1msG(yT$Pbm0A4Di2 zl;+fagKFOY>}WQ_ecEjdU1B57ZVX<|U4BgHtv6{N#yOboy^(}L9L%Q~=?*%tbuHjV z`JuDJ#MJz@V^LY=^`Pl`*H6-TxrWm#I(FThFck!-!9inhtAh@H$Fy<3&!bsunE1$R zy?QKF`FVt-QH(U-(S^_D&P85<_^ufXAmsg~B2@>Tq&nPFg)i8Uq zk=1MZ`#W5@H(Y@MY0CxKkq^8#n>?UcU*mL5^h-{6%Kg)_%8q9CnwM*lk%o`vE4#Ur zZ8Ch_4}q@|XpcYR<;Ol0DQr4*hcy^iZ186ssMIfIg-v#&dY)65B%Usqp5}JCEQ-zw zb3ZiQe@`)Jya^t2eSe81C*$mRv2EK{d6?!xcfQ0<;j)_lp_ZsWdNN#~)lXutuAeio zWIfIrBZ+1!xYo#;fFirZM(veHrewJ@Ui&*Wg_SS<)ghA?aNDO;DV&uo3X2@yy=lRw zgI>pn4QrLkhbNoIZohPFs6B%}8jx_{{f46w* zs-G1k4>d$B(AUFhU&MgGLn(P<@Y5aEzyQoR!ptmj7#M#)NL>`m?|j=q>rE=oAUNZR zoZB(+UXObyaWJ11x%7Jf9iiXvK~k2MK0Ow+T4?jsloa-^w*7G8tKsWD$4I(adZHUm z9E>!-w_LCbrg6XX)pVywmu!e?=G%+5($8LARia=E`Tou&xf>Tc5}MYm?A+bA#=6I6 z#+rAl=iIlm7|t+0t7Z5~&sRy6liSWYH4kR|c3jKse&H#m~>b94$k@iv40B#rfoLr%fnM!vNLz^TlFGS9BTA= z&)#O7a8M`%nwAjezm98cT~@zRbS*wUsFbsrK(**248(~A*FAl&=7?(k4{|lkN z5RFR@@A50Hhf4YB;3r%2%g47@1e>=amJe6U)tpw{g##!o6ldnhVM~Z%P!pXuS%_hI zzYsE4rEv0;{?q#a*3=r8s|h`bE;c#`cmW=7^&dG4?%d#L0V?DZxmyXLk9a$Ahg` z>wsiiJ{(Z4G^8@;sGv0E8_YDbE9?FqHsl$aWiQY8daM09n1Rc!>m$VTVZ5Z-V-~{e z^{Zv9={Yp4w1?MMQ9)15CzM#yNMo-J&Yn!q0!B*8C9!H})G(h#Vk=ZG2IFVe4cjty ztMWOEn70?w<1-G2^P$1Z99^Hl#E{|f@_mnkg#?eX-Q@3H|0z8XK3@pM{ncaJKBSkd zV#1C949Z#-w7hl>iazM~Z`LD+ba~!%6Vn#Oj)-Bv*CUW`AF9qCvosmKA;od|+CKLl zC>-$?Rr+O%bfXWQJl2?}=eiK5n}-qcu)qS|uM6xZTTt^88M?zy*V2oo^%KUv|0+H3 zKAH&s7MR?J0Hz)0`NaL{9N;~`P?Kn4+bO_(X`#i!1I%)Co44cI?w*EK+(NRB#?bD* z3C=ZkpUCyh+942KQx_X&j_(MvN#7~4X7nt|dQY=Ew51T*o!1?!dg{<$#L> zcb-7=tvWoT^V8f7wnPF0S<*et!7UeQKg|rfBODUAYCi|MC!zX8x#hT9m$YxZgL_Wy z`X6`rld4VhJ-4>DhE8~HyTeIWQ9>~>6ixgVRNUZ!FlbxFx~)tVlO~R~KRTO^ z^Clf%*ZiaO{_gMLm{~n828$q)zIvb94g>k>`Y_7qBk^5`%}O|M#c<@rnk40!ad>;J066$)6VRHw=!9Rry2m ze}4Hx@F2NB2+B3Be(lF&{{FL9F+d!a<-PO5Yh?-`jjVrt^H=%(8R1d_$|a1|`Q*H@ z#B=ey1;W7Rxw_du$J(+&p$CK`6|q;YaAoM64b%kxF{iuuK$c9}FaeEH{jgECFVR=U zm4j!Z)ZgDvaV;$+#lGa->R7p&{b-3@&W~ag?oD`ZliU7QG218f0e#KtiLN%>Tf%SJ zxQJ^(SG&l&+2^&vm+eAt-1t8u+gHwA z3QR_wobjLg{-JK5{NHL_64Np=%A?o0_5Xi^PA`Lhs)JcF&Y>~mo}q4sZSrbL>BYRB zZ`diI`sHuWUjea22~HVcRV$uEwf}=|DP2zl#FT1$hPtrym%5X@wyE7%?{#_}2)1h4 zTl2A$BKt>+#ZC^Ueu!}UqxKWeZ{66xq>|)U&_|I2j?;4nhwz(wn^#m}-1e_d&>=l+ z-FJ=k^z`yLC$3(=R=ou1%3bX^@ZS}(W%#nEUhgn1SoGoFY|(caH#-0fN<#l+{NL~S zK5LayAlv=Veg7cRfY10pzAito(lk0u^)$b{W_^F70lVR+bnTzMy z>Tn|<;+}66_&Moc-(i4M&fd8XV+8yewQ$9?zpL;Mb5BpSEPmd@S~>xztMKsYxuXD5 z5W@2w#^a1ZpZ+hK5@Z6X5Oq=A_+OM!uP__g*~boihF z6psbDL~6T|O4cy*$T(ZXG{XL98)0n(&{8^rOv!(N4BzNw&U%FVt&)!oo{iM{o7&d< z>SwP3SgQ{2|E0KM&(|A2a$z1p!Ld8{hj!$Uqb2%7dQ?Eg?#@a|Muy{4f9+pUen=eY zCq`$c9fy=Z)Z@)nY#_QaeNj4&^JmZlImILgz9lqT5Xs{&gv(I&GD@Y@K8d3>^mYPV ztO)?2ZYrH9m!gNY)KoE;;$f$PMCEYND@>&h!b)5_|5ABS0P!?7Quu2k>x4x^T`D#P zmdoov#D}RVKeoK{_~7< zNnFkQbM1P4!i%Y{!x{>?u*L<>h>;0PIhHh6P4K%bCebqhupy{lT95H?W@J~^>K4{-ZeY z2d)av+C%Tb&wM8>qQnPRP0tQ7>0Zqq(^pAUQh$!<>_Ol1F{RIs7XUzbI${vML<%=4q@kgKmUDEjgbj|~Y0I83RX9|U|OB<7=K25~8j)YtZ} z0JtQ>(teofF#`rC;*6J*;)_?40dIwwrUGd)9ho?F-edoDMo2xj>CxmEbf$L`0CiV& zH0q3C>0M*S9>(BPRE8<~Iy8M$TMK;$YBE6_{R;msD^U}Jqc;LkQ%oBDR4Y+Gs|B-Q z6l2Uz9WQ>0(h^XXnNaJfuOQk7raX3fpB82f|8mVyQFOgZYw~e04V0FqA3XXN>Ml=D z52Cs$VC;XgWB2&+;{x*-N$l4^%3S_}ZBOzHCAn-Pd8B`Hm$kOS)X5&4lQM(OTaNT- zw3u}2puqzj6&05~7z5zG79U|5^yin~-|x=ld6Sq0anfiGdzE${qXr`YoQ{}srtzkh zTrzQ=uwwO-DvSlxK+7m)YMxneSzoNo%I|O}gRA~+u8lQ2ki+3a>KC)NJyQB;+{%_n zw~|{{Ffpuehil26E&OCxxnZN;9_mEnoeRK|19Issz&n(S|BgMBOoPQG0BlkXfD-k# zHlzHHEkrjnlSm#4-CBpAovv>&BX@HNeV1f>gI+q>YrP8HVs-TDHq2YEL2yk2LaK%V zTfHU3SOUGB?5%MK9X&r#^&Vyxqy4kma+{s z(mQ*sI_Zgw7~%vug_$?@*Ag5A`|k(KjooreBO7BE7XNZd?M~U1KJmS&#)5s`dws?l z6792*be@6}ma$dcTn#xe_{n;h-(8wVrcWiyqyZ7xt6uHr|Blr-bX2RLJ0l$0?$Z9w zzef13?jc~obaXOT>h2f_FEyynkSs!h@{!qP90Llhi(17BBlnN(`AQ98WfdzxbaH3K zz9}xN+t}hrtdOia(B`>}o{{I5=TvL*_SDt8hoc|#pgRrgHHH;yn`ft+6bp{H`{Ye! zhgmz_)Ax&Qth_}J#^;xNLGEwOja9k}?~z;e^Jxfd!$5T06#BN}6W(8dWip#}F8#cc z#a9jckiIYZ26(KYrh5i}yx6v@+jrRF+v-zK*Jn>l(>4LD#I}FYw`(ZMcg>RF`EX>mhTDcuEfgQjN`25@si?Y4|lbpCU| zw2WQZs#}XQ5D%ruI(@8VuQD;$M6(#3YVKVcY{*%K{mpBjGjHJQ@r+%>-nffsnnS3I z@hedP4utZZp6=#Q)n+Zj7c1WRsNjKo!ueBy0?ztL=h2YEB$#LFJz{3JM$Y>siql}J ztrEYgd4EqFR7xj8;dg|XC3grt@G0pUD)&EGZ9CjQq8lSya7#mBW`a1nSI}%U7NbBr z!9~K~@73pW2+F?K+Lv`~60So}ha3Rq`mG~pnh(8e>K_oea6!fC(9_J@Lb}i1TjndB z9TPk`6Y}@BKLo>;59iXRmjO4tO2fjL(Lw?sth?>?5&pXX_*LI@+H#RlWz5J$^>D)j zZpaZv>wmUIccy{<6lS`aE!cu7WEuERX-;h$-NPW)%H`hEtI)O5D~qn%A6fEs)bF;H z|6bZ+_yku@prFX@aR!0J{%3Qq`B2&rCqzrX|0xPx=FwEFN4t=vAhqf;%0;I(6M4wk zR;z>o6$b24RI~f?PjGLBEo|j{1hDziMD8<>uSqs}Z~G-gs{`*WSC{)b@LC&r`IaA0 znr_hU)ha-@O9_1jko1eb6Wu29Heq&8kANDCGw<1}e6ifbv(r7eX=3|(5V@T7St%RD z)3IZ5Rhkg2-hTq_l%ds}58d;8$lEH_c$N)wL^npv2&XtUdkr*vmE#6$94>JCC%q*f zTC$=-g!VhE5*lqKh0F+UB^~xU`f2%;t?aHDSH0%qp5v!&3NrWREs;i_HUagWjIO32 z=ZdB0)ay$-(J4gZr76U;GoQ!WsA%0B^ z-8(C{^hfm$4#ZB)Q~3?w&ClIr1r?qG?p*UO7s&e*gNd7;vYQ?}I6PjIoCTpnS<>~w zzj(qLrc3q6JpxiaX1v;b(B|P_bD@M<_i=!00bRf#|6!{kp1cLkSyCPT0EC|~$lF1! z#StNr-Rsmu?tjHVGLO6)Nf7=xxNdnoJOKxv<82GiBA_W?Uzk(b9rh#^9vbYo#FYAl zRWA`Hg}&*#>ocn+du$-p$gl;#<|0|Sq`Fy6Rbb#9G8lea=|^F?=t_Pw3hA!>JwS>Y z@HeIpM`3*v4G$R=DNRoq+c*bjfiIwlbfnu9GwHiv(Wx&4Th1C#!vrLQxTY8uBjGL` zB*8`uc|-0SFNiQ|w=H0O;MCR|M~Sf-ER>6XxPU%8ojqfx6>!;Wm~EouUJhZ5yu;Ol zIu!E-%1*Hi?Ikbj(nmgibcCiN14!lrwT75iY z-RCl@Z$q}ZxKGUBS5S~VM@@X;s0eQcy`A)I;#hnDXs*H zU*UGs+j;`v?~%~BqF4(z;n?*na|$zh6fnv5YHcHz*2IXd4>k{-d`Ts5E|4w`DLQSi zpS8Gdde4fsRZAO{%ZXsBngDwTZ&cTk>x2T?UJX_tS2n+svR@$>MR#Kn>CuR!S@zp& zFs+aXBsqDp#;R=(<#;co2H8%pD+4Diu}j}SZI zdTWBGvKd!ZVUDCb)iacBrL4a07Eg4l(|+7ZSFm- z$xc5|2D>L=5yJ!u>T`%ZS&Ao+JpSgM?l~*h1>=^TQ0A($3^ES_^@4Urr!rNFb!EIo zDU4k;Dw;<`vzkg!@!Oq5u(%h}RUb+x{11-5BI_pe7H$!r0yeS2)Bn|(J?3W*uh(yfo=2Bzs@dxl;i z5WU%ziH1*yfd;M%juA|wTvRZ89i@ZOwW;|1wW@R>IMERiqNf{)GH%Wl^Pe%@g6g_X ztC-B*JgRPLMl4p2l}-pdK9vOdh8r?v8}m}jfwWXmr4tKQUv>9voTj22r;5@L;{cC9 zUjT9}D4gdc!AYnwv|`ot>9E4;^+<8Wbh=RaJaVL-B)dt>+CZ{^)UAp(6K3nxXnT@5 z$u+j3Jz+9i-rQ&S*3eX7(hV(=&|aG8lpgllF=v6eb2E5hV)C2ejlJD#aE0Qxt#1~y z{AL|e*>(E8Ee9pxL6fGDh8#Nu5ezf0EG{WK7`}3>_tmh;pEa#lsUBv+?q(tqPuk{u z@08-|x8laWuXpzr_~OEaQRMETGt@9STk!G2EoDEkr%WI^sOd1$J!AVYm0JxNIwHJY z(Lw9wK5!Rg&$YMx#Fr>+MlA+Y?QF?v1PX^b6NlMG=qFITNm;0&G-KO#n#W9C;^uMr z6pCX~XQPy8!QetvAHzk{#hK)V@BtV8{A0^C9VtHU2h-q}^4uj$HO|`1p6A_)Sw@BttH(@gi zCf)-dcwR_^^sA$#!e?ryHPMQZGi_TF%kf3KYwJ2Sh{^=`@xuDdr;5{0GK8F<{>Wf+ zxy_DILOj+NER=50^r%waJ!o(12gdgTdnIB0{yrNh9-=xIq8MWU$=*HP>vo*B#mQPUU+tKhGhpnC zaccHllA$v&N@-Om5d;!Pc1NMvn>09A?*HOtO{UDL%xmJIZ9SdPTu|Ic?Kt zao5L-Ipa!qcMl0Y&ndQBzua^)LP$6KY-{vBb~e$tEood)tdt}KU+Q?r^vo@00f;DM zMeV2JDOm$A@Xi?JY|HI1(r$%Z3k=_S{>CTFdg}f#cih={8%cRXZeNRHv97tOp>XDy z$v&L_d!Sk;HmY$NIL7_?5y9P4Oce6S%4e%MwkW<^dZLz0e71eMuBph)Egl8l#&Q0} z-W(DSe-c*R6)86|J_W=I!rMG9i9^YK z%0~I#uu%R=Ds%N}?6#-;0v|Dc4@`RRa$-D6ke5!fd470>sY+U%rO##ob-&O4L8cO9 z)EGA|FnUXnK2UDUD~vv;suJ7D-Uo*P<;CtdZaY1#VT9L4aZI`WdMx^S8fTP!!01Js zu-682_3Z6ckzel49cQd=a`5-8Ztv)n(^&);s+nNpv@2w8)D0~Klj z8rDM8Ok(pkYve3JM!^92eZ;1)YI_Z)v?-@@}!*F(T zNr6_1c|TS#?Vhr>_wH^nV|iGxrUQ`f0F}<0O;=Gu_H}qJ-U}ht+wOB=esy@RGe$V3 zsPU&>Nvx1O+-<$`rWLY)HKw-R_wux#UO*jt)O5?T7Tfe95f3f>i{boV~obOhD>h6U#Z z@wjbb&-QiO2lQaUucYG7=H`Soaju#Zp;G6fv^Hpl+23f;hKpmaVGHK5J zlh2XEqDZ-JhLo7>XMj%NSz$qUvZR0zrG#-PKxcvs9h=;|y>P~}Z65kaAm8!v(s^0z zKVvI2G<#!IhA98Ku=Am3Z{>vAZQdklAnfgvLm_hIpfQCNiF;`69mliy`L*)-c(GWHnOx#4mPFmNN zw!kZe`FTtCXg^H1Rx2M!Lz-47s~V3jG{ra@_~jfAC~q>J`pw(7^of}O+Uy75*^n)(sLzn+G-WZfN9C;#DF@>`>z`V{8(P z-9wf7ANeu3hldU)G1Lwo+@9SZ;oh4O*&VmgqP3_ns-afz5ijY2F|?7uMYV9wn$fx3 zWMRlFvWpG{X$L8O#-|@Y>E1%KT#;Q zaKHrDRPwETiNgRZPK)>%BKuP1cku39(mgo z`+aWOCX4BV8km6e%$1Yxp}R4a?U&ZeuDdTt15#6EZV*OwF9S5dlPporIip=nBTUb9nQ7@Y-%*SA>0Dk;TAjxH)stGi3GS-KBl)0~p0 zwa^EYn+xTp&C#&wyP2Y!1QhkYV!QRpow$Fj%gTs!!_g@R%4jR%H5PE2Ep{KA-&~*p z^3AGz++lX;scuMpteQk!Cy6+n#lZ>SUKkQ7ATKeFXTe;K{&u@rI3lr&m6j+5My0kE z=^$U;o!GuEJ?)niWvIjW=>{uT9>5-;%E!OkPKR82O?08{4ng zQ$s}tJIL1UXQy~u%Kv_^ebR7)RGi0!hjo&ogArT=aQ(8W+!9RQ%9E5$W}L9B88$KKHDt3agi!qe*9h#xgiER95ZTnKfaf_%*u?WM+Ic4u=p2#cXQ~b*ST~keD zZ_1@XV*gfG!o@pVBI&I(6muF}nm7z|%Wz^LFMvRp(WO?+$p_Hr5V96t8@@NZkQArX z1tIBCPQ~{Z*9)8;(;)>HwkR3ZUUf?+V`!Mm&qyA2rm*H6#1EUmo^+JX#dNKrD)rL4 zJA58CjRs4HhhhY;sxuiu*3GE+o!HooTF&8Rq*t3cJPZPykKq%ea? z6rd*e2Hpy^b9EO^r7&|FhAzjZqjOv*?eeRGbwXU^H{xg{nOn75T)GIuLJ=eYs(SWT zk6Iki`7eYN;*u`SB121V$=(cfPOZf2!A5e%80h0*dBJT(=LHZ)EnT|-TLWKqm(1NV zq3{T4^J;ZQ*Qo$EmON{~7q7TKhn!obgv&a#kgM!-= z1BQ~fkBSTXH-$3J=6s1D?fdU3S(^*m7fbo&`iqw0VztoW;fPce#T+GyC90Rw^eIwj z6JJxlSrG`exdrzd+bEDr((ZGj2SsY&^H!&Yf2DQg#$*_B~}r6#lo?sOxnU?ml0lXys$FSgic` zyl`Z@n=(JJfiEveNmcPuGpgTw*T0`a>hGTdri(-!IRZx?;2&2L@*-ub?1i^pV6Vz`=TPL*?N_)P-z;6C{eXDY z-@yAw`6>SLe;3q6PUR?q<(GM)(TJHp1U19Iz9ng{NK zjWe!pms=f1gQ=Yrq4Xv>wW{TY&>23b3d(mM6bFihfL|~VAD~pY*B%}oVA`j(!K#(c zeYxh8ox7XjqL;A>UMcq?=VH{15O285aUk7=W@?TIEDJPvO)R5T{o26ABLJ4ut0y<6o`3r?r|hhuOPv0Sm0$jm1MlP~O#!M*OlCIdhA z0{DC#X68P#O>4!3?S`9t2<+{!8)yIUvkt6Y8|tsEb-aK54Di@X$i85oJ(W`5M5D44_drSZh5Jd1ENjOvsPEo#U-lyNaJO2%lwrk;)w-H0h$Yuhv<+s zY=;5p<EQ zbg(-|7y#Chh>vf2fy;yS)D5ABvku;=T8{T0?#>E+EXKojs;xB8;Ix?L!F8(rQSxc} zzEPVD<6OqivKEFy0I?(5@7ChZd#tw3cmbOVpW1C$qs<}DDeTEq85jVDYl5Pkj%=qu z2rtCSZ*h8W*l;l1+BxxWnEJ{IQJ!Z}q>hWj zY)TJ$9l=6G2)?{EzgZ|=zyPq@@p6DdWz7Q}Ob@{?rFAJQfQZobh!1!c(7|?$fS(vb z@rGI*4!2yvKj?^mUVfL;EW9&MZbSiCg-fI%!4&I2?}S};gusJ?kM^o-^1~yRz5{ul znVMPvKRhCzEZOMBZHiKS&%) z5}0llaZrEp=dbhqAbtt<%-r+!6#=%pNcjf}%P)+S|1>}SDqi20@W0sn^i$yEnE?VR zp8*-kKRu9$J{kZf-ah;H_N?{v_4n(R`2gKGY-u%zMTtPyXv_ZPyIy@yD$9tpW(Q{k zW9P?Y4O0rTIV2o*;`XM+eo`V@R*057R1uEGX-yel53N@NSpQ_P@HAlq9T`InsNGa7 zNX%s+c=#*b1wbqGoPM#KZpr=1HYPqKi(#@G7y0O=Li42OZvV4)Hy5|=%^mF zD=vqIiUH_Axm4_83G?b@-W|?$Uw$P&)vD@Hk*>KR9aFE_-anPAgaBy9s=_p59sSXa zwSxMbHM^+1YSsD@#+Bvu=~t|(j@&Ckjnvj~ z!yVeIeY>5+lE?R$S3)c*sE<;jywdE3){BRJv-;B`G0SAm-gAb#eONOd8p{WIT5B*H zx+H1KiviSHd#Wp9vRVKcDFee{QY`K`i2!28ea;gH)NC~>URX_ojy zhm}$C#RL#rJTavsL}RL~MAq2Z`fe#8W95K*lD89k(?hUqT-PPs!@<%^eY)A|A6qgsNI zv(hBcE;t0RZ?#^D?hI=UVW8uxX?H|!5P?X6voVm_@uUMHjr20A`fGcimhsEqS+Hww z`$4cxp!3*%(lSAYA%m)NH(|?8gZ>X^WhGo=b%E6kAWQse0XwL2IjG1O^ z1Dln?LV;GrH?j~4_S;lXiT$V|(#uyn+Rhz}7YOb^A`B z`rb&6Y4G-SKD8RbaO}{ij5D!mfDBsr3U2g8Th}-aU`GyNKt+?O^fTb(RQfE?)rde* zIaF!XBWX6r{if}iyBr(0+M9F?A7XrqkxTErNGP4m{w#~Xr#c^u(jpt;fvjh&t>4z@7-Ys%`%p8+b*qe-_h;~{dxr!gRa zYMWPDGg*}AxBr2Ti}v!6{xU`Lx96?^D9+#8+nbAFhprz3+YdBo3I|XwGy~jOa<|Q< zy&2Z#R`_@JX9vYWuK=Q?U=aYGZ5t z`_}~F2fgTlD8IXHHlC+ z((AsxzcO@sv}qd7NY#{!1eWQg=eTwpDPcPl)ingXnroFEdes$N?FA7oCRa&_7e8X) zepcEdCSpvr5d4o@u`B~*OpwUeL<@oFeSkig4B+4_xfqd^OHcj6#O*tYHP zzeBkQZJ1i%S_VYWN91$BMUgO0@JVdOagOZ}hOI5vjl6_#0NywTZd(}eeJ@6Jfa|i0Sbtq7&Ma7A*s?5(kk8EC7_^`sI-(I-Q6W3 zN=tW0cXyq!bZ=$9zkR+xzVABUb*^*XfA;lkmp;#0YtA|5827mEdn#iOf{OqEYTsjL zmS4L#n$2qZ&=XdnYUtJ(KkUh%J#>r=~t4DPsx3~ zDj)A#WzFaM` zN3ojq+KHxyeZnGYSH&I{-QZW}M9p>VUjUR}!(aA1V!n)JU%Hc|1FvD6O!epUi6H-} z4{(*n{%izc)J`)ibn3>X0-f4NuirrIC|Cp9Iys1jH>uU4z-oiio~e8oMNgrI=;W!& z9Vb0G=1NzaD2?m=u6Ri|BVzFj>U*5E%6(u<()#UIluAD%AwCHhr%ZeD?mamh@={GE zSl!vqY*riN&Zw2dG6(vbG8vzTp$>XHGt#fA+)za}GW|1zyXy@)JUI$x^{4PIec)Sr zTfRH6sAhQei;>T2Jz`q&)UjuZum?B=&U-JF<19GVS_Hf;#P<@0snf-}M>h zh?^N$uc`T5@r3=-AZeX&21zWH;v7kiC>j=5J~VM*N7c)-K{bdstDb1zR>%lH*rlL*}6>4v`9 zb)k!@?P^xD%0tE6Q93`;KL9VRHm$y19ELTGZ!K~msIGogrF~mKw19CxNXW^I(^|(X z`ZHMZDE7yb;N}qC6dJza{Or{Q0eQ;@hfBDJ{s^pHxpm4`f8!sHT_I0h&B+*z)2;-7 z5+N!t#}EV$^V=(8{nnvvNH3SGFY?R0PpoK>kxgMW3G0+uXu+Liqsbk(k#4DB(9I8c zU@JdBDs;6gxVg!1(~Bm;B6}crD2bdkH>ok6{22K{iJGox?Cr)3Vq3s%;&IIN8xTFh zeMUb9{>F(OUc-}&YC@z%Uvsz<5R(lDRcNAbch(}VLGycd+OlPb1>jCp`YN)`JmXtr zXet?Bw6rU1yXgi_ zgQ91BrUuw(O`zO0QO{x{W5?;T%~aGgKDFESEUy0Z0nT=v%g+Mt8F5^knFSAJD)>3nQu!b z@$nM1dB{&Hfvu?cN1!RN*WeP3TTaIX$4`PaO$~c?PT9EQ#3{T-gaDcZnia_X5&Ns6 zo;G|&lCzrPt+y`l_VZS2F3ts)j@_8=T5buoZ8hQ=XO$U)CYu&mVtBS9Dw+`5@^FPB z)#9)Hl`hD(Qiogd5>rHQF>Z<gbuOe`LMwqi zHD;h>8KJb4)D74Sm2n@&-zlRM%9xw_z6Clia&AZ@jWcFhRzKe2rbKpMq0q1A%NTIM zHs#vxPun9fOj)Puwb-s#+sNK1M%do-$Mn{EX$tnQ;@XLFMiBx*P5?4nE9LSr| zOrp46b)j_uhmiaBtdBHtRsGMLB|i3+?b@Kv#^<6HNDL{0M55Oru-ODod;`3K5es@r zF7sLLxyHSb^_sR$q>SAt_xqs}{uIHkkOvn(%g#-mz#kjO8n^tS`bw z`SlX)2GUn7^80wy&A;71l!)~9LJN>!%tyW*SP2TQ(SgS8p|etfu_{t(c&|RQZ)n}Zs5j7v5){ze-a z!QqhZd~V~PI1nQ2y4Uj3mQ9FD^xBu$dfZe*?b3==4L|bh^m4PBG34))y?#|7(^sI1 zjuEd=nbyq?ZguCJHYu;tv zT7Pow3@JQ_2n3_`%MTpx{*CGJJvK!BxHq)S+_!b>Z?!7raOd1K*TP?pM}O`YO3un` zWR+7F`2JbtzYEb2iC=1N2OcOO0ww;tU3+A%Ag}Jfy()iCmA^jx|J| zq#e5$AA2706q4Tlgud{dG9|Q97XwjNc_~lUe>dby!=O4jRzW`KiJvJPa)Z=UZ{H!Z z*^~UbJXjr(6I|+A4PLE(iCa2z3fwpgBh^pL+w&Y2HeI>i(XbQRNv!o)(-6#FyL_E;{Kxp zhxYc}mfeiOtgmrl9A}Ek@4cVckIJ<+phrVLyw%da-f-B_-4MR|fXPq)YUbOY{R+*u z&Aes3i#vAyj}O-)oOAYblpp+F{KNF>**@?RxJ0|yEYr&DI9<; zfCTUjd!&rKv!&A|AW=w>c_jMhz5fbAu4ZS!rX-mB1BogMaFyCPRht18*sIK@8QvM_+~1UZZ4lD-+GTeYdM|vzxWwp3nNQI0H3YKI^yjj?S**z^HqhNvrDFN7 z3O@A_j(u9==2a#r#b4t`wxMvLM9p_|;P77LH^cW40}*9&WxJeF&1FoSlMSJvi|LtM zJd@#C!K$5yG`THz)72}S7r?8uq4>3Qtnju2+x}YHK&jnoKiD)b$g7wMb(K3gxTJwm z-Jtk;R@zxElETIE-F_&;=VxYSR3@7uoE%gYnwMK2(2sM8pndkHEBPZ+-#hHw`&w@J zVkiS$-K9J7>grM5I8C8UwN~@JEN>3pmRHxvgAK1^jOJkOv<8IcP8Y2%58&~%;V zNaHU)gzTgSQ!O7B-aerFrfAc8?-o1iT$To*vFvpr4Rwu+0w~| zr@qGyfaBys&S{;-F#PtOrgINyMk1Xy6ccvyRzQ|jL}J}tr8dz|^{ltVW-(f#C){B^ zFZex|ow+GZX->a+eNi*dZUc$S-tq!iB48z7Sn3Cf`6>^h&z=Tn3w_c=9Eqp5@}IfY zQr+9%R5oxq_~uu^`%%jA)S**A`=o!f`tqW{me0pQPt&M5^55@+hRyZv(BjsC%Amu$ zX$76budmvS7>uUr{f-&^z@j*rMAi>}y3*g3<6cD-luJfh_ojFeQiyqZnc2XWe~7E}K2iC;@VSQ-sT# zow#zElXl%88-^OHR>yDur%Flv0k{NFSBe7tCZNx| z!?BFlYW+xNIjm;JU@mfT`Wl@=zjr_wqN#3wVTXDI2PdL6eD7^x*Y%x~%N_lb^m}th zUQ+I9*TluI(pGU?PPCf}3RssW$uh|>7Rq;x3%=cazx9B6IKF|OILxU>E4b*YfX5bx z)(xoA6C@O$Q2|aLsch9D=fv6vZV98WBS0?WOp&jqn^@qX0N#x~5|8U&L<1i47!Uv za%XvrEB37u#F_!GsK?!u=Z>>Qt2d-O5NqN)hK7N6^gph}Y}Mm5GQ+ z-gZ@%qxa`WnM}GNz2BWE@sjvr@KHSY(d{hN0vU3L5CKkLe|w&>3Q%#+G!L2H^oX?- z;ae;YecgO~9DI5CI4=(agDZ8W-}{5ZUdy&rGe=bS{- zWL(tcXZKk$B(ZF~f3JHfAHH^*mc-(x>C!1fQPs|xf&{CtKFp(^Z^@i!h&jziO{7mk z$9h4z_ES|kZ9#u4CK{>39K#)_9m@oi8gqa$cK7q+uSUuZ)fGdOuHVYBoNm3b>fbCO zdt26mMQMiMyHED|OU;#+h=gk&NU|s>c5OI{O=>m<^H_^|c6FpTiwu4Q}-R^2f z@I=U5S4I?Rei?{_cD9LjHy5Ke8AoX9OMMTN&8l(kV63uJJu3n{XID&6OHN<3h#)R& zn=CCu#X?3Y!l+vD9Y<%rk#dSTctuC`L1)RmtH>HLCs*-g_xQ&{{*2SID&PcP^Qwq1 z?_{^*+hS52ji&ID+tW1i7MjR3_!y@r(MvhONW8t8cpoJ=tKZq=kVJ%vwZW^LWTQ z*UMU4Q9mipG4o+9zAjF)r=Aguph|N}6n({B>zN#(|GKQuFv4WvQQw(cWT7ad15?ug zLnFzbRjB9r@shmN%{_luuqE+p1WV_m>ZlJd^m8*k@Nv>Qud%Y4jJ@VP(3L}e*1{ky zFUZAd?2Sk<<->S3lqfz|`0XcdQGJZMmwVYkP`^*T&hEHnnt)%K*6(t-zYuQGv`i0u zs>xKjyfhN!e=c-nRz$a=V_c)A6+4t8&zy{OII$VCeU(K)BSWoBrNnx^e`|SEwKr`Gz{u=0j zf1w=Ba@yTk0Bmfz)`GUd0&L=o%AIz1>`~Y9GMk^F9p78kODVS;3}Mi4BzC^~d!PEf zgJa(XrInl1WLOr;aD7U}yJL()o5XY0P`$^aV92=yw=OBd?HTLjkEDdinRxN{6Mh^s z6hk#WgiLN?!kj}pP5l$eyj#QW1Ax6*ps)w$aSC*(PXV;;HGZAn~kJ_Eo zY3=)h@0~%@23$%KtbZmQFx6=&T;-EKMESm;Gp?4Mot?#I@m0+jNmebf_8s6!e$u+B z@amv9S8tT`>Is|nSef8w&pbG&k8MLN-E9y=QP2)2E#&$8xY^C7=J;V_?%gk1>o2m{ zf67ASmR4gXuVy!%YaA~bwV;%zKkljNxybL!JQTZ-rBUlwwXgTJfFP#`R>=TlO>H}^ z-gc`K?CVL$B*b~6qZxP=&ps`;=Op%6z$;2Z#|7td;(d!>$Aa|P53kor!P$y zsYE}8^9?L_zA0Rw$c?G71oL*yLzz_$eKW$eVk4pI0{rK)(*Dc}irS%Cd;Z2av+=(N z{7>H2aUBjP3me2)h>J&Y*euM!!3cCFOZ%HcoN3`@U^%waRhQcC_?jwg(G1kaE4zDl z|7FE_AF~i-4Yu*xHC#qF>dUv%2{-d_Y5Ml=)~?~##ydm(I8*oF9 z)FHv^PsgwQ*NMpIeHI+Bo(|r>^6|z=pGyp%5GsJPG%>C0Do{B}aCx>WdBfztbY8nd zlr7HxFZc2Om_W|^KF%-u`MPN0Z#gx;;@QCI0);&}IwiQgdoA=FZLuP+A6JDD;8a%s z$1>pa#z%gANa;!{J2p+}(kJ7*4*6By#%=aOoBv$Vl^B=8jLsRJJ-Vg;89z9T;~KT_ zgW5mu`RJ#|=vFv5IQiZOT$r<^a&M zBcp83r&(b)V<+w&`My6hu{|C3;9jRiJM;g1$uPuWVn{TXwz&GQSM?R(>U{Yo7yIwG zbad|%zX_B3TVfI3zh2FwhO5>?4w09C58RPC<$CixOb5+&m6QK^wHGFfV#y-6q~FmW z{QC*{-krjGX~?Kg_xxY4&SQZi^1x=~Es-NX`1@y~zhRsdWF=&|_%BNhwi0U;9OJg& z(ERRC!SUy9lC@~U)O+s}hW#J&8@Usy61ZxxSvL9YUnj0EBO3Y}apA@nzo*gBx1Oj9 zSMzoUSI7Q-%zr!_b10vxfPlc9H+~zdL_%Jt`sMSzWY754v953H$iH>E=W|fE+du57 zZigQ3`}-fZ^rK=9#PQ@5>MXjfX9s5^qNG`oWyW!?aC>`9)0Uo0SB=-|jJ2OV>mf4Z)7M z&2#(7y@zG~Yx|+X-LHK_A3ph$+5RImftCVKkwJ+=_}@nB7#dvF`+pq?Fs_Na(f;f7 zJSmGz{TkirOMmYD=qI@P@m}V?BtS5Du5k9y%hXG>BuD26-vhj@?a3(RPZ}7_(UaS7 z*o=GE+^?zAB8$wL`(d+3X3{f0Ic&$R5zhqx)@1`Br_cUEl1!wC)T$9Xo3gXIhGDr{nfea*oTPhwVtze|Wf@%sEF`d_O+^gaxO%-c1H z&wuV7|7;=T?fu9}BZ50%rI=@N;u`*xES~wR8$qU!KFXV>1*_SATil#(yTz6d1#KZT z6}yl^+PJ^aYypl0G6m#GME;m0e-)rQtZeiaB3;FBiqOF4SLc~huBq3POF$P%xgV0D zkeul|Lyn`p1tw8)36JM;_1d!iEPhQz*Xs}}ZhjCY{c~rq$QfJ_@|H1F8n`X+)FDMvqP! zRrjE2HI77cONEPz4YW2fYA-73UhPVHm@sVB-gKWjZR`XN(HP`{DP-MAT_cQ7K4Bc1 z1Kn?F-+G~+U8T_(4Gm|&1c%8tk}*Ir~9IxMnF`urIQzMOMX zrngm~^K^yu*XQij6xem**Gc;}?Zni#L)e{=vIpwm3Sd3&Zt2Ku%0 zdHG1I6Txd#RaGO}!e8shzA#!VZZ`+N(e3DXboV-0A1cTw%9W~w@f)#|H0oNgb)Ha# zq|DWFE|#{@-dr*^4G6lr;gJZpyOboPV^awd5Ns>zB)GiOnHyKua=MKSV~3(1J;UN zxisH^Dl&iojVU}sXlY!k`rrLmfIIs=Dn0eS7M1?VJVtt^`izPLqSFcab0WlQX-|d` z$ajJ=OAR5UzM0Q`)YP4&;Y5scuS+E$RBLN##JRg5lE1pIQBW}i(B)7#n5ni^;(H7S z805a~d+d(W>Sv(40~ESNkJE%dIv;7^*Z`Md2fzIg2#$r{V?{U{Nq4>wn{3%JBS((e zz~a~~AOCRd2he(Ep_@$=%)ZAxe~plyd2$k*IPgnxlRI^WfkU;q`N8lZtzdhGIxlHr zZX158aa+8vy4--@jrCICpe~lhqQ}act2WPcBeAuE3bGibA;JahqnksRAm1uOZ@7;& z|NA!S3>H}quFcrIS2-P~I{S~Jr4+5h9>@ssS2xJz(L8rt9_)bHBTQ%;^vMS=j&Z953z zI;cB=W_EyYZu5j2?Uv!rj?b=P;#R_idy2q2@ z))cz0Q+{R$dl#k!UmlWFb=r9B{v&Nl=!nICekxe6Eq*&Vqjbe9YV$V42Lv4)>bORO z0Ba;0ed2cp+I70(NE&Pz%zg;EXr|?LQn8;*Iuj6>n95I$<)?S%ULb(Zbs0WJR!VFW z-$h9Cf{h_WZSsqu!UN7GkSS(qEe%&0!&Z|e(MB~EiakBXAzdY%7r4xOu>3leZw#!A zNifs`rxRBIR4)S5vTYIR&M$zMW==C>`+9(#{pYhHTO5rANyQCMn-BVi4muG!i!pMH zo554UAh5H0(+60~-u)36jd=C%DunU&xQ50Jx#tDwnJeN^R|Bu6Je~pe={)#4V^_F* zyAizAQJbe?!VCQ|R*O~;OP5MpvqIuXN8QH59>4+iI?>m^uLyPa8cJw3B<%^??I!;JfTv*JccaY zEkHg1M{iZI9O`w{@i$o4mA>Czj^uXO39eI;i=Tl=GLfT*|B(k08^_x+Xo}QW5=u$! ztMHCggCRu=pu<}?@kuOh&3MGA)xT$$CBYygcH@7(hqdFXXY zaE7a~QFl^zY6r|=MoZc<4YlTzC?4rmf5XR+iKKI`J8W+3 zb;w3a`N~}um-mZo>z4>aoliHOnUytFUoBq3U2c80?P;rLY)#;NQ@S_*oO9g3DV<+i zkkos0CCBSIx}uqG?nD~~0`^ROx)OYOoO7AgD&>KhOwCzcN-P{I0f8aZ!`t9y%YhRr zmu0k7%C?Jj7lP4(^OFlGN|vq>Xc~oD>mMHM4-%oR&XFJ($b@gNMC)m8CiNiCrTpvoWYcTG}s#qbyHq^+$^ z6yK~xR@wv^1Z?)w2mRzn^2w7J=vYsa1aVl-5M3;aB@1BOlg(vZ#aB=nndEEFR3)A; zP*oBh1{doelNPz7W(8n>>5h9BTzTD{M~G;R-`e5KKB$szv`LB%+hB2d!XTs=B&}A2 zUjAZ7K}yzD6!n64XNtV5$U=wrv(ltq%?xNGsM5TV0|6HxC#Ak*DaJWnK_3K}yNai~ zMop?0NqB&UNOg6foxX((6{kEeytX8hv}a2%&yqjY5|UrBv*_pW{24f|W=iE0J}^Fa zbo;>*Jw;)wQym|RZV>la@8s5WLezp}hstwEvR8Uc>z3N?QrAu7#BeA-7hXLTBm*PJ zqr?9d&T*qMk&oKx#G3?oZKs|>G+wMOF^2tCwc<0PPDk)u9p8U7L#-Y`@FMFPHjZ*< zsSn^%j9kwZz0Z)q_RIsVwYZ6@c8jU9a9$VZVdH)Ll8%s}rfvucx#?m2Fl4VuinyTp%{I}*qytR z?a@IcAhk-UpMDPqyK~P&DObDo<2@cJtttxI$E}d-#-u0Ls9HvPFjI%zv7Bmo{3IaJ zZ)bgWQX!zT?mO$|Q|(C%8S0vYegYEPQ`uByYpq!;CHQ%zsvtSJDHmHXdX>5tB{>vWG5T|-^d&FR%cF%}V8&NY!2zl4&4ho>qSOo8s z>Srxzz2@FnnvZeTt1)bxO^mUlu6EKb|LjM?DI5_gpTJIEEreaB%eDBEpOMVe2TS7Yy1^%bfSZl22OnJ$Qx)Y@b5~H=B7;?U+4tS>5Hf{ zNZPY>l~k-B%9&O_t#YYnrjUJDDfzOO#^lJ)ceWTeS}BU*G3L0?evPe+S*T__3;4cH zLaHc=3tz0mbc%DKkUWI6RZaOzqwxQA!7jvCYII&cxsU2eS`M1`=@ zOdG6`^spkOGDTi0FQ!IcQ^UK1g0DE*i`vfuBF&Sp@a;0H&xqxW_-%Eq2QxLeDs+_3$FfGEYC>Yr;d8U@V&7-7(rSDJ}?W z;wCrbUyj84*&Dr3%dfi&c~h;IZl@>AKK!4?Nfw%D8gA5!fTZ~7KIl^izw{t*{O;(j zw60inw-GmKIK(Tx2rAW*4teFq4EZz-C2_?bM=XinyR;x=%Ofp^4x!Sz5_bNh?|53Y zUt)%13ACl(Z_M{8TlMsf2dfVPxNv9=eth|D`c0t%DNx-#uz{ey^JKg@!~?&cK_yqp zht@IH@Uvo$w%zDb=9uZO$}Y6v)J-3SCKpXKv?mXY1Quzf8z?R*RLN+0B_}pzGlJ%N z{&i1h#mW6_l-bHa21&Dxb0T#DD^~ZJ%WN&Aol=gCm`TkqyarM{@|C4;bA(42geLtO z{oS9KlxztA?DD&upO02(Qq|~0jF+2)+pp2Hx@Z*9V6jpiizoZ&!A>n8?OLtj$Nr@m zQ*Yk{4lr=0$U`lI2lV7|c@Fg+vv;>7H!|=)x862xWJ!D>p4;t9P@JThHS&4HK-UZ( z=Ux7>uo(|r(gg`PcOp6zC5X@VkQA%3x74G|ejTf~rsq_%ogE~rV_ZT6#h4uiSwtvq zhs}lgocr?_T3-6LIlWXbQy8`CE~GRS;oy2UbqoWB@zsiLk)iQa^40E)vW+m@fN~fl zi5~v}8O89hP4lc8f_e^xDCx%UNzZcJ0;vM+)z%|s?Kvb6bUVx)!q~(To!RRn3%ot? z8IHPqP#C&n9lFoMADWevIpWnJdFc7H=`nn78AoITI;?-Zx^==Tv`fxkTG1aWzv8He zOQ4Kcs*W{su58#4hiS0*2v0`98;a8jc_qEL+kB1e1Da7dwt4NNZTxGc9U@ zRWcF|OVb_7xbDlYHIXS-2k)J(>2#V@TDq~YPk~2t=Th?H7=m!hd>`UFP0j3jla%jd zdx9_g`kEMwN2xdOdmjB#WF3pTBBi+=-4~VBTf&i|H;`As*LceRtfGYpJMIxI2T+}W zTc*%G+?A^VMn;Va#jgSX3|%2Ykyot0{_i(J>H5sWQiPV{JhLX|&(y=!AG$vRm*)PX zt@INu;?n}8O#Vxt+P?zdd}P<9x>{QB>g!@bH0)S-?s`6@7(xIMLn@ig6Qn zb?5hNEL%0wbwejA_E^pIm%L*IiGRO9SEX|=cl<8PDR@cKZi)#1vo`~;;ZJtt8iO%2 z16|6<$8UPsjIgZ<^!;UB?hUEuZR$MV3Ki5--n(y+le5J1sx^Nra6(&WMCV+b(K2v!v; zJ)JK_K23jfYG5*)-9iP9-9A4}KfRl>aq!$j-Hw!GZ^@h5e=Q2L zm@cZKaHptmB)IR!g7n^x`{Tws>arS+PIUwPOuYKdLk*NcH`+4NOBdLPe{WIIofs=l&_=+Fy!i9aT$L_lR;tqSa5k%yLuC?VB8vNGVIBP> z#Rr)t8d>tcZ;8>45SGV@TaW*HOuv8!lkeC|{eKV36zcHR+a7DbCm3TXKiDxS0N{Lg(r$CWhP+Sa)z3x67l)dmazcal?9mr} zAHNVZ7(W{h?rwnDIJGp^lDftchcm#s(UhMF_zF z08a+%f{KHk6az!UhQ4wTBq8{u1@vs?2U$b$0d>*nWO6>(o?HM1y3GTctmnIM?gC!; z3NR-*1_TOI0W30J8T)o%hnx^(8aSjtnx>Rj$I+bTt~kt{oxMzi zq%a+1KZ})J9xpxOgoiucu>lo0&f7*m+J`TSP`VKBt@M3Ps-pLkIbhuyFL?FPUH$S6 zgo(p)vJ~3kh~VNtK7Y`D_OtOcKt~pySL}6D58y=Zn+Z{g=gtV`n+y%=P$usK=iq#J ze5wGx7B$rp@b7q0R=wY&8kLRm0(s-bnoS8NpqU@g$vRU5ehJf)`3P6UiO(FkyynoS zvNo;TU94EV;WoOS%?kVB`41gkUTwkbnWuhpaRyl#(~ml zvy;VW)XQA43uS!q@@Q?}NNO6o8P?wOdXRX`xJ!;)ZHJ@INS#i6bn_Z0vBABwxyz*8 zU<&6H@D3mfhcoPB{?Tdz)zv}*#p|&#SG%E!oK*tn0t~=}BQ*}na{*{=R|8=PBkj2C znb9kmh7ItklLT0*NW0F=o|PKGxm~}4b#N!5Ij|1-i{T@FO-eysU47~9f1xlrxCpkLE zmpI@I2}dDQGZ&L>S_Hz2rW8%szEEvJrxXkA=^@N(;A1d^NoXjqupqDawyy5sDNJ^Y zb+9(5*h;MfK1`1Sbx5*Hh3?BjKgIZQ@J||<4O9h!^HOvQI72ioA{f#^Xj%-gX!7gx z@1jGKxVUZdmT{-X3uAZVvwUQ)e~k{;z&Mx6{Bk^y1M&VVIS|%gB9SW~{B@Ll(n6sx zylJvUd&>}mN}k(=&<8Hr-{_-HquaYn=xSC6%I(SHZ*aMm_?q}WHjZvWH~20hSv58!nRprYml2gs4$XD_ODwLKM$;Iy$;QlUu7p3AQ1*bk67 z*k5$HWlta1fBff6yLS@rrP$p!JV)yaG6uB9G~1;r%-sVJQs1@#wYK)U6BuFd91EY= zXiM&`Ay5^d7E{g|=?3m<^m}dxYb8E|rf_y1slrcK)P*;KRa!BV=D3Wk3;_YdCZ*En z-E+ipY>eU^q6Gp9`>qt9{HnNi6K~SvShw_`v!SbFT$q7L=bGfdb%?EAl!)RPu$pQA zM)~M{${a*V=RmW8T7<)JUaL!&P9V+siW;Sgg)G(X!=41C(i$(1euD!E6h4c~DDbrB zf#M>go+ji0iXkh6CA&48ERP;MfOJ8bE!BhsmgQW){(7scX0O%JmqWqz33c7&GEiU) zaLlG^c1J;E!ZF58^?UaeOl^=1IPSH`Z`PhH)F*s*KJ z4FZQnW~XC_NJ2LqVVliz);b;8oLcUpB)HdQ?-+E_99qU<5RPW*y5gd;%>zLz#oqO# zV#_;wjM3Y}nR@tRj3Ec@$=Dbg9(+{GoL%mckDH-(RmKmY0mARJ01Qk|qvfAQ{ zK!gwv)GLhz*vc~n>lna>4 zQuz^D-k@=!F}6P zaJlv?k_zAv_QMG&L62O*YFj4M9f7mqR4K~OjH;9UBoG}al=L`4zE0l%Ug(=TbJ=Gy zJ#LIr+N$a7SFi^%(QS)7PWRbi^-^-u8-Kq)YTn9C#U$gJZ7R+8PzanHa(XXE)eSz( zY?&~T_4qKTgQCRWYjcb$^6F>ia)94ymYZibR3dZ_dSVX%_)fWI!f9Epj|4d{9ZAi64K|S; z?=GHyDa(uH46-t^C=U_k{CMC}lwUNjE7J-4Ztphq46+Aej=zDu9j7Ue1clCGqA6S1-g`3-r(y_^&*DALJqVmm zB6BJ~WKI34orxxb+*N+G-)X-?EipCLMi&Q3y7Y+W1$?b{u)c=XVbz=|}d3Hj>uSTEY!7mPJ}LO8Um7pvE| zH?-15x31kTLs)pKK->JW;g}CQHeGJ87AgCP)9V*lZ-kaseg1w z(6R0&>x!m(>`YMAJ%=hTUY)-fxC2FDTN+q1<5Ws(f;YHiITT7hzScX_fOh=EmNBqo zZKI5WXNkf@%-a*CB`hvbk!OGeSg0{LX*gx4Ss@@V)Fdm?aZ(pVhV-tL;X+t?AQflR+Vn0~22Hg3EBfU=og5yjHsM1kF566EMDmmi_sE$hoBp9KY*(7_W!Qs< zDJsEAF>_w?Z5~0B9L?zdO3Pdl(*DWR77520{-{U4yAvqW3dGu11NGrMpZHF#y%kn}~dK1LPJJAN|)`$Q# z3VQ{_aW+aSHQ8j;49v=11%?vy)Rzpa_;AS2=wz@mGh^_JqI_6<3ZaPMXuQ~ny$xi* z?s`;thokq9%VC)T@F083bZrYz5Aq&^h7mXtjJVq)lZu$$Y?%t3w!tz9YyR+UJX1G|b|`>jhqDSH-Yx0=VO8^?`{ zB>z$5M~k7=-<$;sWhl2+lrtP*wZ)ENsTcwp;0!UvN!xa5k?j{cbcMribML&^Vm{0i zFT&r&bixIVFDADn`}hTyd8ibt5$j0)45cOETEnY^X%lH(JKt|lPq!tMeEISv+UWy{ zGMb7&_9{;O0z6tvBaj3ZfntVvs1)jtRA#_qFp|oc`=(C;MA1y#rQU0I>IC!TD)CD@ zsD|a4*HneDaVh)cga`wP?yE02q^3T^QB@#h)O@L))L$XGAI793A)nd)i=^4e50lQq zHn>pa=yQsSRWhE#SGixT+g$*C=%H#)+|5uIg!Vwpr0s*85NUoUhj!vhCmiHGLDPjbh1%--=XcvTVIQYPI3>xcqzIw&n<2}~E4KZgTr(Mbxk>#~qMqLUU zxIDzNK==m@a3!Ex0@cB8jT9DlB!Q{4w3P5F1pyTZTQhJye&##~XUa94-~9wWN7~fR z8*-7Ij`R}CX_>VmGYK|GuKEFq2qid~yBg531^#U%9|Syio^)f$tJ;kR%99x8CHmqk z=iUmh(zV*oC(=%PVF?~d*M)IeUu7?R^^fr+K+Qzj*jFVpqnQYG2v5m;OQ8g zkG#WFx+p2Ok41`&d1ACvnX^yHg{Y|<$OA=C_V;1lGwLqPRt#JZAw&0Vn6oIm#&0<66V#|yo0^Qy?F!Hg2TUj4z4cm0-M9lh)69(?5@^X zeNl_N3pllMl@EH{i48OPr3>QN$@3ohy4exnwe1B%o~o*(j&QngWs+B6o%HNOFgpmd zPb)eTh<2%fqFWnH6!kh7q=Tgi<&gC|KM6zZ9}tfSJtKUda8{$R*_IFP^?8@X1|_Iv zKRoGyx-%OpoP6MOuB&V=474#`Wum7RKv{G+zrdGYs-CzA4B!Us8x@^T*@!qY@awGT zv0m1_ajSH@psP28iN%dO6ji^QtF;4lS4}_{z0Q%^05A_N>{O5tI;)jtb7EOVpJpbG zOnvehOR%?PTq;MqB;`p9fHA9^8Izod69zD%E@}?wbB(T6K@EN1#}M)@{Mf(&R=tWj zYEuj-65jJ=2}HgBvCVwzF?*cL;X#&UR}59$g~lXyyOptF*~XN_k$R+MAARGbpp%YI zGWB?mK@qQfBi;D56?|GbM{ecXAl zbC6ud%k<^1{>b}?7ypT5guj57)m~f)6Ky*8wy*qKHO)6d`VsDvpz0vF`Kx1d$wUA3 zof}Rr+UGYk{Qgsm<*yJ8<-EkIw9KyxoI>u|hn~1Pvnxk;@jrv|8E`(r_g)_Vc$~jS zj7%yS#!+UR4fju&I{N7;_H7YOLn@-9HP$io@ly>@nA5MxysA;tZU`AcY-fsZ1U>qM zL&DKMGzChF(VG(CQ;19$VOb&2!pfEC%ARJfRUZey6jc`o%be;Vxhw`6UGZ^TuFT5N zak(J~wh~=`BYe_oI;SGIfji?ONu8SM)(3_l=VtU>z}aC8evG)F^y zJi{?X2D&U8=mu~WOvQNb>;u5s+W7tseO3u#j@S>R&3<4vU0K@(e)x9u7{Vh(7&ybW zS)52U2&Xl^h757{nq@d<7vTPydi>mf4j3pih5u95DJwM`7p#Wm=1)Y&4cQoCBe4l`uzC_W zf$^XYd_O`t0axt@s*lne&K|&!28c~cM_hu`?5Dj{syUnhsM$9jDt8(HrP-_m@4lsr zs@93lr^uH59^zREsILr`m+iFS{gNfX^RX+kz5G38V7b$Z4+ERe6fr}fW+mGMR!dP_ zkP_7`&+KC?{TvFXFry4S{k) z8q{{%$@|OD%-Mv>wh&f+Q?oi@4_nNNALqhS9^z6nM0F`CiftT5#lp(UDr+)x4|4i> zL~@ZZo6B14H}S1Kk4m-Ja{9;Gc{!fLJ&R3%`bs1sID}YY5%Q-l1G=VQen`Pv%zw1R zPw7rAK~A{{_^$!t^ihHcN{kaCtj%F{t@8^scChKUC#KQ}l03{@g7Xrsb99=m-7#^k zsnZK%a8&>$j$Z)Npmlz7Ee8FjT7)u}2Y4|pIMX^aoI~BH7D5vaMEo{sPwE+ggMn0^ zRR$R8WUA{ju4WMIR8pWTqFx*YCAS&s?ZGNv*ZAs1 zcs9;G^ODcpUg|1I{qr*F7%U7*3w12&8q zaIw&!xup`_y83NkcLsLI%8O0=DSknT78`^1` zw^SCOp&*=s%^NkJKyX@L48^ujnbh$43y;$dMwe*g5TRvYUA*`%O`Jywrq#Cf-1Z%C zl#afq-?8=uRugxj$AF0Kd#uzG^F90k0?e%{`EJVBapT)xDd!E2*{QH#-2eJg%<0Ep zys%%;?brlDyc+S!c&xtory+j zY}rDkCyga(Q9?$Mb*y78W^BnMl_|!O8B1hIhzS!icJFnQE%m{BMwehvyfMR%; zaX-8RY?oJ@JiCS0v_B0v~~n~Bs72O)fiKz$9hI9^?}XOwwmfvusH1z1|zwz zKqAWMDb)Ws-uBR57pE^>Z(JLkSUD2E9C@&XM$oykIactluv`_n>|M1(7xSRydd*_T zr=b2ACVv#+He4A2UvZJemRW4SCO&R8mXPKq@3X1&>j|@mD7W#T!SGC)1>8cV( z&_T;Q5_7;iW0}NNjrJIrakGw~PC>k=k4CU-a{wI4cAjwQ_d>l(EZkzN35~7yv};|o zRLf#)l*6KLmjD9p-jqv-Y~Fr;Y@EYVJVvGT!LALKa#n9+h*)i>9ZT0n5EN~Y_d|-M zWVXl*HVR{SP*u$UgyGYDXpw)L0*wV>>P75vGG&V+jH*!xe4zNH7nnLsRfKYMn ze8)Qg;`FZ23g~lKCgYdyr`Fy#^4;I|fT-NehSn}15Obk!sU7|Jt3h2sRigc7U}I_r z(AJgu)Z=Wg>jA~T+S4cAviq5?VhPI`jLnplIJ8C*$a0|kTKVO}&$?Bp@^h_#q-*6f z%2z--aq>wzMqVLBJC9!i1La+-PFYhP>%^G@R5PdD{9smFGSRH|#+xN1N6@ExMxrzW zqyV|PrnMo1ww;an-5^)^Iug>O)wdH^sWSc0*R|!wcztMg=@Z&chY4*T4qKp*fkpSw zp)uddjJiwbG68#(New)hluvXI;5~S~{_7g--Q;ix{wiM$5cy26i~bh#DoCNQA=v5W z7C}BCNw_s;sV9$Ddiq=SZMAlfQqs~`BLthLO@=OqeR3cC2^|f<$#S36G&Yp<_K~RT>wA61YCh~bH=Lo^3`Ph%k)dAQ zi;@=4@G=OldQ*cC#HQj|qC(sQ%XG-nF(^)oS1~}Th4OUEH4ExWM7Zdgy`WH9m#X8Z zt#s&e8LxnD#fQDYi>Xa959A29OCw{wv1bc}x%L>8>#{^Ijv=8eEeL_E))u+lKCcIH z36FEJ9#Nf$qrt>78Ck)#=dExAeh2|;i=tG&IiqXd2GS*0IkxOS?ym0w2qd>i|E&W< zWL&c;q0P2LkB4^a1dmsxu~$f+_NG0?brY5^ZE!ShD-jtzza5F<%n+2}t9@z`<7?>B zNp?VHyi_)b;htkfXSi;v+$fYC2J)^-P2JbVTE-C`pjMhq#Vp(LG2w3&KDbl4te-Y;5@n3rq&ZH-hlbi_F@9|L~7 zl?F&n!Ul3f`5`DBn!eyE$yAfzm77%483^-Oi-z%7DVps9u5BNKT;uy$g zhD9U}#NbcE_2b&!Ics@TJN9_=fzqr8+a?f83}psLK7R>NKe~!N%}f{@$4o41{!DRr z=*Z$dmM$8jZ(D_^J$GHx;-p+?En!H^31jOWv9)iM$pFJWD6xF*UzG3C)6(~RjiyJE zJTqaZLiTAn8SueX5H19~X@s}50p4=_C@+RPj<4hOerKa?m#+JyIHsO{W2zxxwkCC8 zWOxJ#^n_fFWc!LhrP6HdRtn-S?ZZAu6;g8a9yJ4(r#dz)svY_>{s)ZbAL1rb_ODXcs6}L zu!HwX8;Y7-p|+B3Vxf;T|jh7hX$dHd)wJW&E0n^S8v zO}uW|4zjs$*lvqb=OW>Yp-%vfCDfaNxDnG_!I%9O3)J!sB=vXIRa1ei<;2G)`jB=4 zF3X9ewNt0;9KZ}m_OIO&Xqcu)>`iZbNL1Bx3=@$zU#!I@xToGQ7^@GlXf956`oMKj zL8o0Tv(q>8J_=0H=co?7Z+(IwW%_IpSuiU#o?c2S_cPH<%^W`8_7!)^QWD;4g|oZ7 zo-Kg{%ev*QRwpK1c90cXc8vA~QiO!YN{tIq;|XQufT+<0HN8%()n3Od@izMQF|OFX zPbO$F6G2g*NiM#_osDES2NP1Lw3W7lCoBk50xVJAc#QQJQqjYJe1!~-5&u5Kr|o}@bKq!cl?=Sm5#tmtRKumA)I zr+MgeM#|SnNA9GL+u+(=+v~o7MU*sL-U|MX14^oxVW{Yc?N(>2(}gr7fxrh-{XHX% zoKKG9Dy~W_!@WV!NhDKW%zZ>nE|kbeQNdvC*vipxzU6v#4qEQoN~XMQVsb!(l80st zc1~mZS6-J$sp0ez*{qYH+?UF&8;Fdu@T`!Oxae>x9LlH59qi{<(b~X z6u06ztFN(kgZklKepB-+`PJw6C`LfN>OIi#a&_JlP*`1 zc!Y#OkY-teVeD{hgk*i*r}k2y#JBFMs%L)=4at0D zWG<2i(cnTd6q9IPId`tDk6cX%R*%xO*8VhEwX7VuhK|y-bv}r#kiTaAW!pv`le=i5 zW)x}^&Y@b}!r!HnP&Hm5)WXn-N)5qWNl|diaILiNkNet~z?R2@)bTs6B#s&G$d>w` zZsHIlcw~=#G;ER-1?Cy`afXX;OAo}qMDe&@25rt)_Qpsp-&bS$TZB?bk^FN8>Spw)lfgiZ;N zk{biH@V@ZWm(E1l{ZN9K0A#cMNdvxpd2^i%R2z8LJWz1U7bzG3>coR*#Vh?MfnTP` z;KzDb(vwgm5{?QlD*BLBYB!E#Cpbxmb*9RA7CQ(zrAuD<_YGpo39`xHHx zgQa$H`sXP6@O%PToLlM)KbUVQzZd!KFzBj3IwXIl(O&z@;}5H3qAh_0;>zO%_HQ8> zn3mz;Vf+ri9xq7N185($B}sO=Oy2xBmXY!DVn%nq6pL-`T!d9UhuQOLhfhqxZ-cxq zadZLl_5l2f8h*L}I^tGmR*rOLyS*f>50bu#IhssZyFT^#0(Jx`=D2B}#4O-M)U{CQ%5zp~svj%Pf%{&Jb zN`J!R6#&j~TC@U`%zw0`Zy>dyaFOp|h?&&^!^8b|`C0zNlUhN4()O~uKrCb4wSGH~ zC>Y*E5jY|}uQE6DBRqP+MFq7N)lQ#lZVi%Mlv^2CWckLB8K0i_HpNTeqKf-kY-YZ0 z-qqds9kj_TU9It>3kLsWAZYL3I`mzI*mbWc=0bWh^a3ucVxro zZ#Ycn-Jm_iREI=(s9$v1PBQKb)9!pZd>}7wtmz0_~o_>B1z=G z(mwrvR6LwsreAJ5)dDbWkGXD3&eeV!A~^i(!*gu&w>4NK z9r)3@v%(<`({C`F2P5cmpR|AHyBGZwaQ9Xh5C#KrdXuqErarj@30?(Sn;NfxGQY zpJ5fA)WWn!TDqL0cxQNZvq6n`A{$mq_8Nn^&4z~#Ba4SUKR?L3_m;H>I`DY2>?nMl zD(Tq{^>_zi?6o_1R1<%!PWB4&^FOpCm_Bc}8sG0ID*yc4oH(0W%zfq|1@=)v9F&eZ zf4n&f5E9zioZ5hz^U|E`NHG}7`<8s1xY@9zYZ0b!iJUdm^!xDcmG)eSt{wbIDtoK;6 zfUX0bPkrCY7TViZ<}_Dpp)3YdY-RV2%BnM#lSvxw-srYVKc&j(hm#h!gwN_`TsLrl(0>iYpmkfDV*@=_V^*iHUnqf%L*lymd*$NM>YK4`TwTgW9Ts8Mw> zxgm@l{e!{k+SfarlK990l;hao6Qn_$%7y%qAu*}lG_i#Xt7s}}dPB(c=IZY!pMj&-mUyA-a$71FOA~Q(t3J&6pZwK6hRil4tk&g z4x8oEz#2n;%uO{RUYP)Wkz_E|;N4JsQ@mTFrdto16RYXAYD5luIXZp`c}v)sF!^bP zj%VY&(sAF$hEH1ydeki3itO$C1DjYe8RV9%eSfMmFTbsA{8G2>;HJTY9iMv!yY7Uq z9u0RMxH!S;Luate0rz5I7!-mFh^<^qpB)H1`<5C`0WsDezdki}8>rzN<@%~(r@l$n RzkCsRsHq-TNj+rh`45`0$WH(O literal 0 HcmV?d00001 diff --git a/doc/zh/guide/deployDev/deploy_v6.md b/doc/zh/guide/deployDev/deploy_v6.md new file mode 100644 index 0000000..a5222b6 --- /dev/null +++ b/doc/zh/guide/deployDev/deploy_v6.md @@ -0,0 +1,46 @@ + + +私有化部署需要获取3个核心项目包, 包括 +- 可视化大屏编辑器(v6.dooring/) +- v6管理后台(v6.dooring/manage) +- 服务端项目(v6.dooring/server) + +获取以上三个核心源码工程需要满足商业授权协议, 具体可参考[商业授权方案](http://h5.dooring.cn/h5_plus/price) + +### 部署架构图 + +H5-dooring部署 + +部署流程如下: + +1. 下载3个源码工程, 安装依赖(npm install 或 yarn) +2. 打包2个前端工程至`server`的static目录下 +3. 在`server`下本地运行 `yarn start` 或 `npm start` 启动服务端进行本地测试 +4. 打包服务端代码, `yarn build` 生成 `dist` 目录, 建议使用 `pm2` 做`nodejs`服务的负载均衡, 运行 `pm2 start dist/index.js`启动生产环境代码 + +也可以将以上步骤集成到gitlab等CI, CD服务中, 进行自动化打包发布, 或者采用`docker`进行容器化部署. + +### 步骤3.4详细流程 + +#### 1. 安装项目环境 + +服务器需提前安装node和pm2, 将本项目上传至服务器指定的目录(如/www/activity), 进入项目目录, 执行: +``` +npm install +``` + +#### 2. 修改项目域名 + +进入`./src/config/index.js`, 修改`staticPath`变量为当前服务器域名/ip, 如`http://xxx.com`或`http://xxx.com:8080`(如非80端口) + +#### 3. 编译项目 + +执行`npm run build`编译项目, 生成`dist`目录 + +#### 4. 运行项目 +在项目根目录执行 `pm2 start dist/index.js`启动项目 diff --git a/doc/zh/guide/startedQuickly.md b/doc/zh/guide/startedQuickly.md index e602de5..2eed63c 100644 --- a/doc/zh/guide/startedQuickly.md +++ b/doc/zh/guide/startedQuickly.md @@ -1,5 +1,10 @@ # 快速上手 +## 从零搭建一个H5表单页面 + + + + ## 环境准备 首先得有 node,并确保 node 版本是 `10.13` 或以上,(mac/win 下推荐使用 n 来管理 node 版本)