2015幎のJavaScriptトレンド





みなさんこんにちは 私たちはどういうわけかJavaScriptずアプリケヌション開発のトピックに関する簡単な入門コヌスを䜜成するこずにしたしたずころで、たもなく公開されたす。そしお、私はそのための資料を集めおいる間に、どういうわけかそれ自䜓がかなり倚くのものがあるこずが刀明したした。 JavaScript開発の最前線にいるず蚀いたす。 ここから、「Z TechnologyによるY幎のXトレンド」ずいうゞャンルの別のレビュヌ蚘事を䜜成するずいうアむデアが生たれたした。



私が説明するこずの倚くは、今日、ある皋床詊しおみるこずができたす実際、そうでなければ、トレンドに぀いおではなく、宇宙の未来に぀いお話したす。 これには明確なプラスがありたす。もしあなたに自由な時間があるならそしお通垞は䌑日にたくさんありたす、あなたは䜕かするでしょう。 そしお、䞀般に、芖野を広げお新幎を迎えるこずは良いこずです





1. ECMAScript 6





Web開発に携わっおいるなら、おそらくJavaScriptのすべおの喜びず制限を経隓しおいるでしょう。 1995幎にBrendan IkeがJavaScriptを䜜成したずき、圌は15〜20幎でどのWebテクノロゞヌが開発され、開発者が圌の頭脳を䜿甚しおどのようなトリックを埗るのかほずんど掚枬できたせんでした。



最新のWeb゜リュヌションの耇雑さは、これらの゜リュヌションの䜜成方法の倧幅な改蚂を長い間必芁ずしおきたため、ブラりザ開発者特にがJavaScript暙準の次のバヌゞョンであるECMAScript 6に今日それほど泚意を払っおいるこずは偶然ではありたせん。



新しい暙準ちなみに、ES4のリリヌスの倱敗にも関わらず、ES6の「調和」ず呌ばれるこずもありたすには、クラス、モゞュヌル、コレクション、むテレヌタヌ、ゞェネレヌタヌ、プロキシヌ、型付き配列、玄束、新しい暙準オブゞェクトのメ゜ッドずプロパティ、新しい構文機胜など。



// lib/math.js export function sum(x, y) { return x + y; } export var pi = 3.141593; // app.js module math from "lib/math"; alert("2π = " + math.sum(math.pi, math.pi));
      
      







ずころで、モゞュヌルに基づいお、 最近 、非垞に倚くの興味深い゜リュヌションが開発され たした 。少なくずもRequireJSたたはBrowserifyを䜿甚しおください 。



耇雑なアプリケヌションの䜜成ず保守がはるかに簡単になりたす。 Luke Hobanによる「 ECMAScript 6機胜の抂芁 」のコヌドで、新しい蚀語機胜がどのように芋えるかを確認できたす。



ES6ずの互換性テヌブルで、 ES6の新機胜のサポヌトの実装を監芖できたす 。 たた、 Windows Insiderプログラムの䞀郚ずしお利甚できるInternet Explorer Technical Previewの新しいビルドで、倚くの機胜を詊すこずができたす。



ちなみに、2015幎の終わりには、JavaScriptの20呚幎ずいう倧きなお祝いを埅っおいたす。 実際、新しい暙準はJavaScriptを優れた蚀語にする詊みですただし、その抂念の䞀郚は、プロトタむプの継承よりも初心者には簡単に思えない堎合がありたす。 たた、ES6暙準が2015幎に正確に承認されるずいう予枬もありたす。 ただし、開発業務における新しい暙準の盎接的な実装には1幎以䞊かかりたす。



2015幎に期埅されるこず新しいECMAScript 6暙準、ブラりザでの実装、コミュニティおよびフレヌムワヌクでの適応。





2.型付きJavaScript





JavaScriptの新機胜の登堎を数幎間埅っおいたしたが、時代の粟神は、JSが耇雑な゜リュヌションを䜜成する際の最倧の問題の1぀がタむピングであるこず、たたはむしろ、その完党な䞍圚よりも少し少ないこずを瀺唆しおいたす。



もちろん、JavaScriptには倚くの暙準型がありたすが、残りはそれらに垰着し、䞍䟿なチェックが必芁です。そしお䞀般にJSの魅力の1぀はそのダむナミズムです。しかし、それは耇雑で信頌できる決定をするのに圹立ちたせん。



邪悪なこずに、ファむルずグラフィックスhello WebGLを操䜜するには、単䞀の䞀般化された数倀ではなく特定の次元の型を操䜜する胜力が必芁であるこずが刀明したため、ずころで、 型付き配列の別の暙準が登堎したしたが 、これは珟圚ES6の䞀郚になりたす。



䞀般に、Anders HalesbergDelphiずC-圌の頭脳が仕事に取りかかったずき 、 TypeScriptが登堎したした。 TSは、開発段階で蚀語に静的型付けを远加するJSのスヌパヌセットであり、ES6の倚くの機胜も備えおいたす。 もちろん、TSはそのように芋えただけでなく、Microsoftが耇雑なWebアプリケヌションを䟿利に䜜成するずいう内郚のニヌズからも珟れたした。



 // TypeScript class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } }
      
      







他の䌁業でも同様のニヌズが高たっおいたす。Facebook Flow ずGoogle AtScript の新しいタむピングプロゞェクトに泚意しおください。これは、2015幎に別の新しい互換性のない技術を受け取らない倧きな垌望の堎所です。



TypeScriptの優れた点は、コヌドを蚘述しおいる間特にVisual Studioで行う堎合ですが、必ずしもそうである必芁はありたせん、耇雑なデヌタ構造を簡単に蚘述する機䌚が埗られるこずです。䞀方、コンパむラヌは、型を正しく凊理したす。



TSのもう1぀の優れた機胜、たたはそのコンパむラちなみに、 蚀語自䜓ず同様にオヌプンです 、 それはコンパむルの結果ずしお、あなたが曞くのずほが同じくらいきれいなJavaScriptコヌドを取埗するこずですか次の珟代的な実践



 // TypeScript to JavaScript var Greeter = (function () { function Greeter(message) { this.greeting = message; } Greeter.prototype.greet = function () { return "Hello, " + this.greeting; }; return Greeter; })();
      
      







したがっお、出力は、任意のオペレヌティングシステム䞊の最新のブラりザヌで動䜜するコヌドです。 ちなみに、Node.jsでは、TypeScriptで䜜成するこずもできたす。



ずころで、JSコヌドはすでにTSコヌドであるため、圓然のこずながら疑問が生じたす。既存のコヌドをどのように型付きで䜿甚できたすか この質問に察する答えは、倧芏暡なDefinitelyTypedプロゞェクトです。このプロゞェクトでは、最も䞀般的なラむブラリのほずんどが既に入力されおいたす。



将来、 TypeScript 2.0の次の倧きなバヌゞョンはES6のスヌパヌセットになるはずです。 サンドボックスで、今すぐブラりザでTSを詊すこずができたす。



䞀般に、JavaScriptでコヌドを蚘述する堎合、䜜業にTypeScriptを導入するこずは、2015幎に最も重芁な投資の1぀になる可胜性がありたす。



2015幎に期埅されるこずTypeScript適応の成長、代替プロゞェクトの開発、およびそれらの盞互匷化。





3.クロスプラットフォヌム





JavaScript業界がクロスブラりザヌJavaScriptで最終的に解決された堎合、最終的にはほがすべおの問題が解決されたしたが、JSでのクロスプラットフォヌムアプリケヌション開発のコンテキストでは、長い道のりのたさに始たりに過ぎたせん。



来幎そしおそれだけでなく解決しなければならない2぀の重芁なタスクサむトずアプリケヌション間の境界を消去するこず、およびJavaScriptでのクロスプラットフォヌムアプリケヌション開発の機䌚を開発するこず。



境界線を消去



最初のタスクでの重芁な目暙は、アプリケヌションが実行できるこずをWebサむトに教えるこずです。たずえば、オペレヌティングシステムに統合したす。アむコンやラむブタむルからプッシュ通知やロヌカル契玄のサポヌトたで。 同時に、そのようなアプリケヌションのコンテンツをWebサむトを通じお曎新するシステムは重芁なたたであり、Webアプロヌチの利点を維持できたす。



WindowsおよびWindows Phoneのコンテキストでは、この方向の゜リュヌションの1぀は、 WAT Webアプリケヌションテンプレヌトテクノロゞヌです。これにより、アプリケヌションストアを通じお配信されるOSのアプリケヌションの圢でWebサむトをホストできたす。 その結果、サむトはアプリケヌションに「倉わり」たす。それは、ネむティブアプリケヌション適切なスタむリングのように芋え、ネむティブアプリケヌションOSぞの統合のためのように動䜜し、ネむティブ機胜を受け取りたすカメラずファむルシステムの操䜜など。



もちろん、これがこの方向の唯䞀の進歩ではありたせん。豊富な経隓を持぀䞀郚のWeb開発者がMozilla Prismプロゞェクトを芚えおいるず思いたす。 最近の履歎から-これらはWindows 7以降の固定サむトで、最新のものから-Yandex.Browserは、ブラりザの芖芚的存圚を最小限にしようずしおいたす。



進歩にもかかわらず、たずえば、 WebアプリケヌションのW3Cマニフェストの芳点から、ネむティブ機胜ぞのアクセスの容易化から、適切なAPIの暙準化たで倚くのこずが行われおいたす。 ずころで、これは技術革新のための興味深いスペヌスであるこずが刀明するかもしれたせん。



モバむル開発



2番目のタスクでは、パスのかなりの郚分がApache Cordovaなどのプロゞェクトですでに行われおいたす。 過去数幎にわたっお、倚くの倧䌁業がプロゞェクトに参加したした。今日、PhoneGapを賌入したのはAdobeだけでなく、Microsoft、Intel、IBM、Googleなどもありたす。



ある意味では、Cordovaは今日の問題を解決するだけです。これは、Web開発ずWeb暙準の䞖界では、思っおいるよりも時間がかかりたす。 ぀たり、異なるプラットフォヌムのJavaScriptから同じ方法でネむティブ機胜ぞのアクセスを提䟛したす。



コヌドをHTML / CSSおよびJSで蚘述し、Cordovaはアプリケヌションストアに配垃できるアプリケヌションにそれらをパックしたす。 ここでの前の段萜ずの重芁な違いは、そのようなアプリケヌションのコヌドはロヌカルであるため、確かに優れた機胜を備えおいるこずです。 ただし、同時に、ストアを通じおのみ曎新するずいう意味で制限を取埗したす。



来幎、コルドバの䜿甚ず適応が倧幅に増加するず予想されるのはなぜですか これには3぀の重芁な理由がありたす。

  1. モバむルセグメントの継続的な成長ずアプリケヌションぞの泚目のシフトWebブラりザヌに察する。
  2. WebViewコンポヌネントのパフォヌマンスず機胜の改善JS䞊のアプリケヌションが遅いず蚀う暙準的な理由。 ちなみに、これはりェブサむトのホスティングにずっお重芁です。
  3. さたざたなプラットフォヌム向けのアプリケヌションを䟿利に開発、テスト、構築するための優れたツヌルの出珟。 Visual Studio 2015プレビュヌは玠晎らしい䟋ですが、圓然、Microsoftだけがこの方向に進んでいるわけではありたせん。




双方向の興味深い点は、スタッフにJavaScript開発者がいる堎合、将来的にはWebおよびモバむル開発のすべおの䞻芁なニッチをカバヌできるこずです。 はい、Apache CordovaおよびWebサむト甚のTypeScriptアプリケヌションも今日䜜成できたす



2015幎に予想されるこずJSでのクロスプラットフォヌム開発甚のツヌルを開発し、サむトずアプリケヌションの間の境界を消去し続けたす。





4.ネむティブ





前のトレンドの自然な発展は別の移行であり、実際に達成されたしたが、ただWeb開発者の心の䞭でクリティカルマスを獲埗しおいたせん。 JavaScriptでのネむティブアプリケヌション開発に぀いお盎接話しおいたす。 ずころで、前述のWindowsプラットフォヌム甚のApache Cordovaは既にネむティブです。



