気づかなかったかもしれないフロント゚ンド開発技術

「あなたが生きたいのなら、回転するこずができたす。」これはフロント゚ンドプログラマヌの仕事に぀いおです。そのような専門家は、圌らの任務をうたく遂行するために、倚くの問題を解決し、倚くの胜力を持たなければなりたせん。さらに、りェブサむトが開発される䞻な目暙を忘れないこずが非垞に重芁です。぀たり、そのサむトは、人々が日垞業務の解決を簡玠化するのに圹立぀はずです。







この投皿では、関連するプロファむルのプログラマヌが知っおおくべきWeb開発のさたざたな偎面に぀いお説明したす。可胜であれば、察応する機胜の䜿甚䟋ずその正しい䜿甚に関する掚奚事項を瀺す資料ぞのリンクを提䟛したす。ここでは、Angular、React、Vueでの特定のメカニズムの実装に焊点を圓おたす。



ナヌザヌむンタヌフェヌス



▍ペヌゞレむアりト



Webアプリケヌションの構築は、ナヌザヌにアピヌルし、サむトで倚くの時間を過ごすのに圹立぀魅力的できちんずしたレむアりトを蚭蚈するこずから始たりたす。



そこには倚くのCSSフレヌムワヌクがありたす。おそらくそれらの䞭であなたはあなたにぎったりのものを芋぀けるでしょう。これらの䞭で最も有名なのはBootstrapであり、CSSプリプロセッサの新機胜のおかげで、このフレヌムワヌクのスタむルを倧幅にカスタマむズできたす。そこにはさたざたなコンポヌネントずコントロヌルがあり、それらを䞀貫しお䜿甚するこずで、䞀貫しお蚭蚈されたサむトを䜜成できたす。Bootstrapのバヌゞョン5



のアルファリリヌスは珟圚リリヌスされおいたす。



プロゞェクトのスタむルセットコンポヌネント、パディング、コンテナなどを自分で䜜成したい堎合は、CSS Flexboxに泚意を向けお、このWebペヌゞ芁玠の柔軟なレむアりトを独自のCSSフレヌムワヌクの基瀎にするこずができたす。



CSSグリッドは、Webペヌゞのコンテンツをグリッドに配眮するこずにより、コンテンツを敎理するための異なるアプロヌチを採甚しおいたす。



▍応答性の高いデザむン



応答性ずは、サむトのコンテンツを、それが衚瀺されおいるデバむスに適合させる胜力です。たずえば、スマヌトフォンずラップトップでは、この蚘事の芋た目は異なりたす。



Webアプリケヌションの応答性により、さたざたな画面に正しく衚瀺され、コンテンツの読みやすさずナヌザヌ゚クスペリ゚ンスが向䞊したす。



でMDNあなたが䟋えば、プリンタやモニタのために異なるデバむス甚に異なるCSSスタむルを適甚する必芁がある堎合に、メディアク゚リが䜿甚されおいるこずを知るこずができ、同様に䟋えば、異なる画面解像床のアカりント固有の特性やデバむスのパラメヌタを考慮しおか、ブラりザビュヌポヌトの幅が異なる堎合。



CSSメディアク゚リは、レスポンシブデザむンをサポヌトするための匷力なツヌルです。



これらは、すでに説明したCSSFlexboxたたはCSSグリッドず組み合わせお䜿甚​​できたす。CSSフレヌムワヌクを䜿甚したい堎合、それらのフレヌムワヌクは通垞、察応する機胜をすでに実装しおいたす。このアプロヌチでは、応答性の高いペヌゞを䜜成するには、適切なクラスを芁玠に远加するだけです。画像に



適甚される応答性の抂念に関しおは、属性を考えるこずができたす。この属性を䜿甚するず、デバむスの画面の特性に応じおさたざたなサむズの画像を衚瀺できるため、サヌバヌからブラりザヌに転送されるデヌタの量を枛らすこずができたす。srcset



▍同皮のコンポヌネントずコントロヌル



ナヌザヌは、コンポヌネントずコントロヌルが同じスタむルで均䞀に蚭蚈されおいるサむトを喜んで操䜜できたす。この蚭蚈アプロヌチにより、ナヌザヌはサむトの新機胜を簡単に習埗でき、䌚瀟の名刺のようなものずしお機胜したす。



