Webpack ローダーの練習

PHP中文网
リリース: 2017-06-22 11:00:00
オリジナル
1536 人が閲覧しました

フロントエンドテンプレートの概念を初めて使用する開発者は、通常、アンダースコアのテンプレートメソッドを使用します。これは、代入、条件判断、ループなどをサポートしており、基本的にニーズを満たすことができます。

Webpackを使用して開発環境を構築する場合、アンダースコアのテンプレートメソッドを使用してフロントエンドテンプレートをレンダリングしたい場合は、テンプレートコードをテンプレートファイルに独立して保存できます。テンプレートのレンダリングのためにテンプレート ファイルを JavaScript にロードする方法が、解決する必要がある最初の問題になります。

これについて言えば、Webpack の loader の概念について言及する必要があります。Webpack はローダーを介したアプリケーションのリソース ファイルの変換をサポートしており、テンプレート ファイルもそれらをロードするために対応するローダーを必要とします。

segmentfault の Leftstick は、現在 raw-loader、html-loader、template-html-loader、および ejs-loader がテンプレートの読み込みをサポートできると述べました。 。 。 。 。 。 [その他のリストについては、テンプレートを参照してください]

ローダーによっては若干異なり、ロード後の JS コードのパフォーマンスに反映されるものもあります。

これを処理するためにraw-loaderを使用しようとします。 raw-loaderの公式の説明は[ファイルを文字列としてロードする]であるため、テンプレートファイルを文字列にロードし、アンダースコアを使用できます。それを最終的な HTML にレンダリングします。

Webpack環境を簡単に構築するために、次の構成を使用します。

package.json

{  "name": "tpl-webpack",  "version": "1.0.0",  "description": "",  "main": "index.js?1.1.10",  "scripts": {"test": "echo \"Error: no test specified\" && exit 1"
  },  "author": "",  "license": "ISC",  "devDependencies": {"html-webpack-plugin": "^2.28.0","raw-loader": "^0.5.1","underscore": "^1.8.3","webpack": "^3.0.0"
  }
}
ログイン後にコピー

webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './index.js',
    output: {
        filename: 'bundle.js'},
    module: {
        loaders:[
            {
               test: /\.tpl$/,
               use: 'raw-loader'}
        ]
    },
    plugins: [new HtmlWebpackPlugin()]
};
ログイン後にコピー

テンプレートコードindex.tpl

<% _.each(data, function(n){ %><p>姓名:<%= n.name %>,年龄:<%= n.age %>,性别:<%= n.sex %></p><% }); %>
ログイン後にコピー

index.js

 1 var _ = require('underscore'); 2  3 // 这里可以看到indexTplFile只是字符串 4 var indexTplStr = require('./index.tpl'); 
 5 // template方法将其封装成一个方法 6 var indexTpl = _.template(indexTplStr); 7   8 var data = [ 9     {10         name: 'mike',11         age: 18,12         sex: '男'13     },14     {15         name: 'nina',16         age: 20,17         sex: '女'18     },19     {20         name: 'elle',21         age: 26,22         sex: '女'23     }24 ];    
25 26 document.body.innerHTML = indexTpl({data:data});
ログイン後にコピー
index.js

npm install を実行した後、webpack を実行し、index.html を開くと、次の結果が表示されます。

姓名:mike,年龄:18,性别:男

姓名:nina,年龄:20,性别:女

姓名:elle,年龄:26,性别:女
ログイン後にコピー

しかし、テンプレートのレンダリングのプロセス中に 3 行のコードが実行されることがわかります。1 行のコードだけで最終的な HTML 文字列を生成したい場合は、引き続き ejs-loader を試してください。 。

webpack.config.js

 1 var webpack = require('webpack'); 2 var HtmlWebpackPlugin = require('html-webpack-plugin'); 3 module.exports = { 4     entry: './index.js', 5     output: { 6         filename: 'bundle.js' 7     }, 8     module: { 9         loaders:[ 
10             { 
11                 test: /\.tpl$/, 
12                 loader: 'ejs-loader?variable=data'13             },14         ]15     }, 
16     plugins: [ 
17         new HtmlWebpackPlugin(),18         // 提供全局变量_19         new webpack.ProvidePlugin({20             _: "underscore"21         })22     ]23 };
ログイン後にコピー

対応する tpl ファイルを必要とした後、対応する HTML テンプレートを直接レンダリングすることもでき、コードでの使用も非常に簡単になります。

var indexTpl = require('./index.tpl');
document.body.innerHTML = indexTpl(data);
ログイン後にコピー

raw-loader と ejs-loader の比較を通じて、webpack でのローダーの使用法についてある程度理解できます。つまり、ローダーは、ある種の解析メソッドを通じてさまざまな種類のファイルをコードにモジュール化します。さらに処理するためにそれを JavaScript に提供します。

以上がWebpack ローダーの練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート