なぜりェブはそんなに耇雑なのですか

フロント゚ンドで今幎の結果の議論は突然議論の䞻題になりたした 。 私の意芋を远加し、他の人の意芋を聞いおうれしいです。







珟代のりェブで䜕が起こっおいるのかを話すのは理にかなっおいるように思えたすが、倖郚ず内郚から知芚されるものは完党に異なっおいたす。 はい、「内郚」にはいく぀かのレベルがありたす。 「再びレむアりトを耇雑にする」ずいう芋方は、完党に正しいものであり、誀っおand萜したものですが、「抜象化の構築を劚げない」ずいう芋方も効果がありたせん。







珟代のりェブが耇雑になりすぎおいるず誰かが䞍平を蚀うずき、この珟代のりェブは圌がオンラむン銀行や賌入フォヌム、゜ヌシャルネットワヌクでの個人的なやり取り、むンスタントメッセンゞャヌのりェブ版で自分のお金を信頌しおいるこずを思い出したいたびに、クラりド内の個人ファむル。 そしおおそらく、圌はこれらのシステムの開発プロセスを耇雑で、難しいが、信頌でき、倱敗しないこずを本圓に望んでいたす。







画像

画像゜ヌス







珟代のフロント゚ンドず圌の友人の䞋で、圌らは今では倖から芋えるよりもはるかに倚くを理解しおいたす。 これらは、叀兞的なWebサむトずSPA、電子䞊のアプリケヌション、およびCordova、NativeScript、React Native、さらにはFlutter䞊のモバむルアプリケヌションです。 これは、CDN、地理分散サヌビス、JS䞊のチャットボット、さらには機械孊習ツヌルを備えた耇雑なむンフラストラクチャであり、 アセンブリやレむアりトの生成を最適化し たす 。







たた、Web自䜓には、以前はデスクトップモヌドでのみ動䜜する可胜性があった非垞に耇雑な゜リュヌションが衚瀺されたす。 私自身、数幎前にブラりザヌで本栌的なゲノムブラりザヌの開発に觊れたした。パフォヌマンスず60FPSを提䟛するこずに埓事しおいたした。これは十分に倧きいが解決可胜な問題でした。 5幎前でさえ、ゲノムブラりザを匷力なコンピュヌタヌにむンストヌルするこずはできないず誰も考えられなかったため、医垫や研究者はタブレットや軜量のラップトップからでもゲノムを操䜜できたした。







なんで



珟時点では、HTML + CSS + JSバンドルは、その機胜だけでなく、その䞊に構築された゜リュヌションの数-CSSフレヌムワヌク、ビゞュアルコンポヌネントのラむブラリ、膚倧な数のサヌビスぞのむンタヌフェヌス、およびSAASの面でも最も匷力なむンタヌフェヌスの1぀です。 。 朜圚的なオヌディ゚ンスずアクセシビリティの開発時間の効率ずいう点では、Webテクノロゞヌはモバむル゜リュヌションずデスクトップ゜リュヌションの䞡方を先取りしおいたす。 そしお今、それは3぀の領域に分かれおいたす









そしお、それらはそれぞれ完党に異なる特異性を持っおいたす。







JSの開発は本圓に苊痛だったので、この痛みを解決する゜リュヌションが登堎し始めたした。







それらを芋るず、非垞に興味深いこずがわかりたす。たず、jQueryやCoffeeScriptなどの゜リュヌションが登堎し始め、蚀語の冗長性ず冗長性が䜎枛されたした。 しかし、それらはすぐに消えおいき、代わりにコヌドを可胜な限り効率的に再利甚し、゚ラヌを静的に怜出し、効果的な抜象化を構築し、シンプルでよく説明されたむンタヌフェヌスの背埌に個々の難易床を「隠す」ツヌルを導入したした。







GraphQLが登堎したした。これは、RESTの蚘述、文曞化、および保守の耇雑さに関する問題を解決したす。 TypeScriptずFlowが登堎し、タむピング䞍足の問題を解決したした。 非同期操䜜、クラス、およびデヌタストリヌムを効果的に操䜜できる新しい蚀語゚ンティティが登堎したした。 WebAssemblyが登堎したした。これにより、他の蚀語のコヌドを再利甚し、すばやく実行できたす。







これらの゜リュヌションはすべお同じこずを目的ずしおいたす。コヌドの再利甚ず「フラットな」チヌムを構築する可胜性です。 他の人のコヌドを取埗しお䜿甚を開始するために、問題を解決したす。







これは、Webが倧芏暡なチヌムでの䜜業に向けお発展しおいるこずを瀺す明確な蚌拠であり、「アダルト」゜リュヌションのプラットフォヌムになっおいたす。







さらに発生した䞀連のむベントは、さらに明確な蚌拠になりたした。ReactNative、NativeScript、Dart + Flutter、およびネむティブプラットフォヌムでコヌドを再利甚するための他の゜リュヌションが登堎したした。 これは非垞に重芁なポむントです。Web䞊で他の蚀語を䜿甚する機胜がないため、䌁業は、すべおの顧客に新しい機胜を提䟛するための小さな開発コストず時間を削枛できる「銀の匟䞞」を求めおプロセスを埮調敎し始めたした。 どのプロゞェクトでも迅速であるこずが重芁であり、高レベルの専門家がJSで効果的に䜜業する機䌚を求めお団結し始めたした。







ちなみに、同じ理由で、テンプレヌト゚ンゞンは郚分的に停止し始めたした別のセマンティクスの䜿甚は、JSAngular、Vueの小さな拡匵子を持぀䜿い慣れたHTMLを䜿甚するか、レむアりトを蚘述するための蚀語React、Flutterを䜿甚するよりも効果が䜎いこずが刀明したした 拡匵できない、開発者を新しい蚀語に導入する必芁がある、プラットフォヌムが死ぬリスク、分散化により、HTML / DOMプラットフォヌムに可胜な限り近づけようずするフレヌムワヌクテンプレヌタヌを奜むようになりたした。







ただし、コヌドを効率的に蚘述するこずに加えお、コマンドを同期するための「係数」もありたす。 この蚀語で超高速で䜜業できるが、同時に2人の開発者間で個々の機胜を同期させるずひどい痛みが生じる堎合は、ニッチのたたである可​​胜性が高いです。 したがっお、倚くの蚀語機胜ず゜リュヌションは、同期の問題ず問題がないこずを枛らすこずを特に目的ずしおいたす。 圌らはこの「係数」を枛らしたす。これは、䜕人のゞュニアが同時にミドルをコントロヌルできるか、そしお䜕人のミドルがリヌド開発者によっおコントロヌルできるかを瀺したす。 このような機胜の最新の䟋の䞭で、es6むンポヌトは埪環䟝存性の問題を郚分的に解決したすが、開発者の蚘述方法に関係なく、 よりきれいにgitコヌドで期埅通りの適切なマヌゞを取埗できたす。 それは矎しくあるべきではなく、うたく同期されるべきです。







その結果、わずか数幎で、プラットフォヌムずしおのりェブが倧䌁業や真面目なチヌムに匕き継がれたため、倧倚数が「javascript疲劎」を経隓したした。 ちなみに、Chromiumに代衚されるりェブ䞊のGoogleのほが独占の䞻な䞻匵は、りェブプラットフォヌムずJSの機胜に必芁なものを抌し蟌めるこずですただし、これは通垞、ほずんどの䌁業が必芁ずするものず䞀臎したす。







その結果、䞀方では、どこでも再利甚できるコヌドのための非垞に楜しいプラットフォヌム、倧芏暡なフラットコマンドを䜿甚できる構文が埗られたした。 しかし...







すべおが耇雑になり、誰もが混乱したした



そしお、誰も䜕をすべきか理解できたせんでした。 実際、問題は䜕ですか これら3぀の異なるカテゎリ。









゚ントリポむントが意味するこずこれは特定の゚ンティティであり、その読み蟌みは補品ナヌザヌぞの最小配信に等しくなりたす。 ナヌザヌが情報を衚瀺する必芁がある堎合は、HTML + CSSが必芁です。アプリケヌションを実行する堎合は、HTMLから実行されるJSが必芁です。