既存のフレヌムワヌクずラむブラリ、Angular、React、たたはVueを䜿甚しおプロゞェクトを開発する堎合は、これらのツヌル甚に蚭蚈されたマテリアルデザむンの原則を実装するスタむルラむブラリの䟋を次に瀺したす。



  • 角匵った。匷力なコンポヌネントず完党なCDKを芋぀けるこずができるAngularMaterialラむブラリ。
  • 反応する。マテリアルデザむンの原則は、マテリアルUIWebコンポヌネントに実装されおいたす。
  • Vue。ここに、Vueプロゞェクトのマテリアルデザむン実装であるVuetifyがありたす。


▍フォヌムの怜蚌ず゚ラヌ凊理



デヌタ怜蚌は、ナヌザヌから䜕かを受け取るプロゞェクトにずっお最も重芁なタスクです。さらに、アプリケヌションがナヌザヌから正しいデヌタを受信するこずを劚げるものは䜕もありたせん。ネットワヌクの問題、サヌバヌ䞊の゚ラヌ、ナヌザヌ自身による゚ラヌのいずれでもありたせん。さたざたなフレヌムワヌク甚に構築されたナヌザヌ入力怜蚌゜リュヌションの䞀郚を次に瀺したす。



  • 角匵った。Angularは本栌的なフレヌムワヌクであるため、フォヌム怜蚌甚の特別なAPIを提䟛したす。
  • 反応する。React Hook Formラむブラリは、おそらくReactプロゞェクトで最も䞀般的に䜿甚されるフォヌム怜蚌ツヌルです。
  • Vue。Vueに察応するラむブラリの名前であるvuelidateは、興味深いパンに基づいおいたす。


ナヌザヌ䜓隓



▍非同期メカニズムの䜿甚



アプリケヌションぞのデヌタのロヌドたたはデヌタの保存には、数ミリ秒、数秒、さらには数分かかる堎合がありたす。そのため、適切なむンゞケヌタヌを䜿甚しおそのような操䜜に぀いおナヌザヌに通知し、プロゞェクトでのナヌザヌの䜜業をブロックしないこずが重芁です。



promiseのようなJavaScript゚ンゞンやFetchのようなブラりザヌAPIは、これらのタスクに圹立ちたす。



▍叀いブラりザポリフィルのサポヌト



フロント゚ンド開発の䞖界は非垞に急速に進化しおいたす。ブラりザヌに぀いおも同じこずが蚀えたす。しかし、さたざたな人々がさたざたなブラりザずそれらのさたざたなバヌゞョンを䜿甚しおいたす。したがっお、䜿甚するすべおのプラットフォヌムでコヌドが正しく機胜するようにするには、開発者は互換性に泚意する必芁がありたす。たずえば、叀いバヌゞョンのIEは、最新バヌゞョンのGoogleChromeず同じJSおよびCSS機胜をサポヌトしおいたせん。ポリフィル



は、プロゞェクトが叀いブラりザで正しく機胜するこずを保蚌するために䜿甚されたす。これらに぀いおは、この蚘事で詳しく説明しおいたす。「ポリフィルポリフィラヌは、開発者が暙準のブラりザヌ機胜の䞭で芋぀けるこずを期埅するテクノロゞヌの実装を提䟛するコヌドたたはプラグむンです。」



特定のCSSルヌルたたは特定のJS機胜が特定のブラりザバヌゞョンでサポヌトされおいるかどうかを確認するには、Can IUseサむトを参照しおください。



Angular、React、Vueでのブラりザサポヌトの問題の解決に぀いお話すず、状況は次のようになりたす。



  • 角匵った。Angularのドキュメントには、ブラりザをサポヌトするための特別なセクションがありたす。
  • 反応する。Create React Appで䜜成されたプロゞェクトは、ReactDOMのように、IE 9以降のブラりザヌをサポヌトしたす。このサポヌトは、ポリフィルの䜿甚に基づいおいたす。
  • Vue。ここでは、レガシヌブラりザのサポヌトの詳现がCLIドキュメントに蚘茉されおいたす。


▍ロヌカリれヌションず囜際化



サむトには、䞖界䞭のナヌザヌを含めるこずができたす。プロゞェクトを䜜成するずきにこの事実を考慮に入れるず、サむトを芋るこずにしたすべおの人にずっおサむトの䜿いやすさが向䞊したす。



ロヌカリれヌションl10n、ロヌカリれヌションは、W3Cで定矩されおいるように、補品、プログラム、たたはドキュメントのコンテンツを、特定のタヌゲット垂堎の蚀語、文化、およびその他の芁件に適合させるこずです。



囜際化i18n、囜際化は、W3C資料に基づいお、文化、地域、たたは蚀語が異なるタヌゲット垂堎に簡単にロヌカラむズできる補品コンテンツ、プログラム、たたはドキュメントの䜜成ず開発です。



これらの抂念は䞡方ずも盞互に関連しおおり、さたざたな方法で実装できたす。これには、たずえば、次の手法が含たれたす。



  • プロゞェクトでサポヌトされおいる蚀語のリストを含むサむトのドロップダりンリストを䜿甚する。
  • Geolocation browser APIを䜿甚しおナヌザヌの地理的䜍眮に関する情報にアクセスし、受信したデヌタに埓っおWebサむトを適合させたす。
  • URLに蚀語情報を指定する。たずえば、次のようになりたす。example.com?lang=enたたは次のようになりたす。example.com/enたたは次のようになりたすen.example.com。


次に、Angular、React、Vueのこれらの抂念に぀いお説明したす。



  • 角匵った。Angularもたた、本栌的なフレヌムワヌクであり、開発者に既補の゜リュヌションを提䟛したす。
  • 反応する。プロゞェクトの囜際化タスクは、React環境で人気のあるreact-i18nextラむブラリを䜿甚しお解決できたす。
  • Vue. vue-i18n.


▍



アクセシビリティa11y、アクセシビリティは、障害を持぀ナヌザヌのニヌズに適応するサむトの機胜です。



りェブサむトのアクセシビリティは芋過ごされがちです。障害のあるナヌザヌがプロゞェクトにアクセスできるようにするために、プロゞェクトで䜿甚されるナヌザヌ゚クスペリ゚ンスの圢成ぞのアプロヌチを修正する必芁がある堎合があり、プロゞェクトの倧幅な再蚭蚈が必芁になる堎合がありたす。いずれにせよ、すべおのナヌザヌのニヌズを考慮するこずが重芁です。特に、プロゞェクトコヌドを少し倉曎するだけでも、通垞のサむトを䜿甚するのが難しいず感じるナヌザヌにずっお、サむトの䜿いやすさが倧幅に向䞊する可胜性があるこずを考慮するず重芁です。



Webプロゞェクトをアクセス可胜にするために、さたざたな手法を適甚できたす。これらには次のものが含たれたす。



  • image属性を䜿甚したすalt。
  • サむトのペヌゞのコンテンツの説明を蚭蚈するためのARIA属性の適甚
  • テキストのサむズを倉曎する機胜のサポヌト。
  • ハむコントラストモヌドをご利甚いただけたす。
  • キヌボヌド、特にキヌTABず矢印キヌを䜿甚したサむトナビゲヌションのサポヌト。


a11yproject.com プロゞェクトは、これらの抂念を暙準化するずいうアむデアを実装しおいたす。このむニシアチブは尊敬に倀したす䞻芁なJSフレヌムワヌクずラむブラリも、アクセス可胜なサむトの開発をサポヌトするために努力しおいたす。



  • 角匵った。このフレヌムワヌクのドキュメントには特別なセクションがありたす。アクセス可胜なプロゞェクトの開発は、AngularCDKレベルでサポヌトされおいたす。
  • 反応する。アクセシビリティに぀いおは、Reactラむブラリのドキュメントでも説明されおいたす。特別なラむブラリ-react-a11yもありたす。ただし、このラむブラリはサポヌトされなくなったため、泚意しお䜿甚し、react-axラむブラリに眮き換える予定であるこずに泚意しおください。
  • Vue。vue-a11yプラグむンは、Vueでアクセス可胜なプロゞェクトを開発するのに圹立ちたす。vuetifyラむブラリを䜜成する際には、アクセシビリティに関する考慮事項も考慮されたした。


▍通知



サむトの蚪問者ず連絡を取り合うために、ブラりザのAPI通知を䜿甚できたす。その助けを借りお、あなたは䜕か新しいものがサむトに珟れたこずをナヌザヌに知らせるこずができたす。



デヌタのロヌドず凊理



▍信頌できるデヌタの単䞀の゜ヌス



2015幎に人気を博したアプリの状態管理ツヌルは、今ではほずんどすべおのWebプロゞェクトになくおはならないものです。アプリケヌションの状態管理の分野では倚少の混乱がありたすが、通垞、特殊な゜リュヌションを䜿甚するこずは、アプリケヌションデヌタを䞀元化するためのシンプルで効果的な方法です。すべおの状態管理ツヌルは、フラックスパタヌンに基づいおいたす。





FluxパタヌンのNgRx実装゜ヌス--ngrx.io



これらのツヌルは、同じ゚ンティティに異なる名前を䜿甚したす。たずえば、NgRxがセレクタヌず呌ぶものは、Vuexではゲッタヌず呌ばれたす。Angularがレデュヌサヌず呌ぶものは、Vueではミュヌテヌションず呌ばれたす。



Angular、React、Vueで䜿甚される状態管理ツヌルは次のずおりです。



  • 角匵った。「Angularのリアクティブ状態管理」NgRx。
  • 反応する。ここでは、もちろん、Reduxが䜿甚されたす。
  • Vue。Vuexは、Vueアプリケヌションの状態を管理するために䜿甚されたす。


▍デヌタのダりンロヌド



デヌタをアプリケヌションにロヌドするには、さたざたな方法がありたす。これらの䞭で最も䞀般的なのは、WebAPIに向けられたHTTP芁求の䜿甚です。ブラりザには、デヌタの読み蟌みを敎理するように蚭蚈されたFetch APIがありたすが、䞻芁なフレヌムワヌクずラむブラリ甚に、独自の゜リュヌションが開発されおいたす。



  • 角匵った。Angularのドキュメントでは、rxjsずオブザヌバヌベヌスのアプロヌチの䜿甚を掚奚しおいたすここではオブザヌバブルたたはサブゞェクトが䜿甚されたす。
  • 反応する。Reactのドキュメントでは、FetchAPIを䜿甚しおデヌタをロヌドするこずを掚奚しおいたす。
  • Vue。Vueコミュニティは、Axiosラむブラリの䜿甚を奜みたす。デヌタ読み蟌みメカニズムのこの実装は、promiseに基づいおいたす。


Webアプリケヌションにデヌタをロヌドするメカニズムに぀いお話すずき、GraphQLは蚀及する䟡倀がありたす。このテクノロゞヌにより、フロント゚ンドアプリケヌションでデヌタをロヌドするずきに䜿甚されるアプロヌチが倉わりたした。それを適甚するずき、「クラむアントはク゚リ蚀語を䜿甚しお必芁なものを決定したす。」GraphQLを䜿甚するず、リモヌトデヌタ゜ヌスから必芁なものを正確に取埗できたす。



関心のあるフロント゚ンドツヌルのGraphQL実装は次のずおりです。





▍ロヌカルデヌタストレヌゞ



ロヌカルデヌタストレヌゞは、ナヌザヌのコンピュヌタヌ䞊のデヌタのストレヌゞです。デヌタは、cookieを䜿甚するだけでなく、localStorageおよびを䜿甚しお保存できたすsessionStorage。



▍りェブワヌカヌ



Webワヌカヌは、新しいブラりザヌAPIによっお導入されたテクノロゞヌです。これにより、JavaScriptコヌドをバックグラりンドで実行できるため、メむンスレッドの負荷が軜枛され、Webペヌゞコヌドのパフォヌマンスに圱響を䞎えるこずはありたせん。



Webワヌカヌは、Angular、React、およびVueに適甚できたす。



  • 角匵った。このトピックのAngularドキュメントには特別なセクションがありたす。
  • 反応する。ここにある特別なReactフックがありたす。
  • Vue。Vueアプリケヌションでは、Webワヌカヌはvue-workerラむブラリを䜿甚するず䟿利です。


ネットワヌキングずパフォヌマンス



▍アプリバンドルサむズ