倚くの開発者にずっお、この考えは䟝然ずしお耳を痛めたす。 ネむティブは䌝統的にC ++、C、ObjectiveC、Javaなどにありたすが、JavaScriptにはありたせん。



これにはモバむルプラットフォヌムでも歎史的な確認があり、JavaScriptはWebView内でのみ蚘述できたす。WebViewは、「実際の」ネむティブ蚀語のアプリケヌション内のコントロヌルの1぀にすぎたせん。 そしおそれは遅かった。



ただし、状況は倉わりたしたWindows 8は最初から、バヌゞョン8.1のWindows Phone、Firefox OS、Chrome OS、およびその他のプラットフォヌムでは、ネむティブ関数ぞの盎接呌び出し、ファむルシステムぞのアクセス、OS機胜ずの統合など、JavaScriptでアプリケヌション開発を盎接提䟛しおいたす。 n。



 // File system access on Windows platform from JavaScript // Get folder var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; // Get folder contents picturesLibrary.getItemsAsync().then(function (items) { outputHeader(picturesLibrary.name, items.size); items.forEach(function (item) { if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { output(id(picturesLibrary.name), item.name + "\\"); } else { output(id(picturesLibrary.name), item.fileName); } }); });
      
      







これはすべお今日すでにです。 問題は、関連するプラットフォヌムのシェアの増加ず、そのような機䌚があるずいうWeb開発者の意識ですずころで、これはWindows゚コシステム内でよく芋られる非垞に興味深い心理的偎面です。 、Windowsアプリケヌション甚のC/ C ++の開発者を別途雇うこずをお勧めしたす。



状況は埐々に倉化しおいたす。 驚くべきこずに、スマヌトテレビたずえばOpen webOSを搭茉したLGずゲヌムコン゜ヌルたずえばXbox Oneは、突然、ネむティブJavaScript開発の成長の方向性の1぀になりたした。 単に代替手段はありたせんが、垂堎ず需芁は成長しおいたす



最埌に、別の重芁な偎面は、もちろん、JavaScriptの実行速床を䞊げるこずですこれは、コンパむラヌ/むンタヌプリタヌ、および特定の偎面での入力、およびより高速に実行できるこずが保蚌される蚀語のサブセット asm.js の入力に察する質問です。



2015幎に期埅されるこずJavaScript開発によるスマヌトTVおよびコン゜ヌルの成長、倚くの最新プラットフォヌムすべおではないでのJSのネむティブ開発の可胜性ぞのWeb開発者による適応。





5.デバむスAPI





前の段萜ネむティブ性、モバむルプラットフォヌムの成長、境界線の消去の重芁な結果は、党䜓ずしお、動䜜するデバむスのハヌドりェア機胜ずの盞互䜜甚に関しお、Webスタックの機胜の拡匵です。



ゞオロケヌションやデバむスの向きなどの最も基本的なこずを扱う方法を既に孊習したしたが、ネむティブ開発の堎合に利甚できる可胜性の倧きなブロックのために、ブラりザ゚ンゞンで暙準化および実装するために倚くの䜜業が先にありたすたずえば、IEはstatus.modern.ieで監芖できたすが、通垞、ブラりザ開発の察象ではありたせん





ナヌザヌの偎で情報を入力するずいう芳点からも同様のタスクが提起されたすタッチ入力hiポむンタヌおよびタッチむベントで始たり、音声およびゞェスチャ制埡特にNUIおよびKinectのアむデア党般で終了したす。



ちなみに、 Kinectに぀いおは、 Kinect for Windowsをお持ちの堎合、 SDKず䞀緒にJavaScriptからブラりザヌでセンサヌを盎接操䜜する機䌚が埗られたす。



なぜこの方向は来幎発展するのでしょうか それは簡単です。ブラりザ開発者は、基盀ずなるオペレヌティングシステムず密接に関係しおおり、ネむティブ機胜をWebコンテキストに投げ蟌み、共通の願望がアプロヌチの暙準化に぀ながるはずです。



ずころで、Apache Cordovaには興味深い偎面がありたす。これは既に䜕らかの方法でこれを行っおいたす。JavaScriptのプロゞェクトで公開されおいるAPIも、利甚可胜になるず適切な暙準に関連付けられたす。



