zoukankan      html  css  js  c++  java
  • webapck html-loader实现资源复用

    1、安装

    npm i html-loader --save-dev

    2、项目目录

     

    layout文件夹下的footer.html文件为:

    <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js
    "></script>

    layout文件夹下的head-common.html文件为:

    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="keywords" content="MMall,happymmall,MMall电商,网上购物,网上商城,数码产品,手机,笔记本,相机,手表,耳机,电商视频,电商教程,电商源码下载">
    <meta name="description" content="一个提供数码通讯、手机、电脑、家居百货、服装服饰、母婴、图书、食品等数万种优质商品,最优质、最便捷的网上购物平台。">
    <link rel="dns-prefetch" href="//cdn.bootcss.com">
    <link rel="dns-prefetch" href="//s.happymmall.com">
    <link rel="dns-prefetch" href="//img.happymmall.com">
    <script>
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "https://hm.baidu.com/hm.js?bc210cd22928076d28296716d9dfcf01";
      var s = document.getElementsByTagName("script")[0]; 
      s.parentNode.insertBefore(hm, s);
    })();
    </script>

    login.html文件为(已包含配置):

    <!DOCTYPE html>
    <html>
        <%= require('html-loader!./layout/head-common.html')  %>
        <body>
            <%= require('html-loader!./layout/footer.html')  %>
        </body>
    
    </html>

    3、webpack.config.js文件为:

     

    //处理html模板
    var htmlWebpackPlugin = require('html-webpack-plugin');
    //处理共用、通用的js
    var webpack = require('webpack');
    //css单独打包
    var ExtractTextPlugin = require("extract-text-webpack-plugin");
    
    // 获取html-webpack-plugin参数的方法 
    var getHtmlConfig = function(name, title){
        return {
            template    : './src/view/' + name + '.html',
            filename    : 'view/' + name + '.html',
            favicon     : './favicon.ico',
            title       : title,
            inject      : true,
            hash        : true,
            chunks      : ['common', name]
        };
    };
    
    module.exports = {
        //    entry: './src/app.js',
        entry: {
            //通用模块
            'common': ['./src/page/common/index.js'],
            'login': ['./src/page/login/index.js'],
            'index': ['./src/page/index/index.js']
        },
        output: {
            path: __dirname + '/dist',
            filename: 'js/[name].js'
        },
        //将外部变量或者模块加载进来
        externals: {
            'jquery': 'window.jQuery'
        },
        module: {
            loaders: [{
                    test: /.js$/,
                    //以下目录不处理
                    exclude: /node_modules/,
                    //只处理以下目录
                    include: /src/,
                    loader: "babel-loader",
                    //配置的目标运行环境(environment)自动启用需要的 babel 插件
                    query: {
                        presets: ['latest']
                    }
                },
                //css 处理这一块
                {
                    test: /.css$/,
                    use: ExtractTextPlugin.extract({
                        fallback: "style-loader",
                        use: [
                            //'style-loader',
                            {
                                loader: 'css-loader',
                                options: {
                                    //支持@important引入css
                                    importLoaders: 1
                                }
                            },
                            {
                                loader: 'postcss-loader',
                                options: {
                                    plugins: function() {
                                        return [
                                            //一定要写在require("autoprefixer")前面,否则require("autoprefixer")无效
                                            require('postcss-import')(),
                                            require("autoprefixer")({
                                                "browsers": ["Android >= 4.1", "iOS >= 7.0", "ie >= 8"]
                                            })
                                        ]
                                    }
                                }
                            }
                        ]
                    })
                },
                //less 处理这一块
                {
                    test: /.less$/,
                    use: ExtractTextPlugin.extract({
                        fallback: "style-loader",
                        use: [
                            //'style-loader',
                            {
                                loader: 'css-loader',
                                options: {
                                    //支持@important引入css
                                    importLoaders: 1
                                }
                            },
                            {
                                loader: 'postcss-loader',
                                options: {
                                    plugins: function() {
                                        return [
                                            //一定要写在require("autoprefixer")前面,否则require("autoprefixer")无效
                                            require('postcss-import')(),
                                            require("autoprefixer")({
                                                "browsers": ["Android >= 4.1", "iOS >= 7.0", "ie >= 8"]
                                            })
                                        ]
                                    }
                                }
                            },
                            'less-loader'
                        ]
                    })
                },
    //            //处理html模板
    //            {
    //                test: /.html$/,
    //                use: {
    //                    loader: 'html-loader'
    //                }
    //            },
                //处理图片
                {
                    test: /.(png|jpg|gif|svg)$/i,
                    loaders: [
                        //小于8k的图片编译为base64,大于10k的图片使用file-loader            
                        'url-loader?limit=8192&name:img/[name]-[hash:5].[ext]',
                        //图片压缩
                        'image-webpack-loader'
                    ]
    
                }
            ]
        },
        plugins: [
            //html模板处理
    //        new htmlWebpackPlugin({
    //            template: 'index.html',
    //            filename: 'index.html',
    //            inject:true,
    //            hash:true,
    //            chunks:['common','index']
    //        }),
            new htmlWebpackPlugin(getHtmlConfig('index', '首页')),    
            new htmlWebpackPlugin(getHtmlConfig('login', '登录页')),
            // 独立通用模块到js/common.js
            new webpack.optimize.CommonsChunkPlugin({
                //公共块的块名称
                name: 'common',
                //生成的文件名
                filename: 'js/common.js'
            }),
            //css 单独打包到文件
            new ExtractTextPlugin('css/[name].css')
        ]
    }

    注:html-loade已经在login.html中配置好了。

    4、执行命令&查看效果

    npm run webpack

     



  • 相关阅读:
    安卓基础之读取联系人的姓名和电话
    Android基础之6.0系统以上的权限分配
    Android基础之内容提供者的实现
    android中Post方式发送HTTP请求
    安卓基础之Sqlite数据库最最基础操作
    安卓基础之Get方式发送http请求
    安卓基础之国际化
    安卓基础之主题/样式
    安卓基础之Activity的生命周期
    Kotlin入门(14)继承的那些事儿
  • 原文地址:https://www.cnblogs.com/mengfangui/p/7590615.html
Copyright © 2011-2022 走看看