Maison  >  Article  >  interface Web  >  Pratique du chargeur Webpack

Pratique du chargeur Webpack

PHP中文网
PHP中文网original
2017-06-22 11:00:001539parcourir

Les développeurs qui sont nouveaux dans le concept de modèles front-end ont généralement utilisé la méthode de modèle de soulignement. Elle est très simple et facile à utiliser. Elle prend en charge l'affectation, le jugement conditionnel, le bouclage, etc., et peut essentiellement répondre à nos besoins.

Lorsque vous utilisez Webpack pour créer un environnement de développement, si vous souhaitez utiliser la méthode de modèle de soulignement pour afficher le modèle frontal, nous pouvons enregistrer le code du modèle indépendamment dans le fichier modèle. Comment charger le fichier modèle dans notre JavaScript pour le rendu du modèle est devenu le premier problème que nous devons résoudre.

En parlant de cela, nous devons mentionner le concept de loader (loader) dans Webpack prend en charge la conversion des fichiers de ressources d'application via le chargeur, et nos fichiers modèles en ont également besoin. chargeurs correspondants à charger afin de soutenir notre développement.

Le joystick gauche dans segmentfault a mentionné que raw-loader, html-loader, template-html-loader et ejs-loader peuvent actuellement prendre en charge le chargement de modèles. . . . . . [Reportez-vous aux modèles pour plus de listes]

Les différents chargeurs sont légèrement différents, ce qui se reflète dans les performances du code JS après le chargement. Certains renvoient des chaînes et d'autres renvoient des objets ou des méthodes JS.

Nous essayons d'utiliser raw-loader pour le gérer. L'explication officielle de raw-loader est [Charger le fichier sous forme de chaîne], donc. nous pouvons Le fichier modèle est chargé dans une chaîne, puis le trait de soulignement est utilisé pour restituer le HTML final.

Nous utilisons la configuration suivante pour créer simplement un environnement 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()]
};

Code du modèle 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

Après avoir exécuté npm install, exécutez webpack, ouvrez index.html, vous pouvez voir les résultats suivants.

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

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

姓名:elle,年龄:26,性别:女

Mais on peut voir que lors du processus de rendu du modèle, trois lignes de code sont exécutées. Si nous voulons générer la chaîne HTML finale avec une seule ligne de code, continuez à essayer <.>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 };
est également très simple à utiliser dans le code. Après avoir demandé le fichier tpl correspondant, vous pouvez directement restituer le modèle html correspondant. .

var indexTpl = require('./index.tpl');
document.body.innerHTML = indexTpl(data);
Grâce à la comparaison entre raw-loader et ejs-loader, nous pouvons avoir une certaine compréhension de l'utilisation du chargeur dans webpack, c'est-à-dire que le chargeur doit transmettre différents types de fichiers via une sorte de méthode d'analyse est modularisée dans notre code puis fournie à Javascript pour un traitement ultérieur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Structure analytique dans Es6Article suivant:Structure analytique dans Es6