コード ジェネレーターの最初の正式バージョンにはそれほど遠くありませんが、それまでの間、エコシステムの一部は実験的なものであることに留意してください。
teleportHQ は、チームが使い慣れた設計ツール インターフェイスを介してリアルタイムでアプリケーションを構築できるローコード プラットフォームです。
このリポジトリには、プラットフォームのビジュアル エディターを強化するコード ジェネレーターが保持されます。
プラットフォームとコード ジェネレーターの間の接着剤はUIDL 標準です。 UIDL は、フレームワークや Web プラットフォーム自体から独立して、抽象的な方法でユーザー インターフェイスを定義します。 UIDL から始めて、その抽象化をさまざまな種類のコーディング (React、Vue、WebComponents など) に変換できます。
これらのコード ジェネレーターは、Web アプリケーションの作成を合理化するために、私たちが積極的に構築している大規模なエコシステムの一部です。私たちの設立について詳しくは、この記事をご覧ください。
コード ジェネレーターの背後にある哲学は次のとおりです。
React
で構築できるものは、 Vue
またはWeb Components
標準の上に構築することもできます - 複数のターゲットをサポートしていますUIDL 標準について詳しくは、こちらをご覧ください。
テレポート エコシステムに飛び込む最も簡単な方法は、事前構成されたコンポーネント ジェネレーターの 1 つを試してみることです。
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 形式で記述されたコンポーネントのさまざまな例を確認することもできます。
テレポート エコシステムは、コンポーネント ジェネレーター、プロジェクト ジェネレーター、およびプロジェクト パッカーの3 つの主要なパッケージ カテゴリで構成されます。
いくつかの人気のある 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.js に基づくteleport-project-generator-vue
- vue-cli
から始まる構造を持つteleport-project-generator-nuxt
- Nuxt.js に基づくteleport-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
(近日公開予定)テレポートエコシステム全体を理解するために役立つリンクがいくつかあります。
このプロジェクトでは以下を使用します。
ローカルで試してみるには、 lerna
との統合性が高く、すべての貢献者がこれを使用しているため、 yarn
使用することをお勧めします。
yarn
これにより、ルート フォルダーに依存関係がインストールされますが、 packages
フォルダー内の独立したモジュール間のシンボリック リンクも作成されます。
lerna のセットアップを完了するには、以下を実行する必要があります。
yarn build
これにより、各パッケージ内でbuild
タスクが実行され、出力lib
フォルダーが作成されます。各パッケージには 2 つの出力があります: 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
フォルダーに 4 つの異なるプロジェクト ファイルを生成します。
実行中に見つかった不規則性や潜在的なバグについて、あるいは単にこのプロジェクトについて質問や興味がある場合には、問題を開いてください。
オープンソースであるのはコードだけではなく、GitHub でのコード ジェネレーターの開発も計画しています。私たちは多くの問題を解決しており、これに関するさらなる貢献を期待しています。
私たちは、 discussion
ラベルが付けられた問題に関するディスカッションを開始することに特に興味を持っています。
正式リリースはバージョン1.0
への切り替えになります。このETAは2019年末頃です。
このプロジェクトに関してコミュニティに参加していただけることを非常に嬉しく思います。私たちはオープン ソースの力を強く信じているため、開発コミュニティ全体と協力して、可能な限り最高のコード ジェネレーターを構築することを計画しています。
私たちは、この時点からさまざまな種類の関与を想定しています。
これらの素晴らしい人々に感謝します (絵文字キー):
アレックス・モルドバン ? | ヴラド・ニクラ ? | ポール・ブリー ? ? | ミハイタバ ? | ミハイ・セルバン | ジャヤ・クリシュナ・ナンブル ? | アナマリア・オロス |
ovidiuionut94 | アレックスポーサン | ミハイ・サンパレヌ ? | ウトゥー | アンドレイトゥヌ | ザビエル・カザロ | チャブダ・バヴィク |
仁藤エライザ | チューダーシー ? | ドロッティヤ・フェレンツ ? | ウィリアム・グノー |
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します!
次のいずれかのチャネルでお問い合わせください。