2015幎に期埅されるこずJavaScriptからデバむスのネむティブ機胜にアクセスするためのAPIの開発、JSでのNUIの適合。 私はそれが数幎間続くず確信しおいたす。





6.耇雑さずの戊い





耇雑さずの闘い、たたはむしろ耇雑な゜リュヌションの䜜成を簡玠化するずいう芁望が続いおいたす。 10幎のJSラむブラリの時代は終わり、りェブ開発者の生掻を長幎にわたっお簡玠化し、ブラりザヌ間のギャップずりェブ暙準の開発の䞍十分な速床を埋めたすちなみに、2015幎2月には10幎のPrototypeがありたす、これを芚えおいれば、6月-script.aculo .us、および9月-MooTools。



jQueryなど、これらのラむブラリの䞀郚はただ生きおおり、積極的に開発されおいたす。 倚くが死亡したか、競合他瀟に取っお代わられたした。



しかし、最も重芁なこずは、今日、新しいプレヌダヌがステヌゞに入り、新しいクラスの問題を解決しおいるこずです。それは、耇雑なアプリケヌションの䜜成です。 原則ずしお、これらは分解、暙準化、デヌタバむンディング、モゞュヌル構造などを必芁ずする単䞀ペヌゞの゜リュヌションです。



MVCの抂念バックボヌン、ノックアりト、GWTなどに基づいおアプリケヌションを䜜成するための゜リュヌションに続いお、新しいプレヌダヌが垂堎に参入し、SPAの䜜成にさらに進みたしたEmber.js、AngularGoogle、ReactFacebook。



この党䜓の動きの䞭で、私にずっお特に興味深い点が2぀ありたす。





これはどのようにさらに発展したすか



たず、私たちが適応しお経隓を積むに぀れお、゚ンゞニアは補品ず゜リュヌションを再考したす。 Angularの2番目のバヌゞョンは良い䟋です。



第二に、耇雑な゜リュヌションの䜜成には曎新アプロヌチが必芁であり、単玔なJavaScriptの機胜が十分でない堎合、その改善が珟堎にもたらされたす。 MicrosoftはTypeScriptでWinJSを曞き換えおおり、Angular 2.0のGoogleはAtScriptを準備しおいたす。FacebookはFlowでReactJSを曞いおいたす。



第䞉に、コンポヌネントの互換性ず互換性に察する芁望です。 たずえば、 WinJS 3.0の堎合-これは、SPAを䜜成するために他のラむブラリずの互換性を実珟したいずいう明確な願望です。 ReactでWinJSを䜿甚したいですか を䜿甚したす。



2015幎に予想されるこず人気のあるラむブラリの新しい改蚂版のリリヌス、倧芏暡なプレヌダヌの競争の激化、耇雑なフレヌムワヌクを䜜成するための゚ントリヌしきい倀の増加、ES6に基づくニッチ゜リュヌションの新しい機䌚。





7. Webコンポヌネント





Webコンポヌネントは、耇雑さの増倧に察凊する別の芋方です。 ES6ずTypeScriptが蚀語レベルで機胜し、フレヌムワヌクが耇雑なアプリケヌションの構成レベルで機胜する堎合、Webコンポヌネントは、HTML芁玠、特にドキュメントオブゞェクトモデルDOMのレベルで耇雑さに察凊する方法を瀺したす。



珟圚、Webコンポヌネントは5぀の䞻芁なコンポヌネントで構成されおいたす。





その結果、このような䞀連の暙準は、適切に実装されおいれば、構成ず再利甚に䟿利な新しい閉ルヌプコントロヌルマヌクアップの残りの郚分に朜圚的な副䜜甚なしの䜜成を倧幅に促進するはずです。



プラットフォヌム向けに独自のフレヌムワヌクを䜜成しおいる倧芏暡なプレヌダヌに加えお、さたざたな制埡ラむブラリの開発者もこの領域の開発に非垞に興味を持っおいたす。そのため、珟代のブラりザヌにテクノロゞヌが適応するに぀れお、コミュニティ党䜓での適応が増加するこずが予想されたす。



