我们距离代码生成器的第一个正式版本并不遥远,但同时请记住,生态系统的某些部分仍处于实验阶段。
teleportHQ 是一个低代码平台,使团队能够通过熟悉的设计工具界面实时构建应用程序。
该存储库包含为平台的可视化编辑器提供支持的代码生成器。
UIDL 标准是平台和代码生成器之间的粘合剂。 UIDL以抽象的方式定义用户界面,独立于任何框架甚至 Web 平台本身。从 UIDL 开始,您可以将该抽象转换为不同风格的编码(例如 React、Vue、WebComponents 等)。
这些代码生成器是更大生态系统的一部分,我们正在积极构建该生态系统,以简化 Web 应用程序的创建。您可以在本文中了解有关我们成立的更多信息。
代码生成器背后的理念是:
React
构建的内容,也可以使用Vue
构建或在Web Components
标准之上构建 - 我们支持多个目标阅读有关 UIDL 标准的更多信息。
进入传送生态系统的最简单方法是尝试预配置的组件生成器之一:
npm install @teleporthq/teleport-component-generator-react
npm install @teleporthq/teleport-component-generator-vue
npm install @teleporthq/teleport-component-generator-angular
或使用纱线:
yarn add @teleporthq/teleport-component-generator-react
yarn add @teleporthq/teleport-component-generator-vue
yarn add @teleporthq/teleport-component-generator-angular
为了生成一个简单的组件,您必须从组件 UIDL开始:
{
"name" : " My First Component " ,
"node" : {
"type" : " element " ,
"content" : {
"elementType" : " text " ,
"children" : [
{
"type" : " static " ,
"content" : " Hello World! "
}
]
}
}
}
使用预配置的组件生成器就像调用异步函数一样简单:
import ReactGenerator from '@teleporthq/teleport-component-generator-react'
const uidl = { ... } // your sample here
const { files } = await ReactGenerator . generateComponent ( uidl )
console . log ( files [ 0 ] . content )
控制台输出将类似于:
import React from 'react'
const MyFirstComponent = ( props ) => {
return < span > Hello World! < / span >
}
export default MyFirstComponent
对于其他框架,只需切换包即可:
import VueGenerator from '@teleporthq/teleport-component-generator-vue'
const uidl = { ... } // your sample here
const { files } = await VueGenerator . generateComponent ( uidl )
console . log ( files [ 0 ] . content )
控制台输出将类似于:
< template >
< span >Hello World!</ span >
</ template >
< script >
export default {
name : ' MyFirstComponent ' ,
}
</ script >
您可以使用 UIDL 结构,还可以在在线 REPL 中观察生成的代码。同时,还可以检查以 UIDL 格式编写的组件的不同示例。
Teleport 生态系统由三大类包组成:组件生成器、项目生成器和项目打包器。
我们为几个流行的 Web 前端框架提供了官方组件生成器。查看官方文档以深入了解组件生成器背后的架构。
所有组件生成器都公开teleport-component-generator
包的一个实例。您还可以安装此软件包并使用插件、映射和后处理器构建您自己的生成器。
在文档中,您将找到有关如何构建自定义组件生成器的完整指南。
teleport-component-generator-react
- 具有样式: css-modules
、 styled-components
、 styled-jsx
等。teleport-component-generator-vue
- 生成标准.vue
文件teleport-component-generator-angular
- 生成.ts
、 .html
和.css
文件teleport-component-generator-html
-(实验性)teleport-component-generator-svelte
-(即将推出) 除了明显的表示层之外,以下是 UIDL 和组件生成器目前支持的功能列表:
项目生成器依赖于ProjectUIDL
输入和项目策略。 ProjectUIDL
将包含有关路由、页面、组件和全局设置的所有信息。该策略将告诉生成器将每个文件放在哪里以及使用哪个组件生成器。
生成器将输出包含文件夹和文件的抽象结构,而不将任何内容写入磁盘。项目打包程序的任务是获取项目生成器的输出并将其发布到某个地方。
查看有关如何使用现有项目生成器或如何创建自定义配置的官方指南
teleport-project-generator-react
- 在create-react-app
之上的react
+ react-router
和css-modules
teleport-project-generator-next
- 基于 Next.jsteleport-project-generator-vue
- 结构从vue-cli
开始teleport-project-generator-nuxt
- 基于 Nuxt.jsteleport-project-generator-angular
- 基于angular-cli
teleport-project-generator-html
(实验性) 除了流程结束时生成的常规文件和文件夹之外,项目生成器还负责:
package.json
中。index.html
或特定于框架的内容)。一旦生成器创建了组件和页面的代码,项目打包器将获取该输出,将其放在现有项目模板之上,添加所需的任何本地资源,然后将整个结果传递给发布者。发布者专门将整个文件夹结构部署到第三方(例如vercel
或github
,或者创建内存中的zip
文件或简单地将文件夹写入disk
。
teleport-publisher-vercel
teleport-publisher-github
teleport-publisher-codesandbox
teleport-publisher-zip
teleport-publisher-disk
teleport-publisher-netlify
(即将推出)一些有用的链接可帮助您快速了解整个传送生态系统:
该项目使用:
为了在本地进行测试,我们建议使用yarn
,因为它与lerna
集成得更好,并且所有贡献者都在使用它:
yarn
这会将依赖项安装在根文件夹中,同时还会在packages
夹内的独立模块之间创建符号链接。
要完成 lerna 设置,您需要运行:
yarn build
这将在每个单独的包内运行build
任务,创建输出lib
文件夹。每个包有两个输出: cjs
- 常见的 js 风格模块和esm
- 现代 es 模块。如果您想加快构建时间,可以只运行build:cjs
来避免esm
构建。
运行测试套件:
yarn test
yarn test:coverage
此外,lerna 文件夹中有一个名为teleport-test
private
包。该包可用于测试任何类型的项目/组件生成器的代码/文件生成过程。为了尝试一下,您必须:
cd packages/teleport-test
npm run standalone
独立版本使用teleport-code-generator
包和静态声明的模板。要使用 github 模板和自定义打包程序实例进行测试,您必须:
cp config.example.json config.json
您必须将占位符替换为您自己的 github 令牌。然后你可以使用以下命令运行它:
npm run packer
此版本的打包程序使用examples/uidl-sample
中的 UIDL。如果该过程成功运行,您将看到来自项目打包程序的响应,格式如下: { success: true, payload: 'dist' }
。该任务使用teleport-publisher-disk
包并在dist
文件夹中生成四个不同的项目文件。
如果您在运行此项目时发现任何异常情况、潜在错误,或者您只是对此项目有任何疑问或好奇,请提出问题。
不仅仅是我们的代码是开源的,我们还计划在 GitHub 上开发代码生成器。我们有许多问题尚未解决,我们期待对此做出进一步的贡献。
我们特别有兴趣围绕带有discussion
标签的问题展开讨论。
正式发布将切换到1.0
版本。预计预计在 2019 年底左右完成。
我们非常高兴社区参与这个项目。我们坚信开源的力量,因此我们计划与整个开发社区一起构建最好的代码生成器。
从现在开始,我们设想不同类型的参与:
感谢这些优秀的人(表情符号键):
亚历克斯·摩尔多瓦 ? | 弗拉德·尼古拉 ? | 保罗·布里 ? ? | 米哈伊塔巴 ? | 米哈伊·塞尔班 | 贾亚·克里希纳·南布鲁 ? | 安娜玛丽亚·奥罗斯 |
卵母细胞94 | 亚历克斯保桑 | 米哈伊·桑帕莱努 ? | 乌特沃 | 安德烈·图努 | 泽维尔·卡萨洛特 | 查夫达·巴维克 |
伊丽莎·尼托伊 | 都铎王朝 ? | 多罗蒂亚·费伦茨 ? | 威廉·古诺 |
该项目遵循所有贡献者规范。欢迎任何形式的贡献!
通过以下任意渠道联系我们: