長寿対応:Lingualeoフロントエンドの更新方法

画像

「製品の最初のバージョンを恥じていない場合、市場参入に遅れています」

これらの言葉は、2010年以来、最初からリンガレオフロントエンドの開発を正当化します。 5年の歴史を持つ複雑なマルチプラットフォーム製品では、コードは考古学的なトリポリ文化の土壌層よりも少し厚い層になっています。 そして今、この日が来ました。私たちは、ウェブクライアントプラットフォームを更新して、散らばってジャンプすることにしました。 以下に、基準点から可能な限り着陸するために行ったことを説明します。

このすべての理解を無謀に掘り下げようとしたPRの女性は、Lingualeoフロントエンドの基盤となっている主要な技術は松葉杖と自転車であると言わなければなりませんでした。 彼女がこれをHabrに書かないほど賢いことを願っています。

最初のステップ。 PRを掘る


Lingualeoフロントエンドは、多くの異なるライブラリで実行され、コードは悲しみがピカルな場所から最先端も悲しみ-ピカルな場所に配布されます:-D。 古くは、Lingualeoサイトでは、すべてがjQueryが散在したjsファイルから始まりました。 それからそれを壊すことが必要になり、ある種の「小道具」が現れ、それにグローバルなイベントバスがねじ込まれました。 ウィジェットシステム自体は、いわゆるコンポーネントアプローチに進むことを決定するまで、何度か反復されました。 少しためらい、検索した後、 Reactのh騒にエントロピーを追加しました。

画像

ステップ2 盲目で、何だったのか、自分から少し追加


したがって、トピックから遠く離れていて、上記のリンクをたどるのが面倒な人のために、以下のことをお知らせします。Reactは、ユーザーインターフェイスを構築するためのJSライブラリです。 実験が始まるまでに、Reactはバージョン0.13でリリースされました。 彼と一緒に仕事を始めました。 いくつかの理由により、Reactと直接友達を作ることはできませんでした。


そこで、独自の「ラッパー」を作成し、既製のシステムを使用してVirtual DOMを作成および操作することにしました。


ちなみに、 新しい文法トレーニングについての投稿でこれについて既に言及しました。

彼らは、ReactコンポーネントとのAPI互換性を持つラッパーを作成しようとしました。 次のフックを使用して同じライフサイクルを実行します。

(componentWillMount、componentDidMount、componentWillUnmount、
componentWillUpdate、componentDidUpdate、
componentWillReceiveProps)

したがって、Reactで作業しているようにいくつかの一般的なケースを探すことができ、すべてのコンポーネントを書き換えることなく、Reactに簡単に移行するための基盤があります。

ステップ3 地球に降りて、再び人生を愛する


データストリームとユーザーイベントの処理をどのように処理するかという問題が成熟したとき、Virtual DOMを使用して構想された計画に切り替えることによる幸福感は少し鈍くなってきました。 Fluxのアーキテクチャアプローチは、私たちにとって非常に抽象的なソリューションのように思えました。 彼の助けを借りて新しい文法トレーニングの最初のバージョンを書いた後、私たちは戻ってReduxに向かった。 このアプローチは、より直接的かつ簡潔であると考えています。単一のデータウェアハウス、ミドルウェアの存在、およびイベントハンドラーとしてのお気に入りのクリーンハンドラー関数です。 しかし、このアプローチを実装するための独自のレイヤーを作成しないと、私たちは存在しません。そのため、いくつかの異なる理由がありました。 後者は、基本的にはコレクターに依存しています。Reduxが記述されているES6をサポートしていません。

画像

開発者から見た Redux

ステップ4 夢と体現


その結果、次のような明るい未来に向けてゆっくりと手を伸ばしています。


実際、このアプローチについてはまだ検討が進められており、たとえばアニメーションの場合のように、すべての質問が明らかな答えであるわけではありませんが、一般的にこのアプローチが好きで、実装された場所での生活が楽になります。
将来の計画には、サイト全体でVirtual DOMに切り替えることと、現在通常の webpackビルダーを導入することが含まれます。 もちろん、これにはすべて時間がかかり、注意が必要です。

ところで、Reactでアニメーションを操作する方法に関するコメントをHabrovskの人々に非常に感謝します:彼らは、いくつかの相互作用するアニメーションが発生する場合や、アニメーション中にコンポーネントと相互作用する場合の難しいケースに興味を持っています)。 そして、あるアーキテクチャから別のアーキテクチャへの移行がどのように行われたかという質問もあなたにとって興味深いものです;-)

本当に、Lingualeoフロントエンドチーム。

TwitterFacebookvkontakteInstagramでニュースをフォローしてください。

トピック外: LingualeoはiOSおよびAndroid開発者のランクで待っています。 lingualeo.comのブログですべての空席についてお読みください。 履歴書を待っています!

Source: https://habr.com/ru/post/J270243/


All Articles