検索
ホームページウェブフロントエンドjsチュートリアル2017 年に注目すべき JavaScript 関連の技術トレンド

大晦日の 2 日前、Dan Abramov は Twitter で質問をしました:

JS コミュニティはためらうことなく新しいテクノロジーに対する期待と期待を高めました。この記事の内容も Twitter の回答から要約したものです。 、人気の高い順に並べています。未決定のままの小さな点の 1 つは、関数型プログラミングがもはや少数派ではなくなった今、関数型プログラミングをレッド カーペットから追い出す必要があるかどうかです。

WebAssembly

昨年、著者は WebAssembly が Web プラットフォームの基礎となるコードであることへの期待を表明しました。その本来の目的は、すべての言語を Web プラットフォーム上でコンパイルして実行できるようにすることであり、これは関数型プログラミングやリアクティブ プログラミングの多くのファンにとって非常に魅力的です。特に近年の JavaScript コミュニティの急速な発展に伴い、多くの開発者はこの言語の進化のスピードについていくことができず、そのため、使い慣れた言語を直接使用できることを強く望んでいます。新しい言語を入門から直接学ぶこと、そして諦めるという言語。しかし、JavaScript は依然として明らかな上昇傾向にあり、それについて悪く言う人はまだいません。そして、WebAssembly はまだ初期段階にあり、プレビュー段階に入ったばかりで、実際のリリースまではまだ遠いです。要約すると、著者は、WebAssembly は JavaScript の将来に大きな影響を与えるため、私たち全員が WebAssembly にある程度の注意を払うべきであると提案しています。 WebAssembly に興味がある場合は、Eric Elliott の関連ブログを読むことをお勧めします。

Elm

著者は個人的に Elm を使用するつもりはありませんが、その機能は依然として参考として非常に価値があります

2016 年、多くの開発者が Elm の開発に参加しました。Elm は単なる JavaScript 拡張ライブラリではありません。 JavaScript にコンパイルできるプログラミング言語は、関数型プログラミングに熱心な多くの開発者にとって良い選択です。 Elm の概要を参照すると、Elm は次の機能を提供します:

  • ランタイム エラーは発生せず、null も定義されていません。関数ではありません。

  • 非常にわかりやすいエラー メッセージが開発に役立ちます。

  • 比較的厳格なコード仕様とプロジェクト構造により、アプリケーションは迅速な反復中でもベスト プラクティスを維持できます。

  • すべての Elm パッケージにセマンティック バージョンの説明を自動的に追加します。

結局のところ、Elm はクリーンでシンプルで断片化されたコードを確実に書くための優れたツールを提供しており、Elm は JavaScript にコンパイルできるため、多くの JavaScript 開発者が注目し続けるか、試し続けることができます。

babili(babel-minify)

Babili は 2016 年 8 月に初めてリリースされました。これは、ネイティブ ES6 構文をサポートする Babel ツール チェーンに基づく圧縮ツールです。 Henry Zhu は、別の圧縮ツールが必要な理由をこの記事で説明しました。重要なポイントは次のとおりです:

現在、ほとんどの圧縮ツールは ES5 コードのみを処理できるため、圧縮の前に高度なコンパイルが必要であり、Babili は ES2015+ の直接入力をサポートできます。ブラウザのパフォーマンスの向上に伴い、ES2015 コードの直接実行をサポートするブラウザが増えているため、変換やコンパイルは必要なくなりました。さらに、Babili は Babel プリセットとして既存の Babel 構成に導入することも、直接使用するためのコマンド ライン ツールとしても使用できます。

ここに次の ES6 クラスを記述しました:

class Mangler {
  constructor(program) {
    this.program = program;
  }
}
// need this since otherwise Mangler isn't used
new Mangler();

従来の Babel を使用してコンパイルと圧縮を行うと、次のコードが得られます:

// ES2015 code -> Babel -> Uglify/Babili -> Minified ES5 Code
var a=function a(b){_classCallCheck(this,a),this.program=b};a();

そして Babili の効果は次のとおりです:

// ES2015 code -> Babili -> Minified ES2015 Code
class a{constructor(b){this.program=b}}new a;

OCaml

OCaml 自体は JS とは何の関係もありませんが、リスト内の次の 2 つの項目は OCaml に基づいているため、最初に導入する必要があります。過去 2 年間の関数型プログラミングの隆盛を追ってきた人なら、Haskell について聞いたことがあるかもしれません。そして OCaml は S にコンパイルできるおかげで、後から追いつく姿勢は Haskell を超えています。 Facebook の開発者の多くは OCaml のファンであり、彼らの Hack、Flow、Infer はすべて OCaml に基づいて構築されています。

BuckleScript

BuckleScript は、有名な Bloomberg チームによって作成された、OCaml に基づくサーバー側フレームワークです。 Duane Johnson はそれらについて次のように説明しています:
BuckleScript (bsc) は、OCaml コンパイラーに基づいた比較的新しい JavaScript サーバー側フレームワークです。言い換えれば、npm パッケージ マネージャーに基づく Web エコシステムに依存し続けながら、優れた機能を備えた自己型型の OCaml 言語を使用できます。

BuckleScript のコード スタイルを簡単に見てみましょう。たとえば、BuckleScript を使用して単純なサーバーを実装します。

let port = 3000
let hostname = "127.0.0.1"
let create_server http =
  let server = http##createServer begin fun [@bs] req resp ->
      resp##statusCode #= 200;
      resp##setHeader "Content-Type" "text/plain";
      resp##_end "Hello world\n"
    end
  in
  server##listen port hostname begin fun [@bs] () ->
    Js.log ("Server running at http://"^ hostname ^ ":" ^ Pervasives.string_of_int port ^ "/")
  end

let () = create_server Http_types.http

コンパイルされた出力は次のとおりです。

'use strict';
var Pervasives = require("bs-platform/lib/js/pervasives");
var Http       = require("http");

var hostname = "127.0.0.1";

function create_server(http) {
  var server = http.createServer(function (_, resp) {
    resp.statusCode = 200;
    resp.setHeader("Content-Type", "text/plain");
    return resp.end("Hello world\n");
  });
  return server.listen(3000, hostname, function () {
    console.log("Server running at http://" + (hostname + (":" + (Pervasives.string_of_int(3000) + "/"))));
    return /* () */0;
  });
}

create_server(Http);

OCaml の最大の特徴は、その関数型言語機能です。不変型サポートでは、OCaml stdlib を使用して実装する不変型は次のとおりです:

module IntMap = Map.Make(struct
  type t = int
  let compare (x : int) y = compare x y
end)

let test () =
  let m = ref IntMap.empty in
  let count = 1000000 in
  for i = 0 to count do
    m := IntMap.add i i !m
  done;
  for i = 0 to count do
    ignore (IntMap.find i !m)
  done

let () = test()

そして、Facebook Immutable を使用してコードを実装する場合:

'use strict';

var Immutable = require('immutable');
var Map = Immutable.Map;
var m = new Map();

function test() {
  var count = 1000000;
  for(var i = 0; i < count; ++i) {
    m = m.set(i, i);
  }
  for(var j = 0; j < count; ++j) {
    m.get(j);
  }
}

test();

パフォーマンス評価の下で、2 つの間の実行時間の比較は:

  • BuckleScript: 1186ms

  • JavaScript: 3415ms

コンパイルされたボリュームは:

  • BuckleScript (production): 899 Bytes

  • JavaScript: 55.3K Bytes

ReasonML

ReasonML与React师出同门,是基于OCamel设计的语法友好、编辑器支持程度高,并且有强大的编译工具支持的语言。建议阅读Sean Grove对ReasonML的介绍。本文简单介绍几个JavaScript与Reason的语法对比:

元类型| JavaScript | Reason |

333.14153.1415″Hello World!”"Hello world!”‘Hello world!’Strings must use “Characters are strings’a'truetrue[1,2,3][1,2,3]null()const x = y;let x = y;let x = y;reference cellsvar x = y;No equivalent (thankfully)[x, ...lst] (linear time)[x, ...lst] (constant time)[...lst, x] (linear time)Not supported{…obj, x: y}{…obj, x: y}