ただし、ある意味では、Webコンポヌネントはダヌクホヌスであり、これに぀いお、い぀、どのように起動するかを正確に蚀うこずは困難です。 今日、この方向はおそらく、 PolymerプロゞェクトずChromiumフレヌムワヌク内の関連するドラフト暙準のサポヌトを通じおGoogleを最も積極的に動かしおいるこずでしょう。



そしお、もちろん、ある堎所での耇雑さずの闘いは、確かに他の堎所で耇雑さを生み出したす。 



2015幎に期埅すべきこず他のブラりザヌによるWebコンポヌネントの適応、コントロヌルおよびさたざたなフレヌムワヌク内郚のものを含むの開発者による新しいテクノロゞヌの採甚に察する期埅。





8.パッケヌゞずアセンブリ





そしお、コヌドパッケヌゞングの最埌の仕䞊げずしお、JSコヌドのアセンブリおよび配信システムに぀いお説明したす。 これらは異なるタスクですが、ある意味では、コヌドの操䜜を開始および終了し、ルヌプを圢成したす コンポヌネントのような単䞀の゜リュヌションで管理されるたで。



アセンブリでは、すべおが比范的単玔です。近幎、Node.jsに基づいお、いく぀かのリヌダヌが垂堎に定着しおいたす。 たず第䞀に、これらはGrunt、Gulp、そしおそれほどではないがブランチです。



しかし、1幎にわたっお、来幎泚目すべき興味深い野心的なプロゞェクト ブロッコリヌ 、 フェズ 、 ミモザ が登堎したしたたたは、より積極的に聞こえるようになりたした。 既存の゜リュヌションを倧幅に眮き換えるこずはたずありたせんが、ニッチを占有する可胜性がありたす。 : , ( ), .



, - - , , ENB , BEM-.



. npm JavaScript - , Bower ( , Twitter 2012 !). , , Visual Studio npm, Grunt Gulp, Bower.



:

 bower install jquery
      
      







, (, ), , npm , , Bower, .



, , Browserify, 2015 , Duo ( Browserify, Component Go) jspm ( , ES6).



2015: JavaScript ( JS), -, .





9. ,







, HTML5 , , WebGL, ( , ).



( , ). – - Assassin's Creed Pirates Dino Hunt TV .







, WebGL, , three.js Babylon.js . – d3.js .



: JavaScript , -, . :





, :





, : . , - Flash. , 2015 , , , .



2015: JS, (, ).





10.





, JavaScript . , .



.



-, , , , . , 2d 3d- , , , , , , ..



, 2015 – Unity 5 . WebGL JavaScript ( asm.js).



, Unity3d – - , , WebGL .



.



-, . , , SDK . . , : , .



JavaScript - .



, : , , «» , , W3C GamePad API, .



2015: Unity 5 WebGL, 3d , .





11.





Node.js , . Node.js 5 ( !), , .



, (, , - ). , JavaScript .



, , Node.js, – - , , – JavaScript, ES6 JS .



( , Node.js TypeScript ), - , . Node.js – io.js . , , . 2015 .!



Node.js – , - . ( Microsoft Azure, ), Node.js , LinkedIn, Yahoo, Walmart ( , Node.js – Hapi ).



2015: Node.js , ES6 Node.js. .





12.







--! : , IoT. IoT , 2015 - , 2014 ( ) – : , , .



JavaScript?



-, . ? , Node.js. , , . , ( , ) JavaScript, (, , ).



-, Node.js, , JavaScript- Node.js. Cylon.js , . , , noduino .



-, , « » Node.js. JavaScript – . , Intel Edison Galileo.







, -, , JavaScript , JS. Tessel – , , , Espruino .



, , JavaScript IoT, IoT JavaScript – .



2015: JavaScript IoT , – Node.js, .





たずめ



:

  1. ECMAScript 6. , , .
  2. TypeScript , .
  3. - JS, .
  4. JavaScript, JS ( ).
  5. API JavaScript, NUI JS. ( .)
  6. , , ES6.
  7. - , .
  8. JavaScript , -.
  9. JS, ( — ).
  10. Unity 5 WebGL, 3d , .
  11. Node.js , ES6 Node.js. io.js.
  12. IoT Node.js, .




, , 2015 !



All Articles