Ember.jsもう䞀床詊す時間

この蚘事は、 Berlin.jsミヌティングで䜜成したプレれンテヌションに基づいお䜜成したした。 最近、このかなり䞀般的で安定したフレヌムワヌクに関するロシア語の資料はほずんどなく、この状況を少し修正するこずにしたした。







Ember.jsを1回孊習し、この知識をすべおのEmber.jsプロゞェクトに適甚したす。 カットの䞋でこの論文を明らかにしようずしたす。







私ずEmber.js



私の経隓に぀いお簡単に説明したす。 2014幎、フロント゚ンド開発者ずしおの最初の仕事で、Ember.jsを初めお詊したした。 このフレヌムワヌクは匕き続きMVCパラダむムで構築され、CLIを䜿甚したせんでした。 倚くの経隓がないため、長所ず短所を刀断するこずは困難でした。 䞀般的に、私の印象は、Ember.jsずAngular.jsの間のこの 2013幎のラむブバトルによっおよく䌝えられたす。 はい、Googleフレヌムワヌクにはすぐに䜿えるものがたくさんありたしたが、moment.jsやdatatables.netのようなjQueryプラグむンのように、Emberにサヌドパヌティラむブラリを簡単に統合できたした。







その埌、別の䌚瀟に移り、Can.jsずReact.jsで1幎間働きたしたが、2016幎に遞択する機䌚があり、叀い友人にチャンスを䞎えたした。 その時たでに、パラダむムはData Down Actions Upに倉わり、サヌビスずコンポヌネントが登堎したした。 しかし、䞀般的に、すべおが銎染みやすく理解しやすいたたであったため、適応に関しお特別な問題はありたせんでした。







それ以来、Ember.jsは私のメむンツヌルです。 私の意芋では、このフレヌムワヌクは、SPAを開発する堎合の䞻な遞択肢ずしお怜蚎する䟡倀がありたす。







なぜ゚ンバヌ



Npm 2018の調査では、開発に必芁な倚くのツヌルによるjsコミュニティの疲劎が蚘録されたした。







すべおの調査回答者は、ツヌルの削枛、開始に必芁な構成の削枛、および存圚するツヌルのドキュメントの改善を望んでいたす。

React.jsが䞻流であるこずを考えるず、これは理解できたす。 マヌケティングに関しお蚀えば、このラむブラリは非垞に「簡単な」ツヌルずしお䜍眮付けられおいたす。぀たり、孊習しやすく、非垞に柔軟です。 しかし、これは取るに足らない柔軟性です。 車を買いに来お、代わりに「この゚ンゞンで玠晎らしい車を䜜るこずができたす。倧きな、小さな、緑、青、ハッチバックたたはステヌションワゎン。タクシヌのために、街䞭やその呚蟺を運転するために」田舎。どんな車にも適しおいたす」。 これは玠晎らしいこずです。 しかし、私は座っお行きたいです。 このためだけに、ギアボックスを手に取り、ボディを芋぀け、色を遞択する必芁がありたす。 そしお、マヌケティングはこれに぀いお沈黙しおいたす。







物事のこの順序は、倚皮倚様なサポヌトラむブラリを備えた雑倚な゚コシステムに぀ながりたした。 倚くの堎合互いに互換性のないラむブラリなので、慎重に遞択する必芁がありたす。 もちろん遞択は良いですが、 24皮類のゞャムから遞ぶのは面倒です。 そしお、Npmの䞖論調査はこれを確認しおいたす。







読者の皆さん、私はあなたに朗報がありたす。 Emberコミュニティは、フレヌムワヌクの「蚭蚈機胜」による遞択の苊痛の圱響をはるかに受けたせん。 Emberコミュニティの最新の調査の回答者の1人が曞いたように







Emberを1回孊習し、他のEmberプロゞェクトに知識を適甚できたす。Emberは、すべおのアドオンを同じツヌルで䜜成および䜿甚できるため、垞に䞀貫した゚クスペリ゚ンスです。 ツヌリング、テスト環境のセットアップ、たたはテスト可胜なコヌドの蚘述に費やす脳力を枛らすこずは非垞に良いこずです。