表达式| JavaScript | Reason |

login ? “hi” : “bye”login ? “hi” : “bye”let res = undefined;switch (thing) { case first: res = “first”; break; case second: res = “second”; break;};`let res = switch thing {first => “first”second => “second”}; `

Purescript

另一个强类型、高性能的能够编译到JavaScript的编程语言,其定位与Elm类似,主要特性为:

  • 没有运行时错误

  • 严格的,类似于JavaScript的计算

  • 支持JavaScript 对象语法

  • 提供相较于Hashkell更强大方便的类型系统

  • 更方便地JavaScript库集成

Webpack-blocks

Dan Abramov说过,Webpack的定位就是在相对底层,因此将配置以编程块的方式实现会更加完备。

const { createConfig, defineConstants, env, entryPoint, setOutput, sourceMaps } = require(&#39;@webpack-blocks/webpack2&#39;)
const babel = require(&#39;@webpack-blocks/babel6&#39;)
const devServer = require(&#39;@webpack-blocks/dev-server2&#39;)
const postcss = require(&#39;@webpack-blocks/postcss&#39;)
const autoprefixer = require(&#39;autoprefixer&#39;)

module.exports = createConfig([
  entryPoint(&#39;./src/main.js&#39;),
  setOutput(&#39;./build/bundle.js&#39;),
  babel(),
  postcss([
    autoprefixer({ browsers: [&#39;last 2 versions&#39;] })
  ]),
  defineConstants({
    &#39;process.env.NODE_ENV&#39;: process.env.NODE_ENV
  }),
  env(&#39;development&#39;, [
    devServer(),
    devServer.proxy({
      &#39;/api&#39;: { target: &#39;http://localhost:3000&#39; }
    }),
    sourceMaps()
  ])
])

GraphQL

GraphQL是个不错的REST替代查询语言,特别是对于那些拥有大量数据的公司。这个案例分析很好地阐述了从REST到GraphQL的转变之路。我能够想象2017年GraphQL会继续处于上升势头,不过要谈到真的大规模实施,还要到2018年吧。

React Storybook

相信大家对于React Storybook并不陌生了,你能够独立于应用而交互式的开发你的组件,就如下图所示:

jQuery 3.0

爷爷辈的jQuery仍然处于不断的迭代更新中,可能很多开发者忽略了2016年6月份发布的jQuery 3.0版本,可以参考这里获取更多信息。

Pixi.js

如果你打算在浏览器中实现精彩的2D效果,特别是对于使用WebGL的游戏开发者,Pixi.js是个值得一看的库,可以参考这里获取更多的Demo。

Preact与inferno

非常优秀的React的替代库。

Rust

Rust可以编译到JavaScript啦(通过emscripten)。

Custom Elements

Custom Elements(包括Shadow DOM)一直不被主流的开发者接受,不过看似2017这一点将会发生些许变化。变化的关键因素在于浏览器支持比例的改善。个人还是蛮期待Custom Elements的,可以关注SmashingMag或者Google’s关于Custom Elements的解释。

WebRTC

很难相信WebRTC已经五岁了,Facebook、Slack、Snapchat以及WhatsApp都在他们的服务中集成了WebRTC。可以预见WebRTC会在2017年被更多的公司采用,蒸蒸日上。

Next.js

Next.js是个基于React、Webpack与Babel构建的,支持服务端渲染的小框架,其来源于ZEIT团队,在React社区获得了不小的关注度。

以上就是2017 年值得一瞥的 JavaScript 相关技术趋势的内容,更多相关内容请关注PHP中文网(www.php.cn)!

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、型を使用してストリーミングしますnode.jsは、型を使用してストリーミングしますApr 30, 2025 am 08:22 AM

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

Python vs. JavaScript:パフォーマンスと効率の考慮事項Python vs. JavaScript:パフォーマンスと効率の考慮事項Apr 30, 2025 am 12:08 AM

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptの起源:その実装言語の調査JavaScriptの起源:その実装言語の調査Apr 29, 2025 am 12:51 AM

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、