目次
モジュール メソッド
ES6 (推奨)
ホームページ ウェブフロントエンド フロントエンドQ&A webpackはes6をサポートしていますか?

webpackはes6をサポートしていますか?

Jan 18, 2023 pm 07:01 PM
es6 webpack

Webpack は es6 をサポートします。 Webpack 2 はネイティブ ES6 モジュール構文をサポートしているため、開発者は babel などの追加ツールを導入せずにインポートとエクスポートを使用できます。ただし、他の ES6 機能を使用する場合も、babel ツールを導入する必要があります。

webpackはes6をサポートしていますか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

モジュール メソッド


Webpack を使用してアプリケーションをパッケージ化する場合、ES6、CommonJS、AMD などのさまざまなモジュール構文スタイルから選択できます。

webpack は複数のモジュール構文をサポートしていますが、奇妙な動作やバグを避けるために、可能な限り一貫した構文を使用することをお勧めします。実際、webpack は、最も近い package.json ファイルに「module」または「commonjs」の値を持つ「type」フィールドが含まれている場合に、構文の一貫性チェックを有効にします。読む前に次の点に注意してください:

  • package.json の .mjs または .js に "type": "module" を設定します

    • CommonJS は許可されていません。たとえば、require、module.exports、exports は使用できません。

    • ファイルをインポートするときは、拡張子を記述することが必須です。たとえば、import を使用する必要があります。 import './src/App' の代わりに './src/App.mjs' (Rule.resolve.fullSpecified を設定することでこのルールを無効にできます)

  • #.cjs または .js の package.json で "type": "commonjs" を設定します。

    • インポートとエクスポートの両方は使用できません

  • package.json の .wasm に "type": "module" を設定します

    • wasm ファイルを導入するときは、ファイル拡張子を記述する必要があります

ES6 (推奨)


webpack 2 はネイティブ ES6 モジュール構文をサポートしています。つまり、追加の構文を導入する必要はありません。 babel などのツールでは、インポートとエクスポートを使用できます。ただし、他の ES6 機能を使用する場合でも、babel を導入する必要があることに注意してください。 webpack は次のメソッドをサポートしています。

#import

## import を使用して、エクスポートを通じてエクスポートされた別のモジュールを静的にインポートします。

import MyModule from './my-module.js';
import { NamedExport } from './other-module.js';
ログイン後にコピー

警告:

ここでのキーワードは静的です。標準の import ステートメントでは、module ステートメントは、「ロジックがある、または変数が含まれる」他のモジュールを動的に導入することはできません。インポートと import() の動的使用法に関する詳細情報。

インポートを通じてデータ URI を導入することもできます:

import 'data:text/javascript;charset=utf-8;base64,Y29uc29sZS5sb2coJ2lubGluZSAxJyk7';
import {
  number,
  fn,
} from 'data:text/javascript;charset=utf-8;base64,ZXhwb3J0IGNvbnN0IG51bWJlciA9IDQyOwpleHBvcnQgY29uc3QgZm4gPSAoKSA9PiAiSGVsbG8gd29ybGQiOw==';
ログイン後にコピー

export

モジュール全体または名前付きをエクスポートします。デフォルトのエクスポートモジュール。

// 具名导出
export var Count = 5;
export function Multiply(a, b) {
  return a * b;
}

// 默认导出
export default {
  // Some data...
};
ログイン後にコピー

import()

function(string path):Promise

動的読み込みモジュール。 import が呼び出されるポイントは分割ポイントとみなされます。これは、要求されたモジュールとそれが参照するすべてのサブモジュールが 1 つのチャンクに分割されることを意味します。

ヒント:

ES2015 ローダーの仕様では、実行時に ES2015 モジュールを動的にロードするための import() メソッドが定義されています。

if (module.hot) {
  import('lodash').then((_) => {
    // Do something with lodash (a.k.a '_')...
  });
}
ログイン後にコピー
警告:

import() 機能は、組み込みの Promise に依存しています。古いブラウザで import() を使用する場合は、es6-promise や Promise-polyfill などの Polyfill ライブラリを使用して、Promise 環境を事前に設定 (シム) することを忘れないでください。

import() の式

では、import(foo) などの完全に動的なインポート ステートメントを使用できません。 foo は、システムまたはプロジェクト内の任意のファイルへの任意のパスである可能性があるためです。

import() には、モジュールに関する少なくともいくつかのパス情報が含まれている必要があります。パッケージ化は特定のディレクトリまたはファイルのセットに制限できるため、動的式を使用する場合、import() 呼び出しで要求される可能性のあるすべてのモジュールが含まれます。たとえば、import(`./locale/${ language}.json`) は、.locale ディレクトリ内の各 .json ファイルを新しいチャンクにパッケージ化します。実行時、変数言語が評価された後、english.json や german.json などの任意のファイルを使用できます。

// 想象我们有一个从 cookies 或其他存储中获取语言的方法
const language = detectVisitorLanguage();
import(`./locale/${language}.json`).then((module) => {
  // do something with the translations
});
ログイン後にコピー

ヒント:

webpackInclude および webpackExclude オプションを使用すると、正規表現パターンを追加して、webpack によってインポートされるファイルの数を減らすことができます。

#マジック コメントインライン コメントにより、この機能が有効になります。インポートにコメントを追加することで、チャンクに名前を付けたり、別のモードを選択したりすることができます。

// 单个目标
import(
  /* webpackChunkName: "my-chunk-name" */
  /* webpackMode: "lazy" */
  /* webpackExports: ["default", "named"] */
  'module'
);

// 多个可能的目标
import(
  /* webpackInclude: /\.json$/ */
  /* webpackExclude: /\.noimport\.json$/ */
  /* webpackChunkName: "my-chunk-name" */
  /* webpackMode: "lazy" */
  /* webpackPrefetch: true */
  /* webpackPreload: true */
  `./locale/${language}`
);
ログイン後にコピー
import(/* webpackIgnore: true */ 'ignored-module.js');
ログイン後にコピー

webpackIgnore

: true に設定すると、動的インポート解析が無効になります。

警告:

注: webpackIgnore を true に設定すると、コード分割は実行されません。

webpackChunkName: 新しいチャンクの名前。 webpack 2.6.0 以降、プレースホルダー [index] と [request] はそれぞれ、増分番号または実際に解析されたファイル名をサポートします。このアノテーションを追加すると、与えられる個々のチャンクの名前は [id].js ではなく [my-chunk-name].js になります。

webpackMode: webpack 2.6.0 以降では、動的インポートを解析するために別のモードを指定できます。次のオプションがサポートされています:

  • 'lazy' (デフォルト値): import() でインポートされたモジュールごとに遅延ロード可能なモジュールを生成します。

  • 'lazy-once': すべての import() 呼び出しを満たすことができる単一の遅延ロード可能なチャンクを生成します。このチャンクは最初の import() 呼び出しで取得され、後続の import() では同じネットワーク応答が使用されます。このモードは、複数の要求されたモジュール パスを含む可能性がある import(`./locales/${ language}.json`) などの一部の動的ステートメントでのみ意味があることに注意してください。

  • 'eager': 追加のチャンクは生成されません。すべてのモジュールは現在のチャンクによってインポートされ、追加のネットワーク要求は行われません。ただし、解決された状態の Promise は引き続き返されます。静的インポートとは対照的に、モジュールは import() の呼び出しが完了するまで実行されません。

  • 'weak'

    : モジュール関数が他の方法でロードされている場合 (つまり、別のチャンクがこのモジュールをインポートしている場合)、モジュールのロードを試みます。またはロードされるモジュールスクリプトが含まれます)。 Promise は引き続き返されますが、チャンクがクライアント上ですでに使用可能な場合にのみ正常に解決されます。モジュールが利用できない場合は、拒否された Promise が返され、ネットワーク リクエストは実行されません。これは、最初に提供されていないモジュールのインポートでアプリケーション ナビゲーションがトリガーされる場合ではなく、必要なチャンクが常に最初のリクエスト (ページに埋め込まれている) で手動で提供される場合に、ユニバーサル レンダリング (SSR) で役立ちます。

webpackPrefetch

