目次
Bower
Browserify
コンポーネント
デュオ
ホームページ ウェブフロントエンド htmlチュートリアル フロントエンド モジュール マネージャーの概要_html/css_WEB-ITnose

フロントエンド モジュール マネージャーの概要_html/css_WEB-ITnose

Jun 24, 2016 am 11:53 AM

ウェブサイト開発ではモジュール構造が主流になりました。

ウェブサイトを作る主なタスクは、もはや自分でさまざまな機能を書くことではなく、さまざまなモジュールをどのように組み合わせるかです。

ブラウザ自体はモジュール管理メカニズムを提供していないため、各モジュールを呼び出すために、Web ページに大量のスクリプト タグを追加する必要がある場合があります。これにより、Web ページが肥大化して保守が困難になり、大量の HTTP リクエストが生成されるため、表示速度が低下し、ユーザー エクスペリエンスに影響を与えます。

この問題を解決するために、フロントエンドモジュールマネージャー(パッケージ管理)が登場しました。さまざまな JavaScript スクリプトの依存関係を簡単に管理し、各モジュールを自動的にロードして、Web ページの構造を明確かつ合理的にすることができます。今後、すべてのフロントエンド JavaScript プロジェクトはこの方法で開発されるべきであると言っても過言ではありません。

最も初期で最も有名なフロントエンド モジュール マネージャーは、他でもない RequireJS です。 AMD フォーマットを使用し、さまざまなモジュールを非同期的にロードします。具体的な使い方については、私が書いたチュートリアルを参照してください。 Require.js の問題は、さまざまなパラメーターの設定が煩雑で、学習が難しく、完全に習得するのが難しいことです。さらに、実際のアプリケーションでは、サーバー側ですべてのモジュールをマージし、均一にロードする必要があることが多く、これにより多くの作業負荷が追加されます。

今日は、他の 4 つのフロントエンド モジュール マネージャー、Bower、Browserify、Component、Duo を紹介します。それぞれに独特の特徴があり、Require.js の欠点をうまく補っており、フロントエンド開発にとって強力なツールです。

この記事はこれら 4 つのモジュール マネージャーのチュートリアルではないことに注意してください。読者が全体的な印象を持ち、特定の種類の作業を完了できる特定のツールがあることを知っていただけるように、最も簡単な例を使用してそれらの用途を説明したいと思います。詳しい使用方法については、それぞれのドキュメントを参照してください。

Bower

Bower の主な機能は、モジュールのインストール、アップグレード、削除のための統合された保守可能な管理モデルを提供することです。

まずはBowerをインストールします。

  $ npm install -g bower
ログイン後にコピー

次に、bower install コマンドを使用して、さまざまなモジュールをインストールします。ここではいくつかの例を示します。

  # 模块的名称  $ bower install jquery  # github用户名/项目名  $ bower install jquery/jquery  # git代码仓库地址  $ bower install git://github.com/user/package.git  # 模块网址  $ bower install http://example.com/script.js
ログイン後にコピー

いわゆる「インストール」とは、モジュール (およびその依存モジュール) を現在のディレクトリの bower_components サブディレクトリにダウンロードすることを意味します。ダウンロードしたら、Web ページに直接挿入できます。

  <script src="/bower_componets/jquery/dist/jquery.min.js">
ログイン後にコピー

モジュールの更新には Bower update コマンドを使用します。

  $ bower update jquery
ログイン後にコピー

モジュール名が指定されていない場合は、すべてのモジュールが更新されます。

モジュールのアンインストールには Bower uninstall コマンドを使用します。

  $ bower uninstall jquery
ログイン後にコピー

デフォルトでは依存モジュールも一緒にアンインストールされることに注意してください。たとえば、jquery-ui をアンインストールすると、jquery に依存する他のモジュールがない限り、jquery も一緒にアンインストールされます。

Browserify

Browserify自体はモジュールマネージャーではなく、サーバーサイドのCommonJS形式モジュールをブラウザ側で実行できるようにするだけです。これは、これを通じて Node.js の npm モジュール マネージャーを使用できることを意味します。したがって、実際には、npm の機能を間接的にブラウザーに提供します。

まず、Browserifyをインストールします。

りぃ

それではサーバーサイドスクリプトを書きます。

  $ npm install -g browserify
ログイン後にコピー

上記コードのuniqモジュールはCommonJS形式なのでブラウザでは実行できません。この時点で、Browserify が登場し、上記のコードをブラウザ スクリプトにコンパイルします。

  var uniq = require('uniq');  var nums = [ 5, 2, 1, 3, 2, 5, 4, 2, 0, 1 ];  console.log(uniq(nums));
ログイン後にコピー

生成されたbundle.jsはWebページに直接挿入できます。

  $ browserify robot.js > bundle.js
ログイン後にコピー

Browserify がコンパイルされると、スクリプトが依存するモジュールも一緒にコンパイルされます。つまり、複数のモジュールを 1 つのファイルに結合できます。

コンポーネント

コンポーネントは、Express フレームワークの作者である TJ Holowaychuk によって開発されたモジュール マネージャーです。その基本的な考え方は、Web ページに必要なさまざまなリソース (スクリプト、スタイル シート、画像、フォントなど) をコンパイルし、それらを同じディレクトリ (デフォルトはビルド ディレクトリ) に配置することです。

まずコンポーネントをインストールします。

  <script src="bundle.js"></script>
ログイン後にコピー

上記のコードでコンポーネントのバージョンを指定する必要があるのは、バージョン 1.0 がまだ正式にリリースされていないためです。

次に、プロジェクトのルートディレクトリに新しいindex.htmlを作成します。

  $ npm install -g component@1.0.0-rc5
ログイン後にコピー

上記コードのbuild.cssとbuild.jsがComponentで生成される対象ファイルです。

次に、プロジェクトのルートディレクトリにプロジェクト構成ファイルとして新しいcomponent.jsonファイルを作成します。

  <!DOCTYPE html>  <html>    <head>      <title>Getting Started with Component</title>      <link rel="stylesheet" href="build/build.css">    </head>    <body>      <h1>Getting Started with Component</h1>      <p class="blink">Woo!</p>      <script src="build/build.js"></script>    </body>  </html>
ログイン後にコピー

上記のコードでは、JavaScriptスクリプトとスタイルシートを指定する元のファイルはindex.jsとindex.cssで、スタイルシートは正規化モジュールに依存しています(バージョン3.0.0以上、バージョン以下) 4.0)。ここで注意していただきたいのは、Componentモジュールの形式は「githubのユーザー名/プロジェクト名」ということです。

最後にコンポーネントビルドコマンドを実行してファイルをコンパイルします。

  {    "name": "getting-started-with-component",    "dependencies": {      "necolas/normalize.css": "^3.0.0"    },    "scripts": ["index.js"],    "styles": ["index.css"]  }
ログイン後にコピー

コンパイル中に、コンポーネントは自動的に autoprefixer を使用してブラウザーのプレフィックスを CSS プロパティに追加します。

現在、Component は半年近くコードリポジトリが変更されていない状態のようです。公式も次に紹介する Duo の使用を推奨しています。

デュオ

  Duo是在Component的基础上开发的,语法和配置文件基本通用,并且借鉴了Browserify和Go语言的一些特点,相当地强大和好用。

  首先,安装Duo。

  $ npm install -g duo
ログイン後にコピー

  然后,编写一个本地文件index.js。

  var uid = require('matthewmueller/uid');  var fmt = require('yields/fmt');    var msg = fmt('Your unique ID is %s!', uid());  window.alert(msg);
ログイン後にコピー

  上面代码加载了uid和fmt两个模块,采用Component的"github用户名/项目名"格式。

  接着,编译最终的脚本文件。

  $ duo index.js > build.js
ログイン後にコピー

  编译后的文件可以直接插入网页。

  <script src="build.js"></script>
ログイン後にコピー

  Duo不仅可以编译JavaScript,还可以编译CSS。

  @import 'necolas/normalize.css';  @import './layout/layout.css';    body {    color: teal;    background: url('./background-image.jpg');  }
ログイン後にコピー

  编译时,Duo自动将normalize.css和layout.css,与当前样式表合并成同一个文件。

  $ duo index.css > build.css
ログイン後にコピー

  编译后,插入网页即可。

  <link rel="stylesheet" href="build.css">
ログイン後にコピー

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? 公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? Mar 04, 2025 pm 12:32 PM

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

WebページのPNG画像にストローク効果を効率的に追加する方法は? WebページのPNG画像にストローク効果を効率的に追加する方法は? Mar 04, 2025 pm 02:39 PM

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

See all articles