䜕ず翻蚳する







Ember.jsを䞀床孊習し、この知識をすべおのEmber.jsプロゞェクトに適甚したす... Emberを䜿甚するず、すべおのアドオンを䜜成しお同じツヌルセットず統合できるため、完党な゚クスペリ゚ンスが埗られたす。 ツヌルの開発、テスト環境の展開、怜蚌可胜なコヌドの蚘述のために粟神的な゚ネルギヌを節玄するこずは良いこずです。

次に、Emberでこの䜓隓党䜓を埗る理由を説明したすが、最初に1぀の質問に答えたす。







圌は生きおいたすか



最近では、ラむブのjsフレヌムワヌクはめったに芋られたせんが、その開発は過去5幎間にわたっお停止しおいたせん。 しかし、゚ンバヌはそれらの1぀です。







アクティブな開発は決しお止たりたせんでしたが、2016幎には適応が停滞したした。 同じNpm 2018調査に目を向けるず、次のチャヌトがそこに蚘茉されおいたす







フレヌムワヌクの1぀に関連するnpmレゞストリ内のラむブラリの共有







ご芧のずおり、2017幎には逆転があり、Emberは平均ペヌスを䞊回っお再び成長し始めたした。 この珟象には簡単な説明がありたす。 2017幎、LinkedInは再蚭蚈するこずを決定し、Ember.jsを遞択しお、メむンサむトの䞡方のデスクトップおよびモバむルバヌゞョンを実装したした。 このむベントは開発に゚ネルギヌを提䟛し、珟圚の傟向を生み出したした。







LinkedInに加えお、このフレヌムワヌクは、Microsoft、Netflix、Travis CIフロント党䜓がオヌプン゜ヌスでレむアりトされおいる 、Intercom、Herokuなどの有名䌁業で䜿甚されおいるこずに泚意しおください。







䞀般的に、フレヌムワヌクは健圚です。







他のJSフレヌムワヌクの状況におけるEmber



以䞋に、開発フロント゚ンドのさたざたな偎面の非䞻匵的で䞍完党な䞻芳的なリストを瀺したす。その目的は、他のラむブラリの䞭でEmber.jsのおおよその䜍眮を瀺すこずです。 青ず緑の線はReact.jsずVue.jsを、灰色ずオレンゞの線はAngularずEmber.jsを瀺しおいたす。







SPAランドスケヌプのEmber.js







Ember.jsは、Angularに「ボックス化」され、新しいSPAを䜜成するずきに発生するすべおのタスクにデフォルトの実装ずツヌルを提䟛しようずしおいたす。 䜕かがあなたに合わないか、䜕かが足りない堎合、あなたはこのための適切なアドオンを探しおいたすたあ、たたは自分で曞いおください。 アドオンに぀いおは少し䜎くなりたす。







䜕がおなじみですか



React.js



React.jsの䞖界から来たのであれば、ペヌゞをコンポヌネントの階局に分解するこずに慣れおいるでしょう。 Emberでは、ペヌゞをコンポヌネントに分割し、それらにロヌカル状態をカプセル化する最善の方法に぀いおも考えたす。

React-routerに粟通しおいる堎合、Emberのルヌタヌもおなじみのように芋えたす。 最初は、Reactルヌタヌぱベリアのものからコピヌされたしたが、今ではプロゞェクトは長い間生き続けおいたす。

最埌に、ReduxやGraphQLでの䜜業に満足しおいる堎合は、Ember.jsでも䜿甚できたす こちらずこちらをご芧ください







たた、最新のEmberConfでは、ReactずEmberのパタヌンマッチングに関するプレれンテヌションが行われたした。







Vue.js



圓然、あなたもReactの人々も、むンタヌフェヌスをコンポヌネントに分割するパラダむムをよく知っおいたす。 さらに、テンプレヌトず蚈算されたプロパティの抂念に粟通しおいたす。







Angular.js



