Commit a6de3a60378fb8ad85f910986b2421515a736d82
1 parent
4723612f
docs: 🎉 english documents are online
Showing
23 changed files
with
791 additions
and
254 deletions
docs/.vuepress/config.js
| 1 | -const container = require('markdown-it-container'); | |
| 2 | - | |
| 3 | -const ogprefix = 'og: http://ogp.me/ns#'; | |
| 4 | -const title = '鲁班H5 文档'; | |
| 5 | -const description = '前后端均开源的H5制作平台,类似易企秀、百度H5、Maka、人人秀.'; | |
| 6 | -const color = '#2F80ED'; | |
| 7 | -const author = 'ly525'; | |
| 8 | -const url = 'https://ly525.github.io/luban-h5'; | |
| 9 | - | |
| 10 | 1 | module.exports = { |
| 11 | - head: [ | |
| 12 | - ['link', { rel: 'icon', href: `/luban-logo.png` }], | |
| 13 | - ['meta', { name: 'theme-color', content: color }], | |
| 14 | - ['meta', { prefix: ogprefix, property: 'og:title', content: title }], | |
| 15 | - ['meta', { prefix: ogprefix, property: 'twitter:title', content: title }], | |
| 16 | - ['meta', { prefix: ogprefix, property: 'og:type', content: 'article' }], | |
| 17 | - ['meta', { prefix: ogprefix, property: 'og:url', content: url }], | |
| 18 | - [ | |
| 19 | - 'meta', | |
| 20 | - { prefix: ogprefix, property: 'og:description', content: description }, | |
| 21 | - ], | |
| 22 | - [ | |
| 23 | - 'meta', | |
| 24 | - { prefix: ogprefix, property: 'og:image', content: `${url}luban-logo.png` }, | |
| 25 | - ], | |
| 26 | - [ | |
| 27 | - 'meta', | |
| 28 | - { prefix: ogprefix, property: 'og:article:author', content: author }, | |
| 29 | - ], | |
| 30 | - ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }], | |
| 31 | - [ | |
| 32 | - 'meta', | |
| 33 | - { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }, | |
| 34 | - ], | |
| 35 | - // ['link', { rel: 'apple-touch-icon', href: `/assets/apple-touch-icon.png` }], | |
| 36 | - // ['link', { rel: 'mask-icon', href: '/assets/safari-pinned-tab.svg', color: color }], | |
| 37 | - ['meta', { name: 'msapplication-TileImage', content: '/luban-logo.png' }], | |
| 38 | - ['meta', { name: 'msapplication-TileColor', content: color }], | |
| 39 | - ['script', { src: '/yandex.js' }], | |
| 40 | - ], | |
| 41 | - markdown: { | |
| 42 | - anchor: { | |
| 43 | - permalink: true, | |
| 2 | + title: '鲁班H5', | |
| 3 | + locales: { | |
| 4 | + '/': { | |
| 5 | + lang: 'en-US', | |
| 6 | + // description: 'OpenSource Mobile Page Builder&Generator with Drag&Drop\r\n前后端均开源的H5制作平台,类似易企秀、百度H5、Maka、人人秀', | |
| 7 | + description: 'OpenSource Mobile Page Builder&Generator', | |
| 8 | + }, | |
| 9 | + '/zh/': { | |
| 10 | + lang: 'zh-CN', | |
| 11 | + // description: '前后端均开源的H5制作平台,类似易企秀、百度H5、Maka、人人秀', | |
| 44 | 12 | }, |
| 45 | - // config: md => { | |
| 46 | - // md.use(require('markdown-it-decorate')) // https://github.com/vuejs/vuepress/issues/986 | |
| 47 | - // .use(require('markdown-it-task-lists')) | |
| 48 | - // .use(...createContainer('intro')) | |
| 49 | - // .use(...createContainer('windows')) | |
| 50 | - // .use(...createContainer('ubuntu')) | |
| 51 | - // .use(...createContainer('mac')) | |
| 52 | - // .use(...createContainer('note')); | |
| 53 | - // const vuepressTabs = require('vuepress-tabs'); | |
| 54 | - // vuepressTabs(md); | |
| 55 | - // }, | |
| 56 | - }, | |
| 57 | - extendMarkdown (md) { | |
| 58 | - md.use(require('markdown-it-decorate')) // https://github.com/vuejs/vuepress/issues/986 | |
| 59 | - .use(require('markdown-it-task-lists')) | |
| 60 | - .use(...createContainer('intro')) | |
| 61 | - .use(...createContainer('windows')) | |
| 62 | - .use(...createContainer('ubuntu')) | |
| 63 | - .use(...createContainer('mac')) | |
| 64 | - .use(...createContainer('note')); | |
| 65 | - const vuepressTabs = require('vuepress-tabs'); | |
| 66 | - vuepressTabs(md); | |
| 67 | 13 | }, |
| 68 | - title, | |
| 69 | - description, | |
| 70 | - // why '/documentation' not work for surge.sh | |
| 71 | - // base: '/' for surge.sh | |
| 72 | - // base '/luban-h5/' for github pages | |
| 73 | - base: '/luban-h5/', | |
| 74 | - // ga: '', | |
| 14 | + serviceWorker: {}, | |
| 75 | 15 | themeConfig: { |
| 76 | - nav: [ | |
| 77 | - { text: 'Document(En)', link: 'https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us' }, | |
| 78 | - { text: 'Website', link: 'https://api.luban-h5.wxjcart.com/main' }, | |
| 79 | - ], | |
| 80 | - versions: [ | |
| 81 | - ['zh', '/zh/'], | |
| 82 | - ['en', '/en/'], | |
| 83 | - ], | |
| 84 | 16 | repo: 'ly525/luban-h5', |
| 85 | - // website: 'https://ly525.github.io/luban-h5', | |
| 86 | - // slack: 'https://github.com/ly525/luban-h5', | |
| 87 | - // blog: 'https://github.com/ly525/luban-h5', | |
| 88 | - // liveDemo: 'https://ly525.github.io/luban-h5', | |
| 89 | - docsDir: 'docs', | |
| 90 | - // algolia: { | |
| 91 | - // apiKey: '0d43b0d883366a06e0f2ff8fe988ae51', | |
| 92 | - // indexName: 'luban-h5-docs', | |
| 93 | - // }, | |
| 17 | + lastUpdated: 'Last Updated', | |
| 94 | 18 | editLinks: true, |
| 95 | - editLinkText: 'Improve this page', | |
| 96 | - docsBranch: 'dev', | |
| 97 | - serviceWorker: true, | |
| 98 | - hiddenLinks: [ | |
| 99 | - '/zh/cli/CLI.html', | |
| 100 | - '/zh/api-reference/reference.html', | |
| 101 | - ], | |
| 102 | - sidebar: { | |
| 103 | - '/zh/': [ | |
| 104 | - { | |
| 105 | - collapsable: false, | |
| 106 | - title: '🚀 Getting started', | |
| 107 | - children: [ | |
| 108 | - '/zh/getting-started/introduction', | |
| 109 | - '/zh/getting-started/features', | |
| 110 | - '/zh/getting-started/quick-start', | |
| 111 | - '/zh/getting-started/engine', | |
| 112 | - '/zh/getting-started/code-structure', | |
| 113 | - '/zh/getting-started/deployment', | |
| 114 | - '/zh/getting-started/feedback', | |
| 115 | - '/zh/getting-started/qa', | |
| 116 | - '/zh/getting-started/discussion', | |
| 117 | - ], | |
| 118 | - }, | |
| 119 | - { | |
| 120 | - collapsable: true, | |
| 121 | - title: '💡 实现思路', | |
| 122 | - children: [ | |
| 123 | - '/zh/guides/form-submit', | |
| 19 | + docsDir: 'docs', | |
| 20 | + serviceWorker: { | |
| 21 | + updatePopup: { | |
| 22 | + message: 'New content is available.', | |
| 23 | + buttonText: 'Refresh', | |
| 24 | + }, | |
| 25 | + }, | |
| 26 | + locales: { | |
| 27 | + '/': { | |
| 28 | + selectText: 'Languages', | |
| 29 | + label: 'English', | |
| 30 | + editLinkText: 'Edit this page on GitHub', | |
| 31 | + nav: [ | |
| 32 | + // { text: 'Guide', link: '/guide/' }, | |
| 33 | + // { text: 'Config', link: '/config/' }, | |
| 34 | + // { text: 'API', link: '/api/' }, | |
| 35 | + { text: 'Website', link: 'https://api.luban-h5.wxjcart.com/' }, | |
| 36 | + { text: 'Changelog', link: 'https://github.com/ly525/luban-h5/releases' }, | |
| 37 | + ], | |
| 38 | + sidebar: { | |
| 39 | + '/': [ | |
| 40 | + { | |
| 41 | + collapsable: false, | |
| 42 | + title: '🚀 Getting started', | |
| 43 | + children: [ | |
| 44 | + '/en/getting-started/introduction', | |
| 45 | + '/en/getting-started/features', | |
| 46 | + '/en/getting-started/quick-start', | |
| 47 | + '/en/getting-started/deployment', | |
| 48 | + '/en/getting-started/discussion', | |
| 49 | + ], | |
| 50 | + }, | |
| 51 | + { | |
| 52 | + collapsable: true, | |
| 53 | + title: '💡Implementation', | |
| 54 | + children: [ | |
| 55 | + '/en/implementation/code-structure', | |
| 56 | + '/en/implementation/form-submit', | |
| 57 | + ], | |
| 58 | + }, | |
| 59 | + { | |
| 60 | + collapsable: true, | |
| 61 | + title: '🔌 Local plugins', | |
| 62 | + children: [ | |
| 63 | + '/en/plugin-development/quick-start', | |
| 64 | + ], | |
| 65 | + }, | |
| 124 | 66 | ], |
| 125 | 67 | }, |
| 126 | - { | |
| 127 | - collapsable: true, | |
| 128 | - title: '🔌 Local plugins', | |
| 129 | - children: [ | |
| 130 | - '/zh/plugin-development/quick-start', | |
| 68 | + }, | |
| 69 | + '/zh/': { | |
| 70 | + selectText: '选择语言', | |
| 71 | + label: '简体中文', | |
| 72 | + editLinkText: '在 GitHub 上编辑此页', | |
| 73 | + nav: [ | |
| 74 | + // { text: '指南', link: '/zh/guide/' }, | |
| 75 | + // { text: '配置', link: '/zh/config/' }, | |
| 76 | + // { text: 'API', link: '/zh/api/' }, | |
| 77 | + // { text: '插件', link: '/zh/plugin/' }, | |
| 78 | + { text: '首页', link: 'https://api.luban-h5.wxjcart.com/' }, | |
| 79 | + { text: '发布日志', link: 'https://github.com/ly525/luban-h5/releases' }, | |
| 80 | + ], | |
| 81 | + sidebar: { | |
| 82 | + '/': [ | |
| 83 | + { | |
| 84 | + collapsable: false, | |
| 85 | + title: '🚀 Getting started', | |
| 86 | + children: [ | |
| 87 | + '/zh/getting-started/introduction', | |
| 88 | + '/zh/getting-started/features', | |
| 89 | + '/zh/getting-started/quick-start', | |
| 90 | + '/zh/getting-started/deployment', | |
| 91 | + '/zh/getting-started/discussion', | |
| 92 | + ], | |
| 93 | + }, | |
| 94 | + { | |
| 95 | + collapsable: false, | |
| 96 | + title: '💡实现原理', | |
| 97 | + children: [ | |
| 98 | + '/zh/implementation/code-structure', | |
| 99 | + '/zh/implementation/form-submit', | |
| 100 | + ], | |
| 101 | + }, | |
| 102 | + { | |
| 103 | + collapsable: true, | |
| 104 | + title: '🔌 Local plugins', | |
| 105 | + children: [ | |
| 106 | + '/zh/plugin-development/quick-start', | |
| 107 | + ], | |
| 108 | + }, | |
| 131 | 109 | ], |
| 132 | 110 | }, |
| 133 | - // { | |
| 134 | - // collapsable: false, | |
| 135 | - // title: '📚 Resources', | |
| 136 | - // children: [ | |
| 137 | - // [ | |
| 138 | - // 'https://github.com/ly525/luban-h5-docs/blob/master/CONTRIBUTING.md', | |
| 139 | - // 'Contributing guide', | |
| 140 | - // ], | |
| 141 | - // '/zh/migration-guide/', | |
| 142 | - // ], | |
| 143 | - // }, | |
| 144 | - ], | |
| 111 | + }, | |
| 145 | 112 | }, |
| 146 | 113 | }, |
| 147 | 114 | plugins: { |
| ... | ... | @@ -158,21 +125,12 @@ module.exports = { |
| 158 | 125 | prefix: '[From Comment]', |
| 159 | 126 | }, |
| 160 | 127 | }, |
| 161 | -}; | |
| 162 | - | |
| 163 | -function createContainer(className) { | |
| 164 | - return [ | |
| 165 | - container, | |
| 166 | - className, | |
| 167 | - { | |
| 168 | - render(tokens, idx) { | |
| 169 | - const token = tokens[idx]; | |
| 170 | - if (token.nesting === 1) { | |
| 171 | - return `<div class="${className} custom-block">\n`; | |
| 172 | - } else { | |
| 173 | - return `</div>\n`; | |
| 174 | - } | |
| 175 | - }, | |
| 176 | - }, | |
| 177 | - ]; | |
| 178 | -} | |
| 128 | + // plugins: [ | |
| 129 | + // [ | |
| 130 | + // '@vuepress/google-analytics', | |
| 131 | + // { | |
| 132 | + // ga: 'UA-149864185-1', | |
| 133 | + // }, | |
| 134 | + // ], | |
| 135 | + // ], | |
| 136 | +}; | |
| 179 | 137 | \ No newline at end of file | ... | ... |
docs/README.md
| 1 | 1 | --- |
| 2 | -meta: | |
| 3 | - - http-equiv: refresh | |
| 4 | - content: 0;url=/luban-h5/zh/ | |
| 2 | +home: true | |
| 3 | +actionText: Get Started → | |
| 4 | +actionLink: /en/getting-started/introduction | |
| 5 | +features: | |
| 6 | + - title: 表单提交 | |
| 7 | + details: 支持表单组件,即时倾听用户反馈,可以在后台查看和下载用户数据 | |
| 8 | + - title: 轻松建站 | |
| 9 | + details: 丰富的组件系统、支持可视化编辑、自由拖拽排版、实时预览、在线访问 | |
| 10 | + - title: 导入 PSD | |
| 11 | + details: 支持一键导入PSD,将设计师的创意转换为 H5,快速查看效果、反馈、上线 | |
| 12 | +footer: GPL 3.0 Licensed | Copyright © 2019-present | |
| 5 | 13 | --- |
| 14 | + | |
| 15 | +## 社区与交流群 | |
| 16 | +#### 论坛地址:[鲁班H5-社区](https://support.qq.com/products/93432/) | |
| 17 | +#### 交流群 | |
| 18 | +| 钉钉群 | 微信公众号 | 微信 | | |
| 19 | +|---|---|---| | |
| 20 | +| <img src="https://user-images.githubusercontent.com/12668546/61447488-a379f700-a983-11e9-9956-139352a2585d.png" width="200" />| <img src="https://user-images.githubusercontent.com/12668546/65471913-ab827580-dea3-11e9-919c-870c9605c60f.png" width="200" /> | <img src="https://user-images.githubusercontent.com/12668546/66585418-5cce1e80-ebb9-11e9-91c0-56f658f09e27.png" width="200" /> <br />请备注:鲁班H5交流| | |
| 21 | + | |
| 22 | +--- | |
| 23 | + | |
| 24 | +> 如果有问题,欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | ... | ... |
docs/deploy.sh
docs/en/README.md
0 → 100755
| 1 | +::: intro | |
| 2 | +<!--  --> | |
| 3 | +## 鲁班H5 | |
| 4 | +鲁班H5是基于Vue2.0开发的,通过拖拽+配置的形式,生成页面的工具。 | |
| 5 | + | |
| 6 | +<img src="https://s2.ax1x.com/2019/10/11/u7WzUx.gif" height="290" /> | |
| 7 | +<!-- ### 鲁班H5是什么? --> | |
| 8 | + | |
| 9 | +<!-- {p:.flex.justify-around} --> | |
| 10 | + | |
| 11 | +--- | |
| 12 | +::: | |
| 13 | + | |
| 14 | +<Vssue issueId="14" /> | ... | ... |
docs/en/getting-started/deployment.md
0 → 100755
| 1 | +# Deployment | |
| 2 | + | |
| 3 | + | |
| 4 | +## Aliyun/Tencent Cloud/Digital Ocean | |
| 5 | + | |
| 6 | +#### 1. on your server(centos) | |
| 7 | +First of all, you need to install some basic software packages, please install them yourself (refer to its official website documents for details) | |
| 8 | + | |
| 9 | +1. Node | |
| 10 | +1. Npm | |
| 11 | +1. Nginx | |
| 12 | +1. Yarn | |
| 13 | +1. Pm2 | |
| 14 | + | |
| 15 | +> The following scripts are just for your information | |
| 16 | + | |
| 17 | + | |
| 18 | +```bash | |
| 19 | +# install yarn | |
| 20 | +curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo | |
| 21 | +sudo yum install yarn -y | |
| 22 | + | |
| 23 | +# install nginx | |
| 24 | +sudo yum install nginx -y | |
| 25 | +# install pm2 | |
| 26 | +npm install pm2 -g | |
| 27 | +# pm2 examples | |
| 28 | +# pm2 start server.js | |
| 29 | +# pm2 stop server | |
| 30 | +# pm2 restart server | |
| 31 | +# pm2 stop all | |
| 32 | + | |
| 33 | +``` | |
| 34 | + | |
| 35 | +Nginx profile demo | |
| 36 | + | |
| 37 | +```nginx | |
| 38 | +server { | |
| 39 | + listen 443; | |
| 40 | + server_name your_domain; | |
| 41 | + | |
| 42 | + client_body_buffer_size 20M; | |
| 43 | + client_max_body_size 20M; | |
| 44 | + proxy_buffer_size 20M; | |
| 45 | + proxy_buffers 32 20M; | |
| 46 | + proxy_busy_buffers_size 20M; | |
| 47 | + | |
| 48 | + # https ssl config | |
| 49 | + ssl on; | |
| 50 | + ssl_certificate cert/your-https.pem; | |
| 51 | + ssl_certificate_key cert/your-https.key; | |
| 52 | + ssl_session_timeout 5s; | |
| 53 | + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; | |
| 54 | + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | |
| 55 | + ssl_prefer_server_ciphers on; | |
| 56 | + | |
| 57 | + gzip on; | |
| 58 | + gzip_min_length 1k; | |
| 59 | + gzip_buffers 4 16k; | |
| 60 | + gzip_disable "MSIE [1-6]\."; | |
| 61 | + gzip_comp_level 3; | |
| 62 | + gzip_types image/png application/json text/plain application/x-javascript text/css application/xml text/javascript application/javascript; | |
| 63 | + | |
| 64 | + | |
| 65 | + location ~ ^/(upload|content-manager|users-permissions|works|admin|psd-files|workforms|third-libs|engine-assets) { | |
| 66 | + proxy_set_header Host $host; | |
| 67 | + proxy_set_header X-Real-IP $remote_addr; | |
| 68 | + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 69 | + proxy_pass http://localhost:1337; | |
| 70 | + } | |
| 71 | + location / { | |
| 72 | + | |
| 73 | + root /home/centos/luban-h5-dist/front-end/; | |
| 74 | + #try_files $uri $uri/ /index.html; | |
| 75 | + } | |
| 76 | + | |
| 77 | +} | |
| 78 | +``` | |
| 79 | + | |
| 80 | +#### 2. on local machine | |
| 81 | +Do the following in the root path of the project: | |
| 82 | + | |
| 83 | +```bash | |
| 84 | +yarn add flightplan | |
| 85 | +npm run deploy:esc // Elastic Compute Service | |
| 86 | +``` | |
| 87 | + | |
| 88 | +Local deployment script | |
| 89 | + | |
| 90 | +```javascript | |
| 91 | +var os = require('os'); | |
| 92 | +var plan = require('flightplan'); | |
| 93 | + | |
| 94 | +// configuration | |
| 95 | +local_dist_dir = './'; // root path for luban-h5 | |
| 96 | +remote_project_dir = '~/codebase/luban/luban-h5'; // root path for luban-h5 on server | |
| 97 | +remote_project_api_dir = '~/codebase/luban/luban-h5/back-end/h5-api'; // api root path for luban-h5 on server | |
| 98 | + | |
| 99 | +// production server config | |
| 100 | +plan.target('production', { | |
| 101 | + host: 'your host ip', // your server ip | |
| 102 | + username: 'centos', // your server username | |
| 103 | + // privateKey should be absolute path | |
| 104 | + privateKey: `${os.homedir}/.ssh/id_rsa` // your privateKey to rsync files | |
| 105 | +}); | |
| 106 | + | |
| 107 | +/** | |
| 108 | + * 1. setup folders | |
| 109 | + * 2. sync files | |
| 110 | + * 3. install dependencies | |
| 111 | + * 4. (re)start api service | |
| 112 | + * 5. soft link nginx conf | |
| 113 | + * | |
| 114 | + */ | |
| 115 | + | |
| 116 | +// init remove server path | |
| 117 | +// plan.remote(remote => { | |
| 118 | +// // remove.exec(`mkdir -p ${remote_project_dir}`) | |
| 119 | +// remove.sudo(`yum install nginx -y`) | |
| 120 | +// remote.with(`mkdir -p ${remote_project_dir}`, () => { | |
| 121 | +// // remote.log('Install dependencies'); | |
| 122 | +// // remote.exec('yarn'); | |
| 123 | +// remote.exec('pwd'); | |
| 124 | +// }); | |
| 125 | +// }); | |
| 126 | + | |
| 127 | + | |
| 128 | +// run commands on localhost | |
| 129 | +plan.local(local => { | |
| 130 | + // local.log('=> Run build'); | |
| 131 | + // local.exec('npm run build'); | |
| 132 | + // local.log('=> Build finish'); | |
| 133 | + | |
| 134 | + local.log('=> Copy files to remote hosts'); | |
| 135 | + // TODO reference: https://github.com/pstadler/flightplan/issues/142 | |
| 136 | + local.with(`cd ${local_dist_dir}`, () => { | |
| 137 | + // const filesToCopy = local.exec('find . -type f', { silent: true }) | |
| 138 | + const filesToCopy = local.git('ls-files', {silent: true}) // get list of files under version control | |
| 139 | + | |
| 140 | + local.transfer(filesToCopy, remote_project_dir); | |
| 141 | + local.log('=> Copy finish'); | |
| 142 | + | |
| 143 | + }); | |
| 144 | +}); | |
| 145 | + | |
| 146 | +// run commands on the target's remote hosts | |
| 147 | +plan.remote(remote => { | |
| 148 | + remote.with(`cd ${remote_project_api_dir}`, () => { | |
| 149 | + remote.log('Install dependencies'); | |
| 150 | + remote.exec('yarn'); | |
| 151 | + remote.exec('pm2 restart server') | |
| 152 | + }); | |
| 153 | +}); | |
| 154 | +``` | |
| 155 | + | |
| 156 | +#### Some problems that may be encountered in the middle: | |
| 157 | + | |
| 158 | +1. `Cannot parse privateKey: Unsupported key format` <br />For solutions, please refer: [Cannot parse privateKey: Unsupported key format](https://stackoverflow.com/questions/53400628/cannot-parse-privatekey-unsupported-key-format) | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | +## Docker deployment | |
| 163 | +> TODO | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | +## Heroku | |
| 168 | +> Because Strapi + postgresql still has some pits on Heroku and needs official solution, this solution is temporarily pending. | |
| 169 | + | ... | ... |
docs/en/getting-started/discussion.md
0 → 100755
docs/en/getting-started/features.md
0 → 100755
| 1 | +# Features | |
| 2 | + | |
| 3 | +### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#53733cd6)Editor | |
| 4 | +- [x] Reference line | |
| 5 | +- [x] Adsorption line, assembly alignment | |
| 6 | +- [x] Towing change component shape | |
| 7 | +- [x] Elements: copying (canvas) | |
| 8 | +- [x] Elements: delete (canvas) | |
| 9 | +- [x] Elements: editing (canvas) | |
| 10 | +- [x] Page: Add | |
| 11 | +- [x] Page: copy | |
| 12 | +- [x] Page: delete | |
| 13 | +- [x] Quick Preview | |
| 14 | +- [x] Undo, redo | |
| 15 | + | |
| 16 | + | |
| 17 | +### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#40fb9f22)Component System | |
| 18 | + | |
| 19 | +#### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#GQa0Y)Basic component | |
| 20 | + | |
| 21 | +- [x] Ordinary text | |
| 22 | +- [x] Normal button | |
| 23 | +- [x] Ordinary picture | |
| 24 | +- [ ] Background | |
| 25 | +- [ ] Video (Iframe form) | |
| 26 | + | |
| 27 | + | |
| 28 | +#### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#Ibh4H)Form Component | |
| 29 | + | |
| 30 | +- [x] Form button | |
| 31 | +- [x] Form input box | |
| 32 | +- [x] Form List | |
| 33 | +- [x] Form multiple selection box | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | +### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#4uFaO)Enhancements [open source] | |
| 38 | + | |
| 39 | +- [x] Template list | |
| 40 | +- [x] Making H5 based on template | |
| 41 | +- [x] Save work as template | |
| 42 | +- [ ] Picture Library | |
| 43 | +- [ ] Third party copyrighted picture search | |
| 44 | +- [ ] SSO login, third party login | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | +### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#kDYKy)Enhancements [may not open source] | |
| 49 | +> Has been investigated, can be realized, advanced functions, not yet open | |
| 50 | + | |
| 51 | +- [x] Upload PSD, one-click conversion to H5 | |
| 52 | +- [x] Custom script | |
| 53 | + | |
| 54 | +### [](https://www.yuque.com/liuyan-ew1qk/oh5d0n/siwn9y?translate=en#289dcb17)Backend API | |
| 55 | + | |
| 56 | +- [x] Create, save, and update works | |
| 57 | +- [x] Form data collection | |
| 58 | +- [x] Form data display | |
| 59 | +- [x] Online Preview | |
| 60 | +- [x] QR code preview | ... | ... |
docs/en/getting-started/introduction.md
0 → 100755
| 1 | +# Introduction | |
| 2 | +<p align="left"> | |
| 3 | +<a href="https://github.com/ly525/luban-h5/releases"><img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/ly525/luban-h5"></a> | |
| 4 | +</p> | |
| 5 | + | |
| 6 | +### What's LuBan-H5? | |
| 7 | +> LuBan-H5 is a mobile page builder based on Vue.js, which is similar with [Amolink](www.amolink.com) [eqx](http://www.eqxiu.com)(it's a chinese website, you may need to translate the page). It also supports parsing PSD file to HMTL5 Page | |
| 8 | + | |
| 9 | +### Demo | |
| 10 | +> [Preview Website](https://api.luban-h5.wxjcart.com) | |
| 11 | + | |
| 12 | +<img src="https://s2.ax1x.com/2019/10/11/u7WzUx.gif" style="margin: 10px;" width="60%" /> | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | +### Features | |
| 17 | +1. Editor | |
| 18 | + - [x] Reference Line/GuideLine | |
| 19 | + - [x] Adsorption Line | |
| 20 | + - [x] Change plugin shape by drag-and-drop | |
| 21 | + - [x] Edit Element (Canvas) | |
| 22 | + - [x] Copy Element (Canvas) | |
| 23 | + - [x] Delete Element (Canvas) | |
| 24 | + - [x] Edit Page | |
| 25 | + - [x] Copy Page | |
| 26 | + - [x] Delete Page | |
| 27 | + - [x] Quick Preview | |
| 28 | + - [x] Undo、Redo | |
| 29 | + | |
| 30 | +2. Plugin System | |
| 31 | + | |
| 32 | + - [x] Text | |
| 33 | + - [x] Normal Button | |
| 34 | + - [x] Form Button | |
| 35 | + - [x] Form Field | |
| 36 | + - [x] Picture | |
| 37 | + - [ ] Background Image | |
| 38 | + - [ ] Video (Iframe format) | |
| 39 | + | |
| 40 | +3. enhanced function | |
| 41 | + - [ ] parsing PSD file to HTML Page | |
| 42 | + - [ ] Photo Gallery | |
| 43 | + - [ ] Third Party uncopyrighted Image Search | |
| 44 | + | |
| 45 | + | |
| 46 | +4. back-end API | |
| 47 | + - [x] create work | |
| 48 | + - [x] save work | |
| 49 | + - [x] update work | |
| 50 | + - [x] Form Statistics | |
| 51 | + - [x] Online Preview | |
| 52 | + - [x] QR Code Preview | |
| 53 | + | |
| 54 | +--- | |
| 55 | + | |
| 56 | +### Installs | |
| 57 | +> proj: project root path | |
| 58 | +please refer to: [`Document/Quick Start`](https://www.yuque.com/liuyan-ew1qk/oh5d0n/gpfy6g?language=en-us) | |
| 59 | + | |
| 60 | + | |
| 61 | +--- | |
| 62 | +### More Explanation | |
| 63 | +#### Front-End Component Explanation | |
| 64 | +1. `lbp-`: `lu-ban-plugin-`, means `Luban H5 plugin`, location: `proj/front-end/h5/src/components/plugins` | |
| 65 | + | |
| 66 | + | |
| 67 | +#### Build With (current) | |
| 68 | + 1. Front end: Vue.js | |
| 69 | + 2. Back End: Strapi | |
| 70 | + 3. Storage: Sqlite | |
| 71 | + | |
| 72 | + | |
| 73 | +Read more here [Online English Document](https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us) | |
| 74 | + | |
| 75 | +--- | |
| 76 | + | |
| 77 | +<Vssue issueId="12" /> | |
| 0 | 78 | \ No newline at end of file | ... | ... |
docs/en/getting-started/quick-start.md
0 → 100755
| 1 | +# Quick Start | |
| 2 | + | |
| 3 | +# commands commonly used for local dev | |
| 4 | +```bash | |
| 5 | +npm run dev # dev back-end or docs | |
| 6 | +yarn serve # dev front-end | |
| 7 | +``` | |
| 8 | + | |
| 9 | +# Overview | |
| 10 | + | |
| 11 | +## Basic Concepts | |
| 12 | +> First of all, you need to know about the related ecology of Node. js and the installation of Node. js. | |
| 13 | +> We will take a minute to introduce the basic concepts. By default, you know the basic operations of Linux and Git. | |
| 14 | +> You can read the [Basic installation Requirements](https://strapi.io/documentation/3.0.0-beta.x/getting-started/install-requirements.html#basic-installation-requirements) | |
| 15 | + | |
| 16 | +## Build With(current version) | |
| 17 | +Vue.js: Front-end framework<br />Strapi.js: Open source Node.js Headless CMS to easily build customisable APIs<br />Sqlite: Database | |
| 18 | + | |
| 19 | + | |
| 20 | +# Setup | |
| 21 | + | |
| 22 | +1. the API is powered by strapi.js | |
| 23 | + | |
| 24 | +## Setup backend | |
| 25 | + | |
| 26 | +### 1. quick start | |
| 27 | +```bash | |
| 28 | +# by default, the current path is the root path for luban-h5 | |
| 29 | +cd back-end/h5-api | |
| 30 | +yarn install # install dependencies | |
| 31 | +yarn add psd # install dependency of psd | |
| 32 | + | |
| 33 | +# install ejs engine, mainly used for preview work | |
| 34 | +yarn add strapi-hook-ejs | |
| 35 | + | |
| 36 | +# modify h5-api/hook.json (next paragraph) | |
| 37 | +# see more details about strapi-hook-ejs:https://github.com/strapi/strapi/tree/master/packages/strapi-hook-ejs#configuration | |
| 38 | + | |
| 39 | +npm run dev # local dev | |
| 40 | +# additional notes: run `npm run localdev` if you want to debug it in vscode | |
| 41 | + | |
| 42 | +# #!en: default database is sqlite3(db location: h5-api/.tmp/data.db) | |
| 43 | + | |
| 44 | +# 访问 http://locahost:1337/admin | |
| 45 | +# visit http://locahost:1337/admin | |
| 46 | +``` | |
| 47 | + | |
| 48 | +`h5-api/hook. json` is configured as follows: | |
| 49 | + | |
| 50 | +```json | |
| 51 | +{ | |
| 52 | + "timeout": 3000, | |
| 53 | + "load": { | |
| 54 | + "before": [], | |
| 55 | + "order": [ | |
| 56 | + "Define the hooks' load order by putting their names in this array in the right order" | |
| 57 | + ], | |
| 58 | + "after": [] | |
| 59 | + }, | |
| 60 | + "ejs": { | |
| 61 | + "enabled": true, | |
| 62 | + "viewExt": "ejs", | |
| 63 | + "partial": true, | |
| 64 | + "cache": false, | |
| 65 | + "debug": false, | |
| 66 | + "layout": false | |
| 67 | + } | |
| 68 | +} | |
| 69 | +``` | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | +### 2. Something important | |
| 74 | + | |
| 75 | +1. `403 Forbidden` :Please follow the instructions to config the API can be publicly accessible: `[Roles And Permission] -> [Public] - [Permissions]` | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | +##### Used for upload work cover | |
| 83 | + | |
| 84 | + | |
| 85 | +2. `ctx.render is not a function` <br />solution:`Setup backend/quick start/strap-hook-ejs` | |
| 86 | + | |
| 87 | +<br /> | |
| 88 | +```javascript | |
| 89 | +error TypeError: ctx.render is not a function | |
| 90 | + at previewOne (~/luban-h5/back-end/h5-api/api/work/controllers/Work.js:13:16) | |
| 91 | +``` | |
| 92 | + | |
| 93 | + | |
| 94 | +## setup front-end | |
| 95 | + | |
| 96 | +### 1. quick start | |
| 97 | +```bash | |
| 98 | +# by default, the current path is the root path of luban-h5 | |
| 99 | +cd front-end/h5 | |
| 100 | + | |
| 101 | +yarn # install dependencies | |
| 102 | +yarn serve # develop | |
| 103 | + | |
| 104 | +# more commands | |
| 105 | +# please refer to project/front-end/h5/package.json | |
| 106 | +``` | |
| 107 | + | |
| 108 | +### 2. build preview engine | |
| 109 | + | |
| 110 | +#### Basic | |
| 111 | +[luban-h5/back-end/h5-api/api/work/controllers/Work.js/previewOne](https://github.com/ly525/luban-h5/blob/bd486ce16fc24bfd7030fc51857a579776e12e68/back-end/h5-api/api/work/controllers/Work.js#L12) | |
| 112 | + | |
| 113 | + | |
| 114 | +```js | |
| 115 | +previewOne: async (ctx) => { | |
| 116 | + const work = await strapi.services.work.findOne(ctx.params); | |
| 117 | + return ctx.render('engine', { work }); | |
| 118 | +}, | |
| 119 | +``` | |
| 120 | + | |
| 121 | +#### How to build preview engine | |
| 122 | +1. cd `front-end/h5`, run `yarn engine:build` | |
| 123 | +2. after build finished, an folder named `engine-assets` is auto generated at `back-end/h5-api/public` | |
| 124 | +3. `preview.vue` is preview modal, the mobile div is an iframe which a wrapper for builded `engine-entry` | |
| 125 | + | |
| 126 | + | |
| 127 | +### 3. explanation for front-end components | |
| 128 | + | |
| 129 | +1. `lbp-` | |
| 130 | +> `lu-ban-plugin: plugins for luban-h5`:location: `front-end/h5/src/components/plugins` | ... | ... |
docs/en/implementation/code-structure.md
0 → 100755
| 1 | +# Code Structure | |
| 2 | + | |
| 3 | +## Front End | |
| 4 | +It is recommended to look at `router.js` first, and then start with `front-end/h5/src/views/Editor.vue`. Here is the entrance to the Editor. | |
| 5 | + | |
| 6 | + | |
| 7 | +```JavaScript | |
| 8 | +front-end/h5/src # source code for front end, includes: editor, work-manager, form-stat etc. | |
| 9 | +├── assets | |
| 10 | +│ ├── 403.svg | |
| 11 | +│ ├── 404.svg | |
| 12 | +│ ├── 500.svg | |
| 13 | +│ ├── logo.png | |
| 14 | +│ ├── placeholder-for-work.svg | |
| 15 | +│ └── unauth-page-illustration.svg | |
| 16 | +├── components | |
| 17 | +│ ├── core # core | |
| 18 | +│ │ ├── editor # editor module | |
| 19 | +│ │ │ ├── canvas # cavas:edit model + preview mode | |
| 20 | +│ │ │ │ ├── edit.js # canvas for edit mode | |
| 21 | +│ │ │ │ └── preview.js # canvas for preview mode | |
| 22 | +│ │ │ ├── edit-panel # config panel for actions, plugin props, animation, actions etc. | |
| 23 | +│ │ │ │ ├── action.js # | |
| 24 | +│ │ │ │ ├── props.js # | |
| 25 | +│ │ │ │ └── script.js # | |
| 26 | +│ │ │ ├── header | |
| 27 | +│ │ │ ├── modals | |
| 28 | +│ │ │ │ └── preview.vue # preivew modal | |
| 29 | +│ │ │ ├── shortcuts-panel # the shortcut buttons for plugins | |
| 30 | +│ │ │ │ ├── index.js | |
| 31 | +│ │ │ │ └── shortcut-button.js | |
| 32 | +│ │ │ └── index.js | |
| 33 | +│ │ ├── models # | |
| 34 | +│ │ │ ├── element.js # | |
| 35 | +│ │ │ ├── page.js # | |
| 36 | +│ │ │ └── work.js # | |
| 37 | +│ │ ├── styles | |
| 38 | +│ │ │ └── index.scss | |
| 39 | +│ │ └── support # | |
| 40 | +│ │ └── shape.js # drag&drop to change the shape of an element | |
| 41 | +│ ├── plugins # plugin list: button, form (submit button + input box), text, pictures etc. | |
| 42 | +│ │ ├── lbp-button.js | |
| 43 | +│ │ ├── lbp-form-button.js | |
| 44 | +│ │ ├── lbp-form-input.js | |
| 45 | +│ │ ├── lbp-picture-placeholder.jpg | |
| 46 | +│ │ ├── lbp-picture.js | |
| 47 | +│ │ └── lbp-text.js | |
| 48 | +│ └── HelloWorld.vue | |
| 49 | +├── constants # | |
| 50 | +│ └── api.js # | |
| 51 | +├── mixins # | |
| 52 | +│ └── load-plugins.js # load plugins | |
| 53 | +├── pages | |
| 54 | +│ ├── editor # entry for editor | |
| 55 | +│ ├── home | |
| 56 | +│ └── index | |
| 57 | +├── store | |
| 58 | +│ ├── modules | |
| 59 | +│ │ ├── editor.js | |
| 60 | +│ │ ├── element.js | |
| 61 | +│ │ ├── loading.js | |
| 62 | +│ │ ├── page.js | |
| 63 | +│ │ ├── user.js | |
| 64 | +│ │ ├── visible.js | |
| 65 | +│ │ └── work.js | |
| 66 | +│ ├── plugins # vuex plugins | |
| 67 | +│ │ └── undo-redo # | |
| 68 | +│ │ ├── History.js | |
| 69 | +│ │ └── index.js | |
| 70 | +│ └── index.js | |
| 71 | +├── utils | |
| 72 | +│ ├── element.js | |
| 73 | +│ ├── http.js | |
| 74 | +│ └── strapi.js | |
| 75 | +├── views | |
| 76 | +│ ├── work-manager | |
| 77 | +│ │ ├── form-stat | |
| 78 | +│ │ │ ├── column.js | |
| 79 | +│ │ │ ├── detail.vue | |
| 80 | +│ │ │ └── index.vue | |
| 81 | +│ │ ├── index.vue | |
| 82 | +│ │ └── list.vue | |
| 83 | +│ ├── About.vue | |
| 84 | +│ ├── Editor.vue # a wrapper around the core editor, where the list of plug-ins is loaded | |
| 85 | +│ └── Home.vue | |
| 86 | +├── App.vue | |
| 87 | +├── engine-entry.js # preview engine for previewing and viewing mobie page on your phone | |
| 88 | +├── main.js # entry for editor + work-manager | |
| 89 | +├── registerServiceWorker.js | |
| 90 | +└── router.js # | |
| 91 | +``` | |
| 92 | + | |
| 93 | +--- | |
| 94 | + | |
| 95 | +<Vssue issueId="9" /> | |
| 96 | +Editor + work-manager (work management page) entry | |
| 97 | + | ... | ... |
docs/zh/guides/form-submit.md renamed to docs/en/implementation/form-submit.md
docs/en/plugin-development/quick-start.md
0 → 100755
docs/zh/README.md
docs/zh/getting-started/deployment.md
| 1 | -# Deployment/部署 | |
| 1 | +# 部署 | |
| 2 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 2 | 3 | |
| 3 | 4 | ## 阿里云/腾讯云/Digital Ocean |
| 4 | -#### 云服务器(centos) | |
| 5 | -首先需要安装一些基础的软件包,请自行安装(具体参照其官网文档) | |
| 6 | - | |
| 7 | -- node | |
| 8 | -- npm | |
| 9 | -- nginx | |
| 10 | -- yarn | |
| 11 | -- pm2 | |
| 12 | - | |
| 13 | -以下脚本仅供参考 | |
| 14 | - | |
| 15 | -```bash | |
| 16 | -# install yarn | |
| 17 | -curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo | |
| 18 | -sudo yum install yarn -y | |
| 19 | - | |
| 20 | -# install nginx | |
| 21 | -sudo yum install nginx -y | |
| 22 | -# install pm2 | |
| 23 | -npm install pm2 -g | |
| 24 | -# pm2 examples | |
| 25 | -# pm2 start server.js | |
| 26 | -# pm2 stop server | |
| 27 | -# pm2 restart server | |
| 28 | -# pm2 stop all | |
| 29 | - | |
| 30 | -``` | |
| 5 | +> 以 Centos 为例,Ubuntu等其它发行版,请自行调整 | |
| 6 | + | |
| 7 | +1. 预安装: | |
| 8 | + | |
| 9 | + - 首先需要安装一些基础的软件包,请自行安装(具体参照其官网文档) | |
| 10 | + - node | |
| 11 | + - npm | |
| 12 | + - nginx | |
| 13 | + - yarn | |
| 14 | + - pm2 | |
| 15 | + | |
| 16 | + - 1.2 以下脚本仅供参考 | |
| 17 | + | |
| 18 | + ```bash | |
| 19 | + # install yarn | |
| 20 | + curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo | |
| 21 | + sudo yum install yarn -y | |
| 22 | + | |
| 23 | + # install nginx | |
| 24 | + sudo yum install nginx -y | |
| 25 | + # install pm2 | |
| 26 | + npm install pm2 -g | |
| 27 | + # pm2 examples | |
| 28 | + # pm2 start server.js | |
| 29 | + # pm2 stop server | |
| 30 | + # pm2 restart server | |
| 31 | + # pm2 stop all | |
| 32 | + ``` | |
| 31 | 33 | |
| 32 | 34 | nginx 配置文件 demo |
| 33 | 35 | |
| ... | ... | @@ -43,8 +45,8 @@ server { |
| 43 | 45 | proxy_busy_buffers_size 20M; |
| 44 | 46 | |
| 45 | 47 | ssl on; |
| 46 | - ssl_certificate cert/luban-api.pem; | |
| 47 | - ssl_certificate_key cert/luban-api.key; | |
| 48 | + ssl_certificate cert/your-https.pem; | |
| 49 | + ssl_certificate_key cert/your-https.key; | |
| 48 | 50 | ssl_session_timeout 5s; |
| 49 | 51 | ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; |
| 50 | 52 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
| ... | ... | @@ -65,8 +67,8 @@ server { |
| 65 | 67 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| 66 | 68 | proxy_pass http://localhost:1337; |
| 67 | 69 | } |
| 68 | - location / { | |
| 69 | 70 | |
| 71 | + location / { | |
| 70 | 72 | root /home/centos/codebase/luban/luban-h5-dist/front-end/; |
| 71 | 73 | #try_files $uri $uri/ /index.html; |
| 72 | 74 | } |
| ... | ... | @@ -165,7 +167,8 @@ plan.remote(remote => { |
| 165 | 167 | #### 中间可能遇到的一些问题: |
| 166 | 168 | |
| 167 | 169 | 1. `Cannot parse privateKey: Unsupported key format` |
| 168 | -解决方案请参照:[Cannot parse privateKey: Unsupported key format](https://stackoverflow.com/questions/53400628/cannot-parse-privatekey-unsupported-key-format) | |
| 170 | + | |
| 171 | + 解决方案请参照:[Cannot parse privateKey: Unsupported key format](https://stackoverflow.com/questions/53400628/cannot-parse-privatekey-unsupported-key-format) | |
| 169 | 172 | |
| 170 | 173 | |
| 171 | 174 | ## Docker 部署 |
| ... | ... | @@ -174,11 +177,10 @@ plan.remote(remote => { |
| 174 | 177 | > 但仅供参考,此方案不是鲁班的官方的解决方案 |
| 175 | 178 | > |
| 176 | 179 | > 鲁班决定暂时不按照这种方案来做,可以先使用上面部署脚本来发布到服务器上,进行部署。 |
| 177 | -> 鲁班后期考虑出一个简单版本docker image的部署方案,直接拉镜像,在服务器端就能直接跑起来。 | |
| 178 | 180 | > |
| 181 | +> 鲁班后期考虑出一个简单版本docker image的部署方案,直接拉镜像,在服务器端就能直接跑起来。 | |
| 179 | 182 | |
| 180 | -请确保您的`80`端口和`443`端口均打开,如果已经配置了其它项目,请进行手工调整。 | |
| 181 | - | |
| 183 | +1. 请确保您的`80`端口和`443`端口均打开,如果已经配置了其它项目,请进行手工调整。 | |
| 182 | 184 | 1. 修改`yourdomain.tld`为您的前端域名并解析到服务器。 |
| 183 | 185 | 1. 修改`api.yourdomain.tld`为您的后端域名并解析到服务器。 |
| 184 | 186 | 1. 依次执行以下命令。 |
| ... | ... | @@ -317,8 +319,11 @@ Docker命令详解(run篇) |
| 317 | 319 | |
| 318 | 320 | |
| 319 | 321 | ## Heroku |
| 320 | -> 因为 Strapi + postgresql 在 Heroku 上还有一些坑,需要官方解决,这个方案暂时pending | |
| 322 | +> TODO | |
| 321 | 323 | |
| 322 | 324 | --- |
| 323 | 325 | |
| 326 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 327 | + | |
| 328 | + | |
| 324 | 329 | <Vssue issueId="7" /> | ... | ... |
docs/zh/getting-started/discussion.md
| 1 | -# 交流群 | |
| 1 | +# 社区与交流群 | |
| 2 | 2 | |
| 3 | 3 | |
| 4 | +### 论坛地址:[鲁班H5-社区](https://support.qq.com/products/93432/) | |
| 5 | + | |
| 6 | + | |
| 7 | +### 交流群 | |
| 4 | 8 | | 钉钉群 | 微信公众号 | 微信 | |
| 5 | 9 | |---|---|---| |
| 6 | 10 | | <img src="https://user-images.githubusercontent.com/12668546/61447488-a379f700-a983-11e9-9956-139352a2585d.png" width="200" />| <img src="https://user-images.githubusercontent.com/12668546/65471913-ab827580-dea3-11e9-919c-870c9605c60f.png" width="200" /> | <img src="https://user-images.githubusercontent.com/12668546/66585418-5cce1e80-ebb9-11e9-91c0-56f658f09e27.png" width="200" /> <br />请备注:鲁班H5交流| |
| 7 | 11 | |
| 12 | +#### 需求收集 | |
| 13 | +- [ ] 二级子域名 | |
| 14 | +- [ ] 小程序 | |
| 15 | +- [ ] 多浏览器适配 | |
| 16 | +- [ ] 私有部署 | |
| 17 | +- [ ] docker 部署 | |
| 18 | +- [ ] PV、UV | |
| 8 | 19 | |
| 9 | 20 | |
| 10 | 21 | --- |
| 11 | 22 | |
| 23 | +> 如果有问题,欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 24 | + | |
| 12 | 25 | <Vssue issueId="11" /> |
| 13 | 26 | \ No newline at end of file | ... | ... |
docs/zh/getting-started/engine.md deleted
100755 → 0
| 1 | -# 作品预览/渲染引擎 | |
| 2 | -> 关于此部分有疑惑,请直接评论 | |
| 3 | - | |
| 4 | -## 基础概念 | |
| 5 | -作品预览的基本原理参见 [luban-h5/back-end/h5-api/api/work/controllers/Work.js/previewOne](https://github.com/ly525/luban-h5/blob/bd486ce16fc24bfd7030fc51857a579776e12e68/back-end/h5-api/api/work/controllers/Work.js#L12) | |
| 6 | - | |
| 7 | - | |
| 8 | -```js | |
| 9 | -previewOne: async (ctx) => { | |
| 10 | - const work = await strapi.services.work.findOne(ctx.params); | |
| 11 | - return ctx.render('engine', { work }); | |
| 12 | -}, | |
| 13 | -``` | |
| 14 | - | |
| 15 | ---- | |
| 16 | - | |
| 17 | -<Vssue issueId="15" /> | |
| 18 | 0 | \ No newline at end of file |
docs/zh/getting-started/features.md
docs/zh/getting-started/feedback.md deleted
100755 → 0
| 1 | -# Feedback/意见反馈 | |
| 2 | - | |
| 3 | -## 完善文档 | |
| 4 | - | |
| 5 | -- [ ] 完善构建预览引擎文档 | |
| 6 | - | |
| 7 | -弹框预览时,engine.js 缺失,导致预览失败。 | |
| 8 | -需要说明如何构建 engine.js,以及解释 engine.js 的作用 | |
| 9 | - | |
| 10 | - 1. 在 front-end/h5 目录下,运行:`node build/engine.webpack.js` (这个是用来生成预览引擎的东西) | |
| 11 | - 2. 构建完成之后,看下 后端的`h5-api/public` 里面会多一个文件夹 `engine-assets` | |
| 12 | - 3. 打开的预览窗口(preview.vue),里面的小手机那个div 对应的其实是一个 iframe,可以看看对应的源码 | |
| 13 | - 4. 也就是说,这个预览其实依赖后端的渲染引擎 比如 ejs 或者 jade 这种模板引擎,所以 `build/engine.webpack.js` 的 output dir 是在`back-end/h5-api/public`中的 | |
| 14 | - | |
| 15 | -- [ ] 在 readme 中补充后端API的使用说明 | |
| 16 | - | |
| 17 | - | |
| 18 | -## 需求收集 | |
| 19 | - | |
| 20 | -- [ ] 二级子域名 | |
| 21 | -- [ ] 小程序 | |
| 22 | -- [ ] 多浏览器适配 | |
| 23 | -- [ ] 私有部署 | |
| 24 | -- [ ] docker 部署 | |
| 25 | -- [ ] pv 统计 | |
| 26 | - | |
| 27 | - | |
| 28 | -<Vssue issueId="8" /> | |
| 29 | 0 | \ No newline at end of file |
docs/zh/getting-started/introduction.md
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | |
| 23 | 23 | |
| 24 | 24 | ### Screenshots |
| 25 | -> [在线访问地址](https://ly525.github.io/luban-h5) | |
| 25 | +> [主页](http://api.luban-h5.wxjcart.com) | |
| 26 | 26 | |
| 27 | 27 | > [更多作品演示图片,点击查看](https://github.com/ly525/luban-h5/issues/15) |
| 28 | 28 | |
| ... | ... | @@ -30,4 +30,6 @@ |
| 30 | 30 | |
| 31 | 31 | --- |
| 32 | 32 | |
| 33 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 34 | + | |
| 33 | 35 | <Vssue issueId="12" /> |
| 34 | 36 | \ No newline at end of file | ... | ... |
docs/zh/getting-started/qa.md deleted
100755 → 0
docs/zh/getting-started/quick-start.md
| 1 | 1 | # 快速开始 |
| 2 | -> 重要:关于此部分有疑惑,请在下面直接评论 | |
| 2 | +> 重要:关于此部分有疑惑,请在下面直接评论,或者到社区讨论 | |
| 3 | + | |
| 4 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 5 | + | |
| 3 | 6 | |
| 4 | 7 | ## 基础概念 |
| 5 | 8 | > 首先你需要大概了解下 Node.js 的相关生态、Node.js 的安装 |
| ... | ... | @@ -129,9 +132,21 @@ yarn serve # develop |
| 129 | 132 | ``` |
| 130 | 133 | |
| 131 | 134 | ### 2. 构建预览所需的渲染引擎 |
| 132 | -1. 在 front-end/h5 目录下,运行:`yarn engine:build` (这个是用来生成预览引擎的东西) | |
| 133 | -2. 构建完成之后,看下 后端的 `h5-api/public` 里面会多一个文件夹 `engine-assets` | |
| 134 | -3. 打开的预览窗口(preview.vue),里面的预览部分对应的其实是一个 iframe,可以看看对应的源码 | |
| 135 | +> 关于此部分有疑惑,请直接评论 | |
| 136 | + | |
| 137 | +#### 基本原理 | |
| 138 | +作品预览的基本原理参见 [luban-h5/back-end/h5-api/api/work/controllers/Work.js/previewOne](https://github.com/ly525/luban-h5/blob/bd486ce16fc24bfd7030fc51857a579776e12e68/back-end/h5-api/api/work/controllers/Work.js#L12) | |
| 139 | + | |
| 140 | +```js | |
| 141 | +previewOne: async (ctx) => { | |
| 142 | + const work = await strapi.services.work.findOne(ctx.params); | |
| 143 | + return ctx.render('engine', { work }); | |
| 144 | +}, | |
| 145 | +``` | |
| 146 | +#### 如何构建 | |
| 147 | +1. 在`front-end/h5`目录下,运行:`yarn engine:build` | |
| 148 | +2. 构建完成之后,后端的`h5-api/public`里面会多一个文件夹 `engine-assets` | |
| 149 | +3. 打开的预览窗口`preview.vue`, 里面的预览部分对应的其实是一个 iframe,可以看看对应的源码 | |
| 135 | 150 | 也就是说,这个预览其实依赖后端的渲染引擎 比如 ejs 或者 jade 这种模板引擎,所以 `build/engine.webpack.js` 的 `output dir` 是在`back-end/h5-api/public`中的 |
| 136 | 151 | |
| 137 | 152 | |
| ... | ... | @@ -141,5 +156,7 @@ yarn serve # develop |
| 141 | 156 | 全称为 `lu-ban-plugin:``鲁班H5的插件`,位置:`front-end/h5/src/components/plugins` |
| 142 | 157 | |
| 143 | 158 | --- |
| 159 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 160 | + | |
| 144 | 161 | |
| 145 | 162 | <Vssue issueId="6" /> |
| 146 | 163 | \ No newline at end of file | ... | ... |
docs/zh/getting-started/code-structure.md renamed to docs/zh/implementation/code-structure.md
| ... | ... | @@ -91,4 +91,7 @@ front-end/h5/src # å‰ç«¯æºç 目录:包å«ç¼–辑器ã€ä½œå“ç |
| 91 | 91 | |
| 92 | 92 | --- |
| 93 | 93 | |
| 94 | +> 欢迎大家到[é²çH5-社区](https://support.qq.com/products/93432/) 交æµï¼Œåœ¨è¿™é‡Œå¯ä»¥æé—®ã€å馈æ„è§å’Œå»ºè®®ï¼Œä¸Žä½œè€…直接互动 | |
| 95 | + | |
| 96 | + | |
| 94 | 97 | <Vssue issueId="9" /> |
| 95 | 98 | \ No newline at end of file | ... | ... |
docs/zh/implementation/form-submit.md
0 → 100755
| 1 | +# 表单提交 | |
| 2 | + | |
| 3 | +1. 找到页面中所有 input类型 且 包含 data-lbp-form-input 属性的元素,获取其 value。其对应的 key 为该组件对应的uuid | |
| 4 | +2. 构建一个 Form Data,使用 ajax提交即可 | |
| 5 | + | |
| 6 | +--- | |
| 7 | + | |
| 8 | +> 欢迎大家到[鲁班H5-社区](https://support.qq.com/products/93432/) 交流,在这里可以提问、反馈意见和建议,与作者直接互动 | |
| 9 | + | |
| 10 | + | |
| 11 | +<Vssue issueId="13" /> | |
| 0 | 12 | \ No newline at end of file | ... | ... |