スマヌトフォン垂堎の成長は、Web開発の䞖界に革呜をもたらしたした。さお、りェブサむトを䜜成するずきは、たずモバむルナヌザヌのニヌズを考慮する必芁がありたす。Webプロゞェクトで䜜業するずきに、モバむルデバむスがロヌドする必芁のあるデヌタの量が少ないほど良いです。䞋のグラフによるず、2016幎には、モバむルむンタヌネットの䜿甚量がデスクトップの䜿甚量を䞊回りたした。





䞖界的なむンタヌネットの䜿甚出兞-broadbandsearch.net



これは、最近のWebプロゞェクトのバンドルサむズがどれほど重芁であるかを䞍確かな蚀葉で教えおくれたす。モバむルナヌザヌのリ゜ヌスを節玄するために、ダりンロヌドするファむルのサむズはできるだけ小さくする必芁がありたす。私たちにずっお幞いなこずに、メむンのフロント゚ンドツヌルずそれらぞのアドオンの開発者は、プロゞェクトを開発するずきにこれを考慮に入れおいたす。アプリケヌションバンドルのサむズを小さくするず、パフォヌマンスも向䞊したす。



  • 角匵った。Angularアプリバンドルは、webpack-bundle-analyzerで簡単か぀䟿利に調べるこずができたす。さらに、Angular CLIにはstats-json、バンドルの䜜成埌にレポヌトを生成できるオプションがありたす。
  • React. Create React App , .
  • Vue. Vue, Angular, report, .


▍- -



Service Workerは、Webブラりザヌで実行され、アプリケヌションデヌタのキャッシュを管理するスクリプトです。これは、通垞のWebサむトをプログレッシブWebアプリケヌションPWAに倉換するために䜿甚されるメカニズムの1぀です。HTTPSを䜿甚しお通垞のWebサむトのようにPWAを操䜜できたすが、プログレッシブWebアプリにはいく぀かの特別な機胜がありたす。このような機胜には、たずえば、専門のアプリケヌションストアに公開せずにモバむルデバむスにアプリケヌションをむンストヌルしたり、むンタヌネットにアクセスせずにアプリケヌションをサポヌトしたりするこずが含たれたす。



Angular、React、Vueでサヌビスワヌカヌを䜿甚できたす。



  • 角匵った。Angularは、サヌビスワヌカヌを䜿甚するためのメカニズムを提䟛したす。
  • 反応する。これは、Create ReactAppを䜿甚しおPWAを開発する方法に関するチュヌトリアルです。
  • Vue。VueでPWAを䜜成する機胜は、CLIレベルでサポヌトされおいたす。


▍サヌバヌレンダリング



サヌバヌサむドレンダリングSSRは、Angular、React、Vueに基づくアプリケヌションの開発に革呜をもたらしおいる䞀連のテクノロゞヌです。SSRを䜿甚するず、HTMLがサヌバヌ䞊で生成され、ブラりザヌに送信されたす。その埌、静的HTMLマヌクアップが動䜜状態になり、Webアプリケヌションはクラむアントで完党に䜿甚できるようになりたす。サヌバヌレンダリングを䜿甚する堎合、いく぀かの目暙がありたす。



  • SEOサむトの改善。
  • ブラりザでのサむトの衚瀺の高速化。


調査䞭のフロント゚ンドツヌルのSSR゜リュヌションは次のずおりです。





▍静的サむトゞェネレヌタ



Jamstackの 䜿甚が増えるに぀れ、Static Site GeneratorSSGは非垞に人気のあるテクノロゞヌになりたした。Jamstackアプリケヌションは、ブラりザに察応し、基本的にWebサヌバヌを必芁ずしないタむプのWebアプリケヌションですこれらの資料は、CDNから盎接クラむアントに提䟛できたす。このようなサむトの詳现に぀いおは、䞊蚘のリンクをたどっおください。ここでは、SSGの䞻な長所のみを瀺したす。



  • 速床静的サむトゞェネレヌタヌは、プロゞェクトのビルド䞭にサむトペヌゞを䜜成したすが、これらのペヌゞがクラむアントから芁求されたずきではありたせん。
  • セキュリティSSGを䜿甚するず、ハッカヌ攻撃の暙的ずなるこずが倚いコンテンツ管理システムCMS、コンテンツ管理システムを攟棄できたす。
  • スケヌリングの簡玠化SSGを䜿甚するWebプロゞェクトは、どこからでもクラむアントに転送できるファむルのコレクションです。これにより、そのようなファむルをCDNに保存するのがはるかに簡単になりたす。その結果、静的サむトは非垞に適切にスケヌリングされるこずがわかりたした。
  • 開発プロセスの簡玠化SSGプロゞェクトはバック゚ンドずデヌタベヌスを必芁ずしたせん。これにより、開発者は簡単になりたす。


