ノーコードプラットフォームを構築した.



私は最近、それが大きな反応を得ました、特に、それが私がこのフォーラムに掲示した非常に最初の記事であるならば、それで、あなたのそれらの感謝はそれに若干の感謝を与えました!あなたがこの記事にそれを読んでいないことに来ているならば、私はあなたにそれを若干の前後関係のために読み間近さを与えることを提案します.私は、2009年の導入と一致するフォローアップ記事をしたかったですYakety , 私がカバーしようとしている原則を使って建てたプラットホーム.
最後の記事では、抽象的で動的なコンポーネントを使用して、ページに書かれた有形コンポーネントを動的に接続する方法を説明しました.この記事は、もう少し詳細にデータの側面を見ることによって、1つの(小さい)ステップをとります.
私は、このビルダーを開発するとき、私の中心的なゴールが無慈悲に、何でも、どこでも、そして、どんなコストでも結合と呼ばれている何かを避けることになっていることを繰り返して始めます.あなたのそれらの結合の概念に慣れていないため、それはどこにあなたは本当に同じグループに属していないグループのデータは、通常便利です.これは、デカップルの利点を無視することになっていた場合、データを抽出し、抽出しなければならないという明白な問題につながります.良い.それは、可能な限り結合を避けるプログラミングでよく知られた原則です.私は、同じグループにおそらく存在する可能性があるデカップリングデータによって極端にそれを取ることに熱心でした.あなたは、私が積極的にデカップリングをしていたと言うことができました.スポイラーアラート:あなたがすぐに遭遇する大きな問題は、最終的に意味を生成するために一緒に来る必要があるデータ間のリンクを維持している、それを念頭に置いておく.
私は簡単に最後の記事では、私はデータを非常に粒状で非常に特定のデータを作成し、それを大きなバッチでブラウザに渡すと、私のコード内の任意の場所からアクセスできるように決定したパターンを簡単に議論した.私は最後の結果の本当の把握がありませんでした、私がちょうど私がこの原則で立ち往生したならば、私はずっとコードcul de sacで終わることになりそうであるということを知っていました!
コードを開始する場所を選ぶのは難しいですが、私がどのようにページを保存するかを選択します.
{
    "data": [
        "4af6738c-f7f3-11ea-adc1-0242ac120002"
    ],
    "blocks": [
        "4af6745e-f7f3-11ea-adc1-0242ac120002"
    ]
}
あなたがそこで見ているものは、ページの定義です.The data keyトップレベルのコンポーネントへの参照の配列を格納します.The blocks キーは、ページに必要なすべてのコンポーネントの配列を指します.これは重要な決定でした、私は彼らの親コンポーネントに対して部分的な参照を保存することができました、しかし、それは本当に乱雑なコードに導かれて、与えられました、私が議論したように、私の戦略はすべての構成要素とデータをどこでもアクセスできるようにすることです.すべてのページを定義する必要があるデータは、各コンポーネントのために同じですが、それはちょうど参照、定義が必要です.したがって、ページ定義はページをレンダリングするのに必要なすべてのデータを定義する際に重要な役割を果たします.キャッシュの中でここで発生する便利な機会があり、参照の順序を操作し、新しい参照などの参照を切り替えています.私は問題がないとは言いませんが、確かに考える価値のあるパターンです.
データとブロックデータを解析して、ページをレンダリングするために必要なデータをフェッチします.データは次のようになります.
{
   "type": "s-hero",
   "slug": "4af6738c-f7f3-11ea-adc1-0242ac120002",
   "data": [
      "4af6745e-f7f3-11ea-adc1-0242ac120002"
   ]
}

{
   "type": "s-title",
   "slug": "4af6745e-f7f3-11ea-adc1-0242ac120002",
   "title": "Hi"
}
最後の記事で説明されているように、すべてのことが起こるのは、動的なコンポーネントがページ定義のデータ配列をループします.再帰的に、自分自身の“data”プロパティをループするヒーローコンポーネントをレンダリングします.しかし、必要なデータはHEROコンポーネント定義内に存在しません.しかし、それはアクセス可能ですが、ブラウザのウィンドウには、ページをレンダリングするために必要なすべての定義を持っているので、コンポーネントがちょうど参照を使用する必要があるデータのために達すると、それはタイトルコンポーネントを参照し、データ定義を使用してタイトルをレンダリング見つけることができます.
ベイル

確かにここに前の記事と重複しているが、私は強調しているキーコンセプトは、データを分離するの一つです.あなたは私がこの手紙に採用した方法を選択する必要はありません、それは私が完全に私自身で考案した何かであるので、この結果を達成するためにもっと知的な方法があるかもしれません.しかし、あなたがこの範囲にデータを分離しないことを選択するならば、あなたは開発プロセスでさらに下にいくつかの本当のコーディング頭痛を引き起こして危険にさらされています.私は、1人の人または小さなチームによって開発されたかなりの数の着陸ページビルダーに遭遇しましたそして、あなたは彼らが非常に限られていることを示す着陸ページの例から見ることができます.あなたは、非常に堅い構造でテンプレートのセットに本当に縛られます.それはコーディングに潜入した結果であり、結果として生じる結果についての十分な考えを与えずに簡単な決断を下します.
そこに止まります.私はこの主題のまわりで持つことができた他の関連した議論からこの記事を切り離します!私はそれがあまりにも消化していないことを願っています.これが人々の役に立つとわかるならば、私は行き続けます.
キープイットリアル.
マット
psの場合はもっと勉強したいYakety またはプラットフォームの構築に関与し、メールをドロップします.[email protected] , サイト上の登録は、社会的なメディア上で私を見つける、そこに多くの方法をタッチし、開発タスクの多くの能力のすべてのレベル(およびその問題のための非開発タスク)のために立ち往生するために取得しているので、お友達と共有してください!