このフレヌムワヌクを熟知しおいる人は、サヌビスず䟝存性泚入メカニズムをよく知っおいるでしょう。 たた、 リリヌス3.10で公匏にリリヌスされるデコレヌタが確実に奜きになり、ポリフィルを䜿甚しおデコレヌタを䜿甚できるようになりたした。 Emberコミュニティでたすたす人気が高たっおいるTypescript こちらを参照を䜿甚するこずもできたす。







なじみのないものは䜕ですか



それでは、なじみがないず思われ、疑問を投げかける可胜性が高い郚分に移りたしょう。







WebpackではなくEmber-cli



アプリケヌションを生成するための暙準ツヌルはEmber-cliです。 ほずんどの人が垞にそれを䜿甚しおいたす。 Ember-cliを䜿甚するず、既存のアプリケヌションで新しいアプリケヌションずファむルを生成できたす。 このツヌルは、リ゜ヌスのコンパむルず、ラむブリロヌドずテストを含む開発環境の展開を担圓したす。 このため、すべおの基本的な生掻状況フィンガヌプリンティング、CSPたたはSRIたでをカバヌする倚くの拡匵機胜が䜜成されたした。 たた、戊闘環境での蚈算にも䜿甚できたす。







このツヌルがwebpackを䜿甚しないこずは、倚くの人にずっおは珍しいこずかもしれたせん。 代わりに、broccoli.jsが䜿甚されたす。 䞀般的に、このこずから、アプリケヌションの開発䞭、あなたは暑くも寒くもなりたせん。







Ember-cliは安定した䟿利なツヌルです。 そしお䞻にこれにより、コミュニティは遞択による苊痛に苊しむこずはありたせん。







ハヌドファむル構造



この瞬間は、倚くの堎合、フレヌムワヌクに䞍慣れな人々に衝撃を䞎えたす。 暙準のEmberアプリケヌションのファむル構造を芋おください







Emberアプリケヌションのファむル構造







倉曎できないこずを知ったずき、䜕ず蚀いたすか ファむルを他のフォルダヌに転送しお、独自の方法で名前を付けるこずはできたせん。 か぀お、このために、私はフレヌムワヌクに関連した「ファシスト」ずいう蚀い回しさえ聞いた。







ただし、このような制限は特に導入されたした。 以䞋がその蚌拠です。

むンタヌネットの蚌拠







もちろん、あなたが無料のアヌティストであり、脆匱な創造的な人であれば、この泚文を受け入れるのは難しいでしょう。 しかし、残りの「平均的な」プログラマ、開発の初心者、および新しいプロゞェクトごずにフォルダを敎理しおファむルに名前を付けるこずを考えたくない人にずっおは、これは非垞に䟿利です。







私の意芋では、これは倧きな圱響を䞎える゚レガントで効率的なアヌキテクチャ゜リュヌションです。 たた、耇雑なEmberアプリケヌションを開くたびに、新しいゲヌトの雄矊のようには芋えたせんが、コンポヌネントの堎所、テンプレヌト、サヌビス、テストなどは知っおいたす。 それは倚くの時間ず粟神的な゚ネルギヌを節玄したす。







アドオン



固定フォルダヌ構造を持぀ずいう決定には別の利点があるこずが時間の経過からわかりたした。 簡単な䟋でそれを明らかにしようずしたす。







耇数のアプリケヌションで同じコンポヌネントを䜿甚する必芁があるずしたしょう突然です。 その埌、コンポヌネントが垞にapp/components/



フォルダヌにあるこずがわかっおいる堎合、このコンポヌネントを別のnpmパッケヌゞで遞択し、それに応じお远加できたす。スマヌトEmber-cliは、コンパむル段階でこのコンポヌネントをアプリケヌションにプルしたす。 たた、アプリケヌションで再利甚できたす。







しかし、これは最も驚くべきこずではありたせん。 ここで驚くべきこずは、このパッケヌゞをオヌプン゜ヌスで公開するず、他のすべおのEmberアプリケヌションでも䜿甚できるこずです。 たた、統合に䜙分な劎力をかけるこずなく、すべおのアプリケヌションで他の開発者が投皿したこのようなnpmパッケヌゞをすべお䜿甚できたす。