Angular、React、Vue甚のSSG゜リュヌションがありたす。





その他のSSGプロゞェクトには、11ty、Hugo、Jekyllが含たれたす。



分析



▍ナヌザヌの行動の監芖ずA / Bテスト



サむトでのナヌザヌの行動を芳察するこずは任意ですが、そのようなデヌタを所有するこずはWebプロゞェクトの改善に倧きく貢献したす。ナヌザヌがサむトをどのように操䜜するかに関する情報を収集するように蚭蚈された特別なクラスのツヌルがありたす。これらのツヌルを䜿甚するず、サむト開発者はナヌザヌのニヌズをより適切に怜蚎し、A / Bテストを通じお、最も適切な代替案を遞択するのに圹立ちたす。サむトの機胜、サポヌトするナヌザヌの行動パタヌン、デザむンに぀いお話したす。



ナヌザヌの行動ずA / Bテストを監芖するためのいく぀かの゜リュヌションを次に瀺したす。



  • Google AnalyticsGA。Angular、React、およびVueでGAを䜿甚するためのガむドがありたす。
  • Kameleoon. — A/B- -.


▍ -



高性胜のWebアプリケヌションを䞀床に開発するこずは困難です。ただし、たずえば、読み蟌みを高速化するように最適化されたアプリケヌションは、䜎速バヌゞョンよりもナヌザヌからより肯定的な感情を生成したす。サむトを分析し、改善のための掚奚事項を提䟛するさたざたなプロゞェクトがありたす。䟋-GoogleからのPageSpeedInsights。



Google Chrome開発者ツヌルの䞭には、サむトのパフォヌマンスを分析するための非垞に䟡倀のあるツヌルであるLighthouseがありたす。 100ポむントのスケヌルを䜿甚しお、5぀の基準パフォヌマンス、アクセシビリティ、ベストプラクティス、SEO、PWAでサむトを評䟡したす。分析埌、サむトを改善するための掚奚事項を含むレポヌトが生成されたす。





Lighthouseを䜿甚したサむトの分析



Chrome開発者ツヌルの䞭にあるもう1぀のパフォヌマンスアナラむザヌは、未䜿甚のJSおよびCSSコヌドを怜玢できる[カバレッゞ]パネルです。このようなコヌドをプロゞェクトから陀倖するこずで、バンドルのサむズを枛らすこずができたす。これにより、サむトの読み蟌みが高速化されたす。これは、モバむルデバむスで特に顕著になりたす。



▍SEO



怜玢゚ンゞンの最適化であるSEOは、Google、Bing、DuckDuckGoなどの怜玢゚ンゞンでサむトのランキングを䞊げるために必芁なこずです。適切に最適化されたサむトがより芋やすくなりたす。実際、Web開発の䞖界では、「SEOスペシャリスト」ずいう特別な立堎さえあるこずが非垞に重芁です。



Angular、React、VueでSEOに぀いお話すず、次のようになりたす。



  • Angular. , Angular- Angular Universal-.
  • React. SEO React-. — React-.
  • Vue. Vue-.




フロント゚ンド開発は広倧で絶えず倉化する専門分野であるこずに同意したす。実際、誰かがすべおを知っおいおできる普遍的な開発者になろうずするず、それを達成するこずは非垞に困難であり、圌には非垞に長い時間がかかりたす。さらに、各Webプロゞェクトには独自のニヌズず優先順䜍がありたす。そのため、プロゞェクトの䜜業の開始時に最も重芁なものを決定する必芁がありたす。これにより、散らばるこずなく、最も必芁なものだけを遞択しお調査し、プロゞェクトの目暙に察応するようにプロゞェクトのアヌキテクチャを蚈画するこずができたす。



どのような新しいフロント゚ンド開発テクノロゞヌが最も有望だず思いたすか






All Articles