2016幎にJavaScriptを孊ぶのはどうですか





-ねえ、私は新しいWebプロゞェクトを手に入れたしたが、正盎なずころ、私はここ数幎Webコヌディングに携わっおいないので、すべおが少し倉わったず聞きたした。 あなたは最新のWeb開発者ですよね



「珟圚、これはフロント゚ンド゚ンゞニアず呌ばれおいたすが、はい、そうです。」 私は2016幎にりェブで仕事をしおいたす。芖芚化、音楜プレヌダヌ、サッカヌをする飛行ドロヌンなど、䜕でも。 JsConfずReactConfから戻ったばかりなので、Webアプリケヌションを構築するための最新のテクノロゞヌを知っおいたす。



-かっこいい。 ナヌザヌ偎で最新のアクションを衚瀺するペヌゞを䜜成する必芁がありたす。そのため、RESTからデヌタを取埗しお、䜕らかのフィルタヌ凊理されたテヌブルに衚瀺し、サヌバヌで䜕か倉曎があった堎合は曎新するだけです。 jQueryを䜿甚しおデヌタを取埗および衚瀺するこずを考えおいたしたか



-なんおこった いや 誰もjQueryを䜿甚しおいたせん。 Reactを詊す必芁がありたすこれは2016幎です



-面癜い。 Reactずは䜕ですか



-これは、Facebookのメンバヌによっお䜜成された非垞にクヌルなラむブラリです。 それは本圓に完党な制埡を提䟛し、アプリケヌションのパフォヌマンスを改善し、ビュヌぞの倉曎を非垞に簡単に凊理できるようにしたす。



-それは魅力的ですね。 Reactを䜿甚しおサヌバヌからのデヌタを衚瀺できたすか



-ええ、しかし最初にReactずReact DOMをラむブラリずしお远加する必芁がありたす。



-埅っお、なぜ2぀のラむブラリがあるのですか



-さお、1぀はラむブラリ自䜓であり、2぀目はDOMを操䜜するためのもので、JSXで蚘述できたす。



-JSX JSXずは䜕ですか



-JSXは、XMLに非垞によく䌌たJavaScript構文の単なる拡匵です。 これは、DOMを蚘述する別の方法の䞀皮です。 拡匵HTMLず考えおください。



-HTMLはどうなりたしたか



-これは2016幎です。生のHTMLを䜜成する人はもういたせん。



-たあ、いい。 これら2぀のラむブラリを远加した堎合、Reactを䜿甚できたすか



「そうでもない。」 Babelを远加する必芁があり、Reactを䜿甚できたす。



-別のラむブラリ バベルずは䜕ですか



-ああ、Babelはトランスポヌタヌです。JavaScriptのどのバヌゞョンでもコヌドを蚘述しながら、特定のバヌゞョンのJavaScriptに集䞭するこずができたす。 ReactJSで蚘述するためにBabelを远加する必芁はありたせんが、それを行わないず、ES5にこだわるこずになりたすが、これは2016幎であり、すべおのクヌルな男ず同様にES2016でコヌディングする必芁がありたす。



-ES5 ES2016 + 迷子になりたした。 ES5およびES2016 +ずは䜕ですか



-ES5はECMAScript 5の略です。これは、珟圚ほずんどのブラりザに実装されおいるため、ほずんどが察象ずしおいるバヌゞョンです。



-ECMAScript



-はい、1995幎の最初のリリヌス埌に1999幎に蚭立されたJavaScript暙準を知っおいたすか 次に、JavaScriptがLiveScriptず呌ばれ、Netscape Navigatorでのみ機胜したずき。 圓時は非垞に混乱しおいたしたが、幞いなこずに、すべおが明確になり、この実装の7぀のバヌゞョンがありたす。



-7぀のバヌゞョン。 真剣に。 しかし、ES5ずES2016 +これは...



-それぞれ第5版ず第7版。



「埅っお、6番目に䜕が起こったの」



-ES6 はい、各゚ディションは以前の゚ディションのアドオンであるため、ES2016 +を䜿甚する堎合は、以前のバヌゞョンのすべおの機胜を䜿甚したす。



-いいね。 なぜES2016 + ES6を䜿甚するのですか



「たあ、ES6を䜿甚できたすが、asyncやawaitのような興味深いこずをするには、ES2016 +を䜿甚する必芁がありたす。」 そうしないず、非同期呌び出しず通垞のフロヌ制埡をブロックするためのES6ゞェネレヌタヌずコルヌチンに固執したす。



「あなたの蚀ったこずがわかりたせん。これらの名前はすべお混同されおいたす。」 サヌバヌから倧量のデヌタを読み蟌み、CDNからjQueryをプラグむンし、AJAXを䜿甚しおデヌタを取埗するだけです。 なぜこれができないのですか



-おい、これは2016幎です。jQueryを䜿甚する人は誰もいたせん。混乱するコヌドの束で終わりたす。 しかし、圌らはそれを知っおいたす。



-なるほど。 したがっお、3぀のラむブラリをダりンロヌドしおデヌタを抜出し、HTMLテヌブルを衚瀺するずいう方法がありたす。



「たあ、これら3぀のラむブラリを含めたすが、それらをモゞュヌルマネヌゞャにリンクしお、1぀のファむルのみをロヌドしたす。」



-なるほど。 そしお、どのようなモゞュヌルマネヌゞャヌですか



-定矩は環境によっお異なりたすが、Webでは通垞、AMDたたはCommonJSモゞュヌルをサポヌトするすべおのものを意味したす。



-さようなら。 しかし、AMDずCommonJSはどうですか...



-定矩。 耇数のJavaScriptラむブラリずクラスがどのように盞互䜜甚するかを蚘述する方法はたくさんありたす。 AMDたたはCommonJS APIを定矩するいく぀かのJavaScriptファむルを蚘述し、Browserifyなどを䜿甚しおそれらをリンクできたす。



「たあ、それは理にかなっおいたす...おそらく。」 Browserifyずは䜕ですか



-これは、ブラりザで実行できるファむルのCommonJS䟝存関係の説明をリンクできるツヌルです。 ほずんどの人がこれらの䟝存関係をNPMで公開するために䜜成されたした。



-NPM



-これは非垞に倧芏暡な公開リポゞトリであり、賢い人々がモゞュヌルの圢でコヌドず䟝存関係を投皿したす。



-CDNはどうですか



-実はいや これは、誰でもラむブラリを公開およびダりンロヌドできる集䞭型デヌタベヌスに䌌おいるため、開発甚にロヌカルで䜿甚し、必芁に応じおそれらをCDNにアップロヌドできたす。



-ああ、なんおバりアヌ



-はい、しかしこれは2016幎であり、今では誰もBowerを䜿甚しおいたせん。



「ええず、倧䞈倫...だから、NPMからラむブラリをダりンロヌドする必芁がありたすか」



-はい。 たずえば、Reactを䜿甚する堎合、Reactモゞュヌルをロヌドしおコヌドにむンポヌトしたす。 これは、ほがすべおの䞀般的なJavaScriptラむブラリで実行できたす。



-ああ、それはAngularのようなものです



-角床は2015幎です。しかし、はい。 Angularもあり、VueJS、RxJS、および2016幎のその他の興味深いラむブラリもありたす。それらに぀いお知りたいですか



-Reactに固執したしょう。圌に぀いおはすでに倚くのこずを孊びたした。 Reactを䜿甚する必芁がある堎合、このNPMからReactを匕き出しおからBrowserifyを䜿甚したすか



-はい。



「倚くの䟝存関係をたずめお結び付けるのは耇雑すぎるようです。」



-ええ、だからこそ、GruntやGulpなどのタスクマネヌゞャヌ、たたはブロッコリヌを䜿甚しおBrowserifyの起動を自動化するのです。 Mimosaを䜿甚するこずもできたす。



-うなり声 むか぀く ブロッコリヌ ミモザ 私たちは今䜕を蚀っおいるのですか



-タスクマネヌゞャヌ。 しかし、圌らはもはやそれほどクヌルではありたせん。 Makefileでは2015幎のスタむルで䜿甚しおいたしたが、今ではWebpackに切り替えたした。



-メむクファむル 䞻にCたたはC ++プロゞェクトに䜿甚されるず思いたした。



-うん、でもどうやらりェブ䞊で物事を耇雑にしお基本に戻っおみたい。 このタむプは毎幎行っおいたす。 1〜2幎埌には、りェブ䞊でアセンブリを䜜成したす。



-Pffff。 Webpackず呌ばれるものに぀いお蚀及したしたか



-これは別のブラりザモゞュヌルマネヌゞャヌであるず同時に、タスクマネヌゞャヌの䞀皮でもありたす。 これはBrowserifyの改良版のようなものです。



-はい。 なぜそれが良いのですか



「たあ、それは良いこずではないかもしれたせんが、䟝存関係がどのように関連しおいるのかずいう点でより柔軟です。」 Webpackでは、CommonJSだけでなく、さたざたなモゞュヌルマネヌゞャヌを䜿甚できたす。 たずえば、ネむティブES6モゞュヌル。



-これらのCommonJS / ES6では非垞に混乱しおいたす。



-はい、誰もがこれに混乱したしたが、SystemJSがあるので入济できなくなりたした。



-ああ、たた䜕か-js。 さお、このSystemJSずは䜕ですか



-たあ、BrowserifyやWebPack 1.xずは異なり、SystemJSは動的ロヌダヌモゞュヌルであり、1぀の倧きなファむルにリンクするのではなく、耇数のファむルの耇数のモゞュヌルをリンクできたす。



-埅っお、ラむブラリを1぀の倧きなファむルにマヌゞしおアップロヌドしたいず思っおいたした



-はい。ただし、HTTP / 2のため、耇数のHTTPリク゚ストの方が実際には優れおいたす。



-立぀ために それでは、なぜReactに3぀の元のラむブラリを远加できないのでしょうか



-もちろん、CDNで倖郚スクリプトずしお远加できたすが、Babelを远加する必芁がありたす。



-あ。 そしお、これは悪いこずではありたせんか



-はい、バベルコアを完党にオンにする必芁があり、本番環境では効果がありたせん。 生産時には、プロゞェクトを完党に準備するためにいく぀かの準備タスクを実行する必芁がありたす。これは、悪魔を呌ぶのは卵を沞かすためのレシピであるのに比べお儀匏です。 ファむルを最小化し、ugliifyを䜜成し、スタむルを操䜜し、スクリプトのダりンロヌドを怜蚎する必芁がありたす...



-わかった、わかった。 しかし、CDNからラむブラリを盎接ダりンロヌドしない堎合、他にどのようになりたすか



-Webpack + SystemJS + Babelコンボを䜿甚しお、TypeScriptからトランスパむラヌを䜜成したす。



-TypeScript JavaScriptコヌドを曞いおいるず思った



-Typescript-これはJavaScript、たたはJavaScriptのスヌパヌセットです。 具䜓的には、JavaScriptはES6䞊にありたす。 さお、私たちが話したその6番目のバヌゞョン。



「ES2016 +はすでにES6のスヌパヌセットだず思っおいたした」 なぜ今TypeScriptも必芁なのですか



-JavaScriptを型付き蚀語ずしお䜿甚し、実行時の゚ラヌの数を枛らすこずができるため。 これは2016幎で、JavaScriptコヌドにいく぀かのタむプを远加する必芁がありたす。



「そしお、TypeScriptは明らかにそれを行いたす。」



-そしお、フロヌ、タむプのみをチェックしたすが、TypeScriptはコンパむルが必芁なJavaScriptアドオンです。



-ええず...フロヌ



-これは、Facebookの男性によっお䜜成された静的なタむピングテストツヌルです。 関数型プログラミングは驚くほどクヌルなので、圌らはOCamlでそれを曞いた。



-OCaml 関数型プログラミング



-さお、これは2016幎のように、クヌルな子䟛たちが今日䜿っおいるものです。関数型プログラミング。 高次関数。 カレヌ。 玔粋な機胜。



「それが䜕なのかわかりたせん。」



-最初は誰も理解しおいたせん。 関数型プログラミングはオブゞェクト指向プログラミングよりも優れおいるこずを知っおおく必芁がありたす。これは2016幎に䜿甚すべきものです。



-埅っお、私は倧孊でOOPを勉匷したした。



-それは、OracleがJavaを買収するたでのこずでした。 ぀たり、OOPは以前は良奜であり、珟圚も䜿甚されおいたすが、状態を操䜜するこずは赀ちゃんを蹎るこずに盞圓するこずを誰もが理解しおいるため、すべおが䞍倉オブゞェクトず関数型プログラミングに向かっおいたす。 Haskellの連䞭は100幎前からこのこずに぀いお叫んでいたすが、私はElmに぀いおはただ蚀及しおいたせん。 しかし、幞いなこずに、ネット䞊にはRamdaなどのラむブラリがあり、単玔なJavaScriptで関数型プログラミングを䜿甚できたす。



「名前を䜜っおいるだけですか」 Ramndaずは䜕ですか



-いいえ。 ラムダ。 ラムダのように。 デノィッド・チ​​ェンバヌの図曞通ですか



-ダビデは誰



-デむビッド・チェンバヌ。 クヌルな人々 ラムダの著者の䞀人。 関数型プログラミングの孊習に真剣な方は、゚リック・マむダヌの䜜品をご芧ください。



「それぱリック・マむダヌですか」



-たた、機胜的な男。 クヌルな人々 圌は、アゞャむルを奇劙な色のTシャツで打ち砕くプレれンテヌションをたくさん持っおいたす。 Tj、Jash Kenas、Sindre Sorhus、Paul Irish、Addy Osmaniが䜕をしおいるのかをご芧ください...



-はい。 遅くなりたす。 これらはすべお矎しくお矎しいものですが、デヌタずその衚瀺を簡単に遞択するには、すべおが耇雑すぎお䞍必芁だず思いたす。 動的デヌタを含むテヌブルを䜜成するために、これらの人々たたはこれらすべおのこずを知る必芁はないず確信しおいたす。 Reactに戻りたしょう。 Reactでサヌバヌからデヌタを取埗するにはどうすればよいですか



-実際、デヌタを取埗するのにReactは必芁ありたせん。デヌタが衚瀺されたす。



-あヌ それでは、デヌタを取埗するために䜕が䜿甚されたすか



-Fetchを䜿甚しお、サヌバヌからデヌタを取埗したす。



-Fetchを䜿甚しおデヌタを取埗したすか これらのこずを呌び出す圌はシ゜ヌラスが必芁です。



-そうそう。 Fetchは、XMLHttpRequestを実行するためのネむティブ実装の名前です。



-ああ、AJAX。



-AJAXは単なるXMLHttpRequestリク゚ストです。 たた、Fetchを䜿甚するず、promiseに基づいおAJAXを実行できたす。これは、コヌルバックの地獄を回避するために解決できたす。



-コヌルバック地獄



-はい。 非同期芁求が実行されるたびに、その応答を埅぀必芁がありたす。これにより、コヌルバック地獄ピラミッドず呌ばれる関数内に関数を远加する必芁がありたす。



-ああ、いい。 玄束はこの問題を解決したすか



-もちろん promiseを介しおコヌルバックを操䜜するこずにより、より理解しやすいコヌドを蚘述しおテストし、同時に耇数のリク゚ストを同時に実行しお、すべおが完了するたで埅぀こずができたす。



-そしお、これはFetchで実行できたすか



-はい、ただし䞀郚のブラりザでのみ有効です。そうでない堎合は、Fetch polyfillを有効にするか、Request、Bluebird、たたはAxiosを䜿甚する必芁がありたす。



「神のために、いく぀の図曞通を知る必芁がありたすか」 それらのいく぀



-これはJavaScriptです。 同じこずを行うラむブラリは数千ありたす。 これらのラむブラリを知っおいたす。 私たちのラむブラリは玠晎らしいものであり、Guy Fieriの写真を远加するこずもありたす。



-ガむ・フィ゚リ でこれを乗り越えたしょう。 これらのBluebird、Request、Axiosは䜕をしたすか



-これらは、Promiseを返すXMLHttpRequestを実行するためのラむブラリです。



-そしお、AJAX jQueryメ゜ッドはプロミスを返したせんか



-2016幎には「J」を䜿甚しなくなりたした。FetchpolyfillたたはBluebird、RequestたたはAxiosを䜿甚するだけです。 次に、async、await、bamを䜿甚しお玄束を管理したす。適切な制埡フロヌがありたす。



「これがあなたが埅っおいるのは3回目ですが、それが䜕なのかわかりたせん。」



-Awaitを䜿甚するず、非同期呌び出しをブロックできたす。これにより、デヌタの受信䞭にすべおをより適切に制埡でき、コヌドの可読性が向䞊したす。 これはすごいです。ステヌゞ3をBabelに远加するか、非同期関数構文ずtransform-async-to-generatorプラグむンを䜿甚する必芁がありたす。



-これはクレむゞヌです。



「いや、狂気-TypeScriptコヌドを再コンパむルしおから、awaitを䜿甚するためにBabelで転眮する必芁がありたす。」



-おい これはTypeScriptの䞀郚ではありたせんか



-次のバヌゞョンに含たれおいたすが、バヌゞョン1.7ではES6のみであるため、ブラりザでawaitを䜿甚する堎合は、たずES6でTypeScriptコヌドをコンパむルしおから、BabelからES5にトランスポヌズする必芁がありたす。



「䜕お蚀えばいいのかわかりたせん。」



-聞いおください、簡単です。 TypeScriptですべおのコヌドを蚘述したす。 ES6でFetchを䜿甚しおすべおのモゞュヌルをコンパむルし、ステヌゞ3でBabelでそれらをトランスパむルし、SystemJSからダりンロヌドしたす。 Fetchがない堎合は、polyfill、たたはBluebird、Request、たたはAxiosを䜿甚しお、玄束を凊理したす。



-「簡単」の定矩は倧きく異なりたす。 それで、この儀匏で、私は぀いにデヌタを埗お、Reactで正しく衚瀺できるようになりたしたか



-アプリケヌションは状態の倉曎を凊理したすか



「Grr、私はそうは思わない。」 デヌタを衚瀺するだけです。



-ああ、ありがずう。 そうでなければ、FluxずFlummox、Alt、Fluxibleなどの実装を説明する必芁がありたす。 正盎なずころ、Reduxを䜿甚する必芁がありたす。



-どのようにしおこれらの名前を取埗したした。 繰り返したすが、デヌタを衚瀺するだけです。



-たた、単にデヌタを衚瀺する堎合は、Reactで開始する必芁はありたせん。 テンプレヌト゚ンゞンを䜿甚できたす。



-冗談ですか これは面癜いず思う



「はい、䜿甚できるものを説明しただけです。」



-やめお やめお



-぀たり、テンプレヌト゚ンゞンを䜿甚したずしおも、TypeScript + SystemJS + Babelコンボを代わりに䜿甚したす。



-ペヌゞにデヌタを衚瀺する必芁がありたすが、Mortal Kombatの元のSub Zero臎死は実行したせん。 䜿甚するテンプレヌト゚ンゞンを教えおください。



-それらの倚くがありたす、あなたは誰ず芪しいですか



-うヌん、名前が思い出せない。 それはずっず前のこずです。



JTemplates jQote 玔粋



-そうじゃない。 もう䞀぀



-透明性 JSRender MarkupJS KnockoutJS



-その他



-PlatesJS jquery-tmpl ハンドルバヌ 䞀郚の人々はただそれを䜿甚しおいたす。



-たぶん。 最埌に䌌たものはありたすか



-口ひげ、アンダヌスコア 珟圚、lodashにもテンプレヌト゚ンゞンがありたすが、これは2014幎のようなものです。



「Grr ...たぶん圌はもっず若かった」



-ゞェむド DustJS



-いいえ。



-DotJS EJS



-いいえ。



-修道女 食べる



-いいえ。



-おい、ずにかくCoffeeScript構文が奜きな人はいたせん。 ゞェむド



-いいえ、あなたはすでにゞェむドず蚀いたした。



-たあ、私はパグを意味したした。 私はゞェむドを意味したした。 ぀たり、ゞェむドはパグになりたした。



-Pf。 いや 芚えおいたせん どちらを䜿甚したすか



-おそらくネむティブのES6テンプレヌト文字列。



-掚枬させおください。 これにはES6が必芁です。



-はい。



-䜿甚するブラりザに応じお、Babelが必芁です。



-はい。



-ラむブラリ党䜓を远加せずに有効にするには、NPMモゞュヌルずしおダりンロヌドする必芁がありたす。



-はい。



-これには、BrowserifyたたはWepbackが必芁です。ほずんどの堎合、SystemJSが必芁です。



-はい。



-Webpackでない堎合は、理想的にはタスクランナヌによっお制埡する必芁がありたす。



-はい。



「しかし、関数型プログラミングず型付き蚀語を䜿甚する必芁があるため、最初にTypeScriptをコンパむルするか、このフロヌを远加する必芁がありたす。」



-はい。



-そしお、awaitを䜿甚する堎合は、凊理のためにBabelに送信したす。



-はい。



-それで、Fetch、Promise、フロヌ制埡、およびこれらすべおの魔法を䜿甚できたす。



-ポリフィルフェッチを忘れないでください。サポヌトされおいない堎合、Safariはそれを凊理できたせん。



-あなたは䜕を知っおいたす。 ここで終わるず思いたす。 実際、私はこれで完了だず思いたす。 私はこのWebずJavaScript党般に行き着きたした。



-たあ、数幎埌にはすべおElmたたはWebAssemblyでコヌディングしたす。



「バック゚ンドに戻りたいだけです。」 これらすべおの倉曎、バヌゞョン、゚ディション、コンパむラヌ、トランスパむラヌを凊理するこずはできたせん。 JavaScriptコミュニティは、誰かがそれに远い぀くこずができるず考えおいるなら、狂っおいたす。



-なるほど。 次に、Pythonコミュニティを詊す必芁がありたす。



-なんで



-Python 3に぀いお聞いたこずがありたすか



All Articles