: 将来、特定のナビゲーション ジャンプにこのリソースが必要になる可能性があることをブラウザーに伝えます。

webpackPreload

: 現在のナビゲーション中にリソースが必要になる可能性があることをブラウザに伝えます。

webpackInclude

: インポート解決時の照合に使用される正規表現。一致するモジュールのみがパッケージ化されます。

webpackExclude

: インポート解決時の照合に使用される正規表現。一致するすべてのモジュールはパッケージ化されません。

webpackExports

: 指定されたエクスポートを持つ動的 import() モジュールのみを構築するように webpack に指示します。チャンクサイズを縮小できます。 webpack 5.0.0-beta.18 以降で利用可能です。

[関連する推奨事項: JavaScript 学習チュートリアル]

###

以上がwebpackはes6をサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ES6 で配列を反転する方法 ES6 で配列を反転する方法 Oct 26, 2022 pm 06:19 PM

ES6 では、配列オブジェクトの reverse() メソッドを使用して、配列の反転を実現できます。このメソッドは、配列内の要素の順序を逆にして、最後の要素を最初に、最初の要素を最後に配置するために使用されます。構文「array」 。逆行する()"。 reverse() メソッドは元の配列を変更します。変更したくない場合は、拡張演算子 "..." とともに使用する必要があり、構文は "[...array].reverse() 」。

非同期は es6 または es7 用ですか? 非同期は es6 または es7 用ですか? Jan 29, 2023 pm 05:36 PM

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

VUE3 入門チュートリアル: Webpack を使用したパッケージ化とビルド VUE3 入門チュートリアル: Webpack を使用したパッケージ化とビルド Jun 15, 2023 pm 06:17 PM

Vue は、インタラクティブで効率的な Web アプリケーションを迅速に構築するのに役立つ優れた JavaScript フレームワークです。 Vue3 は、多くの新機能が導入された Vue の最新バージョンです。 Webpack は現在最も人気のある JavaScript モジュール パッケージャーおよびビルド ツールの 1 つで、プロジェクト内のさまざまなリソースの管理に役立ちます。この記事では、Webpack を使用して Vue3 アプリケーションをパッケージ化してビルドする方法を紹介します。 1.Webpackをインストールする

es6 の 2 つの配列で異なる項目を見つける方法 es6 の 2 つの配列で異なる項目を見つける方法 Nov 01, 2022 pm 06:07 PM

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

vite と webpack の違いは何ですか vite と webpack の違いは何ですか Jan 11, 2023 pm 02:55 PM

相違点: 1. Webpack サーバーの起動速度は Vite より遅いですが、Vite は起動時にパッケージ化する必要がなく、モジュールの依存関係を解析してコンパイルする必要がないため、起動速度が非常に速くなります。 2. Vite ホット アップデートは webpack よりも高速です。Vite の HRM の観点から、特定のモジュールのコンテンツが変更された場合、ブラウザーにモジュールを再リクエストさせるだけです。 3. Vite は esbuild を使用して依存関係を事前構築しますが、webpack はノードに基づいています。 4. Vite のエコロジーは webpack ほど良くなく、ローダーとプラグインが十分に豊富ではありません。

モジュール開発に PHP と webpack を使用する方法 モジュール開発に PHP と webpack を使用する方法 May 11, 2023 pm 03:52 PM

Web 開発テクノロジーの継続的な発展に伴い、フロントエンドとバックエンドの分離とモジュール開発が広く普及する傾向になりました。 PHP は一般的に使用されるバックエンド言語です。モジュラー開発を行う場合、モジュールの管理とパッケージ化にいくつかのツールを使用する必要があります。Webpack は非常に使いやすいモジュラー パッケージング ツールです。この記事では、モジュール開発に PHP と webpack を使用する方法を紹介します。 1. モジュラー開発とは何ですか? モジュラー開発とは、プログラムを、それぞれが独自の機能を持つ独立したモジュールに分解することを指します。

ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? Nov 21, 2022 pm 06:15 PM

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

es6 の一時的なデッドゾーンとは何を意味しますか? es6 の一時的なデッドゾーンとは何を意味しますか? Jan 03, 2023 pm 03:56 PM

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

See all articles