• 08 webpack4.0学习笔记——配置文件_DefinePlugin使用


    概述

            DefinePlugin用来做定义。这就类似于我们项目开发中的config文件一样,在config文件中一般放的是系统代码中的一些服务器地址之类的公共信息,我们将这些信息提取出来单独放在配置文件中,方便于后期的维护和管理。

            那DefinePlugin的功能和config这个文件类似,我们可以在它里面定义一些公有信息,然后在代码里直接使用,接下来我们来看详细操作步骤。

    具体操作步骤

            1、根据官网的介绍我们来配置此插件,如下:

            2、然后在我们的input.js文件中来使用这个变量SERVER_URL,如下:

            上述代码可看到,我们在代码里并没有事先引入其他信息,直接使用SERVER_URL这个变量的。

            3、到这一步,如果我们进行打包处理的话会出现报错信息,因为我们的defineplugin插件是webpack所属之下的,所以我们要在配置文件的顶部还要引入webpack,如下:

            4、这样一来,我们再次执行打包处理后,就会生成结果文件,打开结果文件搜索fetch关键字可看到,在此处它请求的不再是我们定义的变量,而是一个具体的url地址,如下:

            5、本文的配置文件代码和input.js入口文件代码,完整版如下:

            配置文件:

    const path=require('path');
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');
    const webpack=require('webpack');
    
    module.exports={
    	entry:'./input.js',
    	output:{
    		path:path.resolve(__dirname,'dist'),
    		filename:'output.bundle.js'
    	},
    	mode:'development',
    	plugins: [
    		new MiniCssExtractPlugin({
    		  // Options similar to the same options in webpackOptions.output
    		  // both options are optional
    		  filename: '[name].css',
    		  chunkFilename: '[id].css',
    		}),
    		new webpack.DefinePlugin({
    		  'SERVICE_URL': JSON.stringify('https://dev.example.com')
    		}),
    	],
    	module:{
    		rules:[
    			{
    				test:/.(png|jpg|gif)$/i,
    				use:[
    					{
    						loader:'url-loader',
    						options:{
    							limit:919200
    						}
    					}
    				]
    			},
    			{
    			  test: /.(js|jsx)$/,
    			  exclude: /(node_modules|bower_components)/,
    			  use: {
    				loader: 'babel-loader',
    				options: {
    				  presets: ['@babel/preset-env'],
    				  plugins: ['@babel/plugin-transform-react-jsx']
    				}
    			  }
    			},
    			{
    			  test: /.scss$/,
    			  use: [
    				  // fallback to style-loader in development
                    MiniCssExtractPlugin.loader,
                    "css-loader",
                    "sass-loader"
    			  ]
    			}
    		]
    	}
    };

            入口文件:

    const good='hello';
    
    import HelloReact from './HelloReact.jsx';
    
    import './test.scss';
    
    import img1 from './img/01.png';
    import img2 from './img/02.jpg';
    
    //ES6中的语法 异步处理
    async function sayHello(){
    	const result=await fetch(SERVICE_URL);   
    	console.log(result);
    }
    sayHello();

    总结

            本文介绍了defineplugin插件的使用,此插件在我们实际项目开发中运用的比较多,所以大家要花精力再研究研究哦。

  • 相关阅读:
    模拟退火
    斜率优化DP
    LuoguP2292 L语言
    百度云真是地址解析,满速下载
    Android开发之Activity横竖屏切换生命周期重建问题
    Android开发之延时执行
    Android开发之import org.apache.http
    Android Studio快捷键
    Android开发之应用程序的安装
    Activity去Title的几种方式
  • 原文地址:https://www.cnblogs.com/xuqw/p/11794596.html
Copyright © 2020-2023  润新知