コミュニティは長い間この考えを理解しおいたので、これらのパッケヌゞはほずんど䜕でも入手できたす。 UIラむブラリそれらなし、コンパむルツヌル、リリヌス甚の拡匵機胜、認蚌甚のラむブラリ、バック゚ンドず連携するためのアダプタなど。 そのようなパッケヌゞに぀いおは、必芁なパッケヌゞを芋぀けるこずができるEmberObserver Webサむトが䜜成されたした 。







アドオンは、Ember開発者が他の開発者ず機胜を共有する方法です。 たた、アドオンはすべおのアプリケヌションで機胜するため、だれもがほが同じセットを䜿甚したす。 したがっお、すでに確立されおいるプロゞェクトにアクセスするず、䜿甚するアドオンの90を知っおいる可胜性が高くなりたす。 あなたの人生で初めおそのコヌドを芋たずしおも、アプリケヌションはあなたに銎染みがありたす。







BEずの通信



私がたぶん通過する最埌の偎面は、バック゚ンドでの䜜業です。







通垞、リ゜ヌスパラダむムで䜜業する堎合、 EmberではEmber-dataラむブラリを䜿甚しおdataを凊理したす 。 これはオプションですが、デフォルトではすべおの新しいアプリケヌションに远加されたす。 次のようなモデルを操䜜するためのDSLに぀いお説明したす。







DSLラむブラリEmber-data







さらに、ラむブラリ自䜓が、URLの内容、パラメヌタ、メ゜ッド、サヌバヌからの応答を解析する方法を決定したす。 幞運で、バック゚ンドの開発者がRESTむンタヌフェむスを蚘述するための䜕らかの暙準に埓う堎合、ペンずの通信を蚘述するのではなく、あなたの偎でアドオンを䜿甚できる可胜性がありたす。







幞運でない堎合、Ember-dataは必芁な抜象化、たずえばAdapterずSerializerを提䟛したす。 これらの抜象化は、図のように衚瀺されないようにクリヌンなコヌドを曞くのに圹立ちたす。

若いフロント゚ンド開発者がバック゚ンド統合を蚘述







デフォルトでは、Ember-dataはJSONAPI仕様に準拠しおいたすGraphQLおよびRESTずの比范に぀いおはこちら 。 私自身の経隓から蚀えば、JSONAPIを䜿甚するこずで、あなたずあなたのバック゚ンド開発者の時間ず道埳的な力を倧幅に節玄できたす。 キャメルケヌスやケバブの堎合、URLがどうあるべきかに぀いおは説明したせん。属性ずパラメヌタヌがあり、PATCHたたはPUTを䜿甚しお、埋め蟌みリ゜ヌスのリク゚ストずレスポンスのJSON構造を倉曎する必芁がありたす。 モデル、その関係、および属性のビゞネスルヌルのみを説明したす。 これは、遞択の制限が生産性にプラスの圱響を䞎える別のケヌスです。







どこから始めたすか



あなたが経隓豊富な開発者であるかどうかに関係なく、 公匏チュヌトリアルを開いおEmberに぀いお知り始めるこずをお勧めしたす。







圌はすべおの䞻芁なポむントを埐々に玹介したす









どこに問い合わせればいいですか



Ember開発者の䞻な通信チャネルは twitter 䞍䞀臎サヌバヌ 。 経隓豊富なプログラマヌは、垞に理解できない瞬間にあなたを助けるためにたむろしおいたす。 ロシア語のチャンネルもありたす。 たた、すべおのEmberアプリケヌションのアヌキテクチャが同じであり、誰もが同じツヌルを䜿甚するこずを忘れないでください。 これにより、質問に察する迅速な回答の可胜性が倧幅に高たりたす。







他の通信チャネルはりェブサむトで芋぀けるこずができたす。







あずがき



フィナヌレでは、䞻な論文をもう䞀床匷調したいず思いたす。 Ember.jsを䞀床孊習し、この知識をすべおのプロゞェクトに適甚したす 。







ご枅聎ありがずうございたした








All Articles