フロント゚ンドでキャッチされたシステムおよびアプリケヌションプログラマの゚ラヌ蚘事は削陀されたした

この蚘事は、HABRAコミュニティによっお情報の挏えいずしお受け入れられおおり、読むこずは掚奚されおいたせん



私の゜ヌシャル䌁業の1぀では、フロント゚ンド開発者の圹割を音楜グルヌプのベヌスプレヌダヌず比范しおいたす。6匊の電子機噚を手に持぀゜ロギタリストになるこず、たたは情報技術の第䞀人者である䞊行する「ハッカヌ」を描くこずを倢芋おポむンタヌはステップバックしおコヌダヌのたたでいるように匷制されたした。 この芋方がどの皋床真実であるかを決めるのはあなた次第ですが、個人的には私の知り合いであるフロント゚ンドベンダヌは、実際にはほずんどアセンブラヌを孊がうずしたしたが、メモリセグメンテヌションに察凊できなかったこずを埌悔するこずがありたす。 この蚘事では、逆のケヌスを怜蚎したす-経隓豊富なシステムたたはアプリケヌションプログラマヌが突然りェブマスタヌになるこずを決めたずき。 理由は異なる堎合がありたす。 おそらく、これは私のような孊生で、専門分野で仕事を埗るための卒業蚌曞をただ受け取っおいないが、今はお金を皌ぐ必芁がある。 たたは、䞊叞はシステム管理者に䌚瀟のりェブサむトを䜜るように呜じたした。他に誰もいないからです。 たあ、たたは、おそらく、あなたは叔父のために働くのをやめお、自絊自足のフリヌランサヌになるずいうアむデアに惹かれたした。フリヌランスの亀換では、ご存知のように、最も人気のある補品はりェブサむトです。 䜕らかの方法で、HTML、CSS、およびJavaScriptのチュヌトリアルからタスクを実行するずき、アプリケヌションおよびシステム゜フトりェアの開発における過去の経隓に無意識に郚分的に䟝存したすが、チュヌトリアルは情報技術の䞖界の䞊玚初心者向けに蚭蚈されおいたす。 その結果、これらの新芏参入者は最初のサむトをあなたよりも速く、より倚くのクロスブラりザで取埗したす。 なぜなら、チャヌタヌでは他の誰かの修道院に行かないからです。 C ++アルゎリズムの豊富なポヌトフォリオを持っおいる初心者のフロント゚ンドプロバむダヌを悩たせおいる、私自身の経隓によっお特定された゚ラヌのいく぀かに぀いお説明したす。







簡単な利益を埅っおいたす



最初の間違いは経枈的です。 あなたがあなたの䞊叞が蚱す以䞊に皌ぐこずを目暙にフロント゚ンドに来たなら、私はすぐにあなたを倱望させたす、あなたはもはや読むこずができたせん。 取匕所での着陞、レむアりト、タヌンキヌ名刺の需芁は本圓に倧きいですが、オファヌは高いです。 割り圓おられた䜜業を行うオフィスでの8時間の䜜業の代わりに、この䜜業の独立した怜玢に1日のほずんどを費やす必芁がありたす。 ほずんどの雇甚者は、ポヌトフォリオからの泚文に類䌌した䟋を提䟛する堎合にのみ協力するこずに泚意しおください。぀たり、最初にこのポヌトフォリオを収集し、無料で働くチャンスをすべおキャッチする必芁があるため、シヌシャで働くこずが保蚌されおいる最初の月を意味したす。 そしお、圌のように、あなたず同じ数十人のフリヌランサヌがあなたず同じプロゞェクトに察応したす。 その䞭には、泚文の半分をすぐに完了しおデモ版ずしお提䟛する非垞に経隓豊富なレむアりトデザむナヌず、あなたのように䞀床無料ですべおを完了するこずを申し出る初心者のみがいたす。 ほずんどの堎合、雇甚䞻はこれらの2぀の軍団のいずれかを遞択し、残りは数時間座っおF5を抌すずモニタヌが衚瀺されなくなりたす。 状況はCISの匁護士の垂堎ず比范するこずができたす-圌らが手に匕き裂かれた埌、圌らは母校の閟倀を超えるずすぐに、しかし今では申し出は需芁をはるかに超えおいたす。 同時に、フリヌランスは、危険性が高たる法孊で働くこずずは異なりたす。あなた自身の個人起業家がいない堎合、フリヌランスで皌いだお金は法埋の䞋で違法ず芋なされる可胜性があり、あなたは1日8時間できる居心地の良いオフィスに滞圚しなかったこずを間違いなく埌悔したすあなたの奜きなこずをしお、それのために癜い絊料をもらっおください。 それでも玍埗できない堎合は、次の゚ラヌに進みたす。







異なるファむルの散垃コヌド



これを高レベルのシステム蚀語-各クラス-別のファむルで行いたす。 優れた組版チュヌトリアルにより、HTMLずCSSを異なるファむルに保存する方法がすぐにわかりたす。 この手法はすべおに適甚されるように思われるかもしれたせん。 やめお はい、HTMLずは別にCSSコヌドを保存する方が良いですが、たずえば、CSSサむトルヌルの倧郚分ずは別にリセットスタむルやテンプレヌトを保存するのは臎呜的な間違いです。 JavaScriptに぀いおも同様です。スクリプトをクラスごずに数癟のファむルに分割する必芁はありたせん。2぀のファむルにグルヌプ化するだけです。ペヌゞヘッダヌに含たれるものヘッドずコンテンツの最埌に远加されるものボディ。 コンパむルされた蚀語のプログラムは、実行開始前に完党にリンクされるずいう事実に慣れおいたす。 ここではすべおが異なりたす。 サむトコヌド内の各リンクは、サヌバヌぞの远加の芁求です。 ゜ヌシャルネットワヌクVkontakteが最近ゆっくりず機胜し始めおいるこずに気づいたでしょう。 任意のブラりザヌで開発者パネルを開き、vk.comを曎新しお、゜ヌシャルネットワヌクサヌバヌぞのGETおよびPOSTリク゚ストの量を確認したす。 そのような芁求の1぀には数マむクロ秒かかりたすが、その数のために、ペヌゞを完党にロヌドするプロセスは数秒間遅れたす。 芁確認リク゚ストの最小数は、サむトの速床を䞊げる䞻な方法です。 ロヌカルサヌバヌでは、これは目に芋えたせんが、リモヌトホスティングで䜜業するずきに明らかになりたす。 誰も攟電、スタむルテンプレヌト、クラス、ラむブラリを別々のファむルに保存する必芁はありたせんが、すべおを公開する前に「接着」する必芁があり、1぀のHTMLファむルずCSSファむル、および゜ヌスからのJSファむルをいく぀か残したす。 すべおのJSファむルを1぀のファむル「バンドル」にアセンブリするには、webpack、browserify、SASSおよびLESSプロセッサが同様のCSSアセンブリ甚に蚭蚈されおいたす。 1぀のファむルに耇数の画像ほずんどの堎合、アむコンたたはアバタヌのリストを結合するなど、他の最適化方法もありたすが、これは別の蚘事のトピックです。







クラスず識別子を含む列挙



チュヌトリアルでは、CSSセレクタヌで簡単に遞択できるように、ペヌゞ䞊のすべおの芁玠にクラスず識別子の属性を远加するこずをお勧めしたす。 これはある皋床の良いアドバむスです。 私が組版の勉匷を始めたばかりの頃、 すべおがクラスで散らかっおいたした。 これは間違いです。 䟋を挙げたしょう。







これは、私がWebを初めお䜿甚したずきに曞いたコヌドです。 次に、すべおの゚ラヌを怜蚎したす。 たず、ToRでは、ナビゲヌションタブを異なる色で装食するこずは瀺されおおらず、衚瀺するこずも蚈画されおいないため、すべおのタブ識別子はサむトナヌザヌのプロセッサの負荷を浪費しおいるだけです。 枅掃しおください。 次に、「topnav」クラスのすべおの芁玠は<li>芁玠であり、<ul>にネストされたす。さらに、<ul>芁玠には<li>芁玠のみを含めるこずができるため、クラス「topnav」はセレクタヌ「#topnav li」ず同䞀です。 。 topnavクラスを消去したす。 3番目に、TORには唯䞀のナビゲヌションバヌが瀺されおいたす。぀たり、ペヌゞ党䜓に<nav>芁玠が1぀だけ存圚する必芁がありたす。 はい、TKは倉曎される可胜性がありたすが、適切な単語を探しお他の人のコヌドを読むよりも識別子を远加する方がはるかに簡単です。 さらに、<nav>クラスの芁玠もnav ulセレクタヌず同じであるこずがわかりたした。 すべお削陀したす。



最終結果は次のずおりです。







単䞀のクラスたたは識別子ではありたせん しかし同時に、必芁なものはすべおセレクタヌによっお匷調衚瀺されたす。



次の2぀のコヌドは同じルヌルを適甚したす。



最初に
nav { position: -webkit-sticky; position: sticky; top: 0; } #topnav { list-style: none; overflow: hidden; } .topnav a { display: block; float: left; width: 20%; height: 6vh; font-family: RMS, monospace, sans-serif; font-size: 2vw; text-align: center; line-height: 6vh; color: black; background-color: #FF0; border-left: 3px dotted red; transition: border .2s ease 0s; } .topnav:last-of-type a { border-right: 3px dotted red; } .topnav a:hover { border-left-style: solid; border-top: 3px solid red; } .topnav a:focus { border-top: 3px solid red; } .topnav:hover + li a { border-left-style: solid; } .topnav:focus + li a { border-left-style: solid; } .topnav:last-of-type a:hover { border-right-style: solid; } .topnav:last-of-type a:focus { border-right-style: solid; }
      
      







第二
 nav { position: -webkit-sticky; position: sticky; top: 0; } nav ul { list-style: none; overflow: hidden; } nav ul li a { display: block; float: left; width: 20%; height: 6vh; font-family: RMS, monospace, sans-serif; font-size: 2vw; text-align: center; line-height: 6vh; color: black; background-color: #FF0; border-left: 3px dotted red; transition: border .2s ease 0s; } nav ul li:last-of-type a { border-right: 3px dotted red; } nav ul li a:hover { border-left-style: solid; border-top: 3px solid red; } nav ul li a:focus { border-top: 3px solid red; } nav ul li:hover + li a { border-left-style: solid; } nav ul li:focus + li a { border-left-style: solid; } nav ul li:last-of-type a:hover { border-right-style: solid; } nav ul li:last-of-type a:focus { border-right-style: solid; }
      
      







しかし、2番目の方法は、ペヌゞ䞊で識別子やクラスを探しおその名前の意味を考える必芁がないため、あなたずプロセッサ、そしおコヌドを読む人の䞡方にずっお負担が少なくなりたす。

すべおが正しいです。 䞊蚘の取り消し線情報は誀りであり、゚ラヌの䟋でもありたす。 チュヌトリアルずは異なり、レむアりトを理解する特定の段階では、䜙分なクラスず識別子は圹に立たないように芋え始めたす。2番目の䟋では、「。topnav」クラスのすべおの芁玠を怜玢する際にブラりザがDOMツリヌを完党に枡す必芁がないため、サむトナヌザヌのプロセッサぞの負荷が少なくなりたす。 ただし、そのような単玔化は、逆に怜玢時間の増加を匕き起こし、最適化されたせん。 これは、スタむルセレクタヌが右から巊に展開するためです。2番目のコヌドでは、ペヌゞ党䜓のすべおの<a>芁玠が最初に怜出され、次にその芪が<li>芁玠ぞの準拠をチェックされ、次に<li>芁玠の芪などがチェックされたす。 その結果、目的のセレクタの開瀺は、「。topnav」クラスの芁玠を怜玢する1぀のパスの代わりに、ツリヌ党䜓のパスに加えお、遞択リストの3぀のチェックを行いたす。 さらに、クラスず識別子の拒吊は、「HTML-構造化、CSS-プレれンテヌション」の原則に反したす。CSSセレクタヌは、遞択される芁玠のタむプに䟝存すべきではないからです。 ぀たり、<ul>および<li>を<div>および<span>に眮き換える堎合、それらは倉曎されないたたにする必芁がありたす。 クラスず識別子を無芖しないでください。 おそらく、この䟋での最適な゜リュヌションは次のずおりです。



ずころで、名前に぀いお。 マむクロフォヌマットをただ知らない堎合は、レむアりトにどれだけ深く入り蟌んでいるかに関係なく、今ではグヌグルで勉匷しお、凝ったクラス名を発明せず、怜玢゚ンゞンの䜜業を容易にしたす。



無名関数の回避



プログラムを曞くずき、関数名、倉数、オブゞェクトには3぀の制限しかありたせん。文字で始たり、文字ず数字のみを含み、プログラミング蚀語のキヌワヌドず䞀臎しおはいけたせん。 通垞、サヌドパヌティのラむブラリの名前は䟿利な名前空間で囲たれおいるため、通垞はアプリケヌションプログラムでラムダ関数を䜿甚したせん。 Webでは、名前を䜿甚するず、事態はより耇雑になりたす。 ここで、JavaScriptにはグロヌバルスペヌスが1぀だけありたす-ロヌドされたペヌゞのスペヌスです。 サむトのすべおのスクリプトを盎接曞いおも䜕も起こりたせん。 しかし、倧芏暡で深刻なプロゞェクトには、サヌドパヌティの゜リュヌションが必芁です。 そしお、圌らはこの唯䞀の名前空間を文字通り「台無しにする」こずができ、新しい識別子の遞択を真剣に制限したす。 解決方法は匿名のラムダ関数です。これは、少し時間がかかりたすが、もう少しリ゜ヌスを必芁ずしたすが、倖郚のグロヌバル関数ずは無関係に、内郚に独自の個人甚スペヌスがありたす。



耇雑なラむブラリを䜿甚しお簡単な問題を解決する



jQuery、React、Vue、Angular、Backbone ...リストは続きたす。 これらすべおのJavaScriptラむブラリの共通点は、コヌドのサむズが本圓に重芁な堎合に、耇雑なプロゞェクトで䜜業するために䜿甚されるこずです。 識別子によっおペヌゞ䞊の芁玠を単玔に遞択するには、通垞のgetElementByIdを䜿甚するこずをお勧めしたす。 動䜜が速いだけでなく、基本的には叀いブラりザでも動䜜したす。 䜜業䞭にスクリプトがペヌゞ䞊の2぀たたは3぀の芁玠にアクセスする堎合は、おそらく、重いラむブラリを䜿甚しおブラりザヌずナヌザヌネットワヌクを読み蟌たない方が理にかなっおいたす。



廃止された孊習教材



これは、C ++開発者向けであり、Straustrupの䜜業は䜕十幎も経った埌も関連性がありたす。 Webツヌルは、信じられないほどのスピヌドで開発されおいたす。 HTML、CSS、JavaScript、レむアりト、フレヌムワヌク、ラむブラリ-この蚘事を読んでいる間、それらはすべお新しいバヌゞョンで登堎し、倚くの堎合、叀い教科曞を超えおいたす。 結論-フロント゚ンドのトレヌニング資料を遞択する際には、䜿甚するツヌルのリリヌス日ずバヌゞョンHTML 5.1以䞊、CSS 3.0以䞊、ECMAScript 6以䞊を確認するこずが重芁です。 おそらく、HTML 5のリリヌス以降、HTMLのレむアりトは進歩しおいたせんが、2019幎にJS 2016ビデオコヌスを芖聎するには遅すぎたす。 2018を遞択しおください。少なくずも、蟞曞を䜿甚した技術テキストの翻蚳レベルで英語を話すこずができればなおさらです。 その埌、すぐにEloquent JavaScriptオンラむンブックをお勧めしたす。



叀いブラりザのサポヌトの欠劂



逆説的に、幞運にもフロント゚ンドで最新の教科曞を芋぀けたら、別のbrowserに陥るこずができたす-叀いブラりザのサポヌトの欠劂。 <video>芁玠ず<audio>芁玠は、非垞に叀いバヌゞョンのブラりザヌでもすべお実際にサポヌトされおいたすが、倚くのCSS効果は問題を匕き起こし、Internet Explorerだけではありたせん。 トラップから抜け出す方法は1぀しかありたせん。サポヌトされおいるブラりザヌが瀺されおいる堎所でTKを泚意深く読み、䜿甚されおいるHTMLタグ、CSSルヌル、JSメ゜ッドをバヌゞョンごずに比范しおください。



この蚘事は䞀皮のレヌキノヌトブックであり、著者の経隓に基づいお曎新されたす。



All Articles