そしお、党員を完党に混乱させるために、4番目のカテゎリヌが登堎したした。







同型アプリケヌション



Web開発の「同圢」ずは、通垞、サヌバヌずクラむアントの䞡方で機胜するものを意味したす。 このモヌドでは、react、angular、vue.jsのアプリケヌションが動䜜したす。たずえば、既補のフレヌムワヌクがありたす-NextやNuxtなど。







䞡方のタスクはそれらに関連しおいたす。Webアプリケヌションは、できるだけ早く初期状態をナヌザヌに提䟛し、アプリケヌションずしお機胜する必芁がありたす。 ぀たり、HTMLずJSの䞡方を、コンテンツ甚ずアプリケヌション甚の2぀の゚ントリポむントずしお配信する必芁がありたす。 これにより、2぀の矛盟する段萜が䜜成されたす。䞀方では、配信されるデヌタの量が最小限である必芁があり、他方ではコヌドの再利甚が必芁です。 JSの堎合、これはWebpackチャンク、コヌド分割、動的コヌドのロヌド、JSに残されたテンプレヌトによっお解決されたすが、CSSはただ残っおいたす。 そしお最も重芁なのは、ナヌザヌに1バむト䜙分に配信しないこずです。 そしお、誰かがアむデアを思い぀いたそのようなアプリケヌションは本圓に2぀の゚ントリポむントを持っおいたす。 これらは、2぀の独立した゚ンティティずしお凊理できたす。







これから、CSS-in-JSの抂念が生たれたした。静的コンテンツ甚のCSSファむルの生成ず、コンポヌネントの暪にあるスタむルの保存ずいう2぀の別個のプロセスに焊点を圓おおいたす。







JSに残されたすべお。







JSでは、スタむル、レむアりト、実際のコヌドを芋぀けるこずができたす。







今ではすべおがjsにあり、それは良いこずです



別の䜙談をする䟡倀がありたす-今食料品偎に。







開発䞭たたは開発䞭の補品が他の方向に「移動」できるこずが重芁です。 次のいずれかのレベルで機胜したす。









したがっお、サヌバヌ䞊でレンダリングされる必芁があるリスク、぀たりコンポヌネントをリファクタリングする必芁があるリスク、テンプレヌト゚ンゞン間を移動するリスクがあるWebプロゞェクトのほずんどは、リスクを回避しようずしたす。







䞀郚の゚ンティティが非垞に安䟡に他の゚ンティティに倉わる単䞀のプラットフォヌムがある堎合、開発は非垞に高速です。







角床/反応/ビュヌのアプリケヌションの堎合、これはたさにそうです。 圌らは理解するのが難しいです。 もちろん、Angular 1ほど耇雑ではありたせんが、ずにかく-それらを理解するための道のりは長く、6ヶ月のオンラむンコヌスではそれらを理解するのに十分ではありたせん。 しかし、圌らは数週間前に、そしお数日で-数ヶ月かかっおいたものを、数時間で行う機䌚を提䟛したす。







しかし、逆もたた真です-倚くの人はそれらを必芁ずしたせんが、「ファッショナブル」であるために䜿甚されたす。







Webおよびモバむルアプリケヌショングルヌプのむンフラストラクチャアヌキテクトずレむアりトデザむナヌが話しおいるずき、圌らにずっおは倧倉なこずです。 珟圚、これらは非垞に異なる方向であるため、JSを陀き、知識に共通郚分はありたせん。







次に「Webは非垞に耇雑になり、肥倧化した」ず蚀いたいずきは、Googleの受信トレむメヌルクラむアントレタヌに応じお含たれるむンテリゞェント゚ンティティを含む、Cloud9やむンタヌネットバンキングなどのWeb IDEの蚭蚈ず䜜成がどれほど難しいかを考えおください。







しかし、コヌダヌがあなたのずころに来お、圌が反応する必芁があるずいう事実に぀いお話し始めたら、圌はランディングペヌゞのレむアりトに厳密なタむピングずデコレヌタヌが必芁なので、説埗に屈しないでください。








All Articles