zoukankan      html  css  js  c++  java
  • webpack学习笔记(四)

    1 webpack的垫片

    举个例子,在main文件中引入jquery和doash两个库:

    import $ from 'jquery';
    import _ from 'lodash';
    import { ui } from './jquery.ui.js';
    ui();

    对应的jquery.ui.js比如说是一个第三方库,很有可能是在 node_module中:

    export function ui(){
      $('body').css('background', _.join(['green'],''));
    }

    由于webpack打包是基于模块的,每个模块之间也是相互独立的,所以在main中引入的jquery 在 jquery.ui.js中无法使用的,故需要在webpack的配置文件中做一下操作:

    import webpack from 'webpack'
    {
      plugins:[
        new webpack.ProvidePlugin({
          $:'jquery',
          _:'lodash'
        })
      ]
    }

    2 this指代window

    因为默认的this是指向当前模块的,所以为了让this指向window,需要安装: npm install imports-loader --save-dev 

    webpack最初对js只有一个loader的时候:

    {
      module:{
        rules:[
          {
            test:/.js$/,
            exclude:/node_modules/,
            loader:'babel-loader'
          }
        ]
      }
    }

    而有多个loader的时候,使用下面方式:

    {
      module:{
        rules:[
          {
            test:/.js$/,
            exclude:/node_modules/,
            use:[{
              loader:'babel-loader'
            },{
              loader:'imports-loader?this=>window'
            }
            ] 
          }
        ]
      }
    }

    这样对于js文件,先使用imports-loader把this指向了window 再使用babel-loader 编译js文件,莫要忘记babelrc配置文件。

    3 环境变量

    已知webpack的配置文件目录如下:

    -build
      -webpack.common.js
      -webpack.dev.js
      -webpack.prod.js

    分别在dev和prod中使用了webpack-merge对配置文件进行的合并,在这里我们使用命令行中传入环境变量的形式,则dev和prod中只导出自己的配置项,不再引入merge:

    此时comm.js中引入merge,如下所示:

    const merge = require('webpack-merge');
    const devConfig = require('./webpack.dev.js');
    const prodConfig = require('./webpack.prod.js');
    
    const commonConfig = {
      entry:{},
      output:{},
      plugin:{},
      module:{}
      ...
    }
    
    module.exports = (env) => {
      if(env && env.production){
        return merge( commonConfig ,prodConfig);
      }else{
        return merge( commonConfig ,devConfig);
      }
    }

    对应的命令行配置中,config.json

    {
      "scripts":{
        "dev":"webpack-dev-server --config ./build/webpack.common.js",
        "build":"webpack --env.profuction --config ./build/webpack.common.js",//均运行common文件,并且定义了环境变量
      }
    }
  • 相关阅读:
    结对编程
    四则运算
    认清自我,创造未来!!!
    浅谈GIT
    典型用户及用例故事
    结对编程 四则运算
    四则运算
    《未来的程序员》
    java项目命名规范
    四则运算测试
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/10662045.html
Copyright © 2011-2022 走看看