博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack--plugins
阅读量:6246 次
发布时间:2019-06-22

本文共 3124 字,大约阅读时间需要 10 分钟。

Webpack中插件介绍的不多--------用到插件的时候再补插件功能;

1 Webpack的功能(bundles)

------通过plugins来实现;

------调用plugins之前需要通过npm安装;
调用plugins:----在webpack.config.js中用require()--------除了亲儿子(内置插件)和{安装了后}不需要require

webpack-load-plugins  --------类似于gulp的gulp-load-plugins(卧槽,名字都差不多)--------调用webpack-load-plugins后不需要require(plugins),在需要别的插件的时候webpack内部自动require()    var webpack = require("webpack");    //安装webpack-load-plugins后,就不用require()下边的插件了    var ComponentPlugin = require("component-webpack-plugin");    module.exports = {        plugins: [        //此乃webpack亲儿子,内建plugins不需要require            new webpack.ResolverPlugin([                new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])            ], ["normal", "loader"]),            //别人家的孩子            new ComponentPlugin()        ]    };

2 使用webpack.ProvidePlugin加载不支持AMD或者CommonJS等插件

把一个全局变量插入到所有的代码中,在config.js里面配置

plugins: [    new HtmlwebpackPlugin({      title: 'Hello World app'    }),    //provide $, jQuery and window.jQuery to every script    new webpack.ProvidePlugin({      $: "jquery",      jQuery: "jquery",      "window.jQuery": "jquery"    })  ]

然后,

在入口文件entry.js中//import $ from 'jquery';------这个不需要了 因为$, jQuery, window.jQuery都被直接注入,可以直接使用了愉快的用$()

3 使用内建CommonsChunkPlugin插件分离app.js和第三方库

如果不分离第三方库的话,可能会造成build的文件非常大,减慢加载速度;

首先----在entry入口文件中将第三方库分离

entry: {    app: path.resolve(APP_PATH, 'index.js'),    //添加要打包在vendors里面的库    vendors: ['jquery', 'vue']  }

然后,添加CommonsChunkPlugin配置

plugins: [    //这个使用uglifyJs压缩你的js代码    new webpack.optimize.UglifyJsPlugin({minimize: true}),    //把入口文件里面的数组打包成verdors.js    new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors.js')  ]  打包后,会将第三方库分离成单独的js文件;

4 多入口页面方案

---------当页面不再是SPA(single page app)

模拟需求:
有两个页面,一个是app.html页面,需要引用vendor.js和app.js两个文件;还有一个mobile.html页面,需要引用vendor.js和mobile.js两个文件;

第一步:自定义模板index.html和mobile.html自动引用js文件:

index.html    //注意:这里的htmlWebpackPlugin对象标识符是固定的,必须是这个,必须这样写,必须!    <%= htmlWebpackPlugin.options.title %>        

Welcome to webpack

mobile.html //注意:这里的htmlWebpackPlugin对象标识符是固定的,必须是这个,必须这样写,必须! <%= htmlWebpackPlugin.options.title %>

Welcome to mobile page

第二步:在webpack.config.js中:

entry: {    //三个入口文件,app, mobile和 vendors    app: path.resolve(APP_PATH, 'index.js'),    mobile: path.resolve(APP_PATH, 'mobile.js'),    vendors: ['jquery', 'moment']  },  output: {    path: BUILD_PATH,    //注意用一个数组[name]来代替固定名称,它会根据entry的入口文件名称生成多个js文件,这里就是(app.js,mobile.js和vendors.js)    filename: '[name].js'  }

第三步:生成页面

//Template的文件夹路径var TEM_PATH = path.resolve(ROOT_PATH, 'templates');...plugins: [  ...  //创建了两个HtmlWebpackPlugin的实例,生成两个页面  //注意:这里的HtmlwebpackPlugin构造器名字是你require插件时自定义的,自定义的!  new HtmlwebpackPlugin({    title: 'Hello World app',    template: path.resolve(TEM_PATH, 'index.html'),    filename: 'index.html',//chunks这个参数告诉插件要引用entry里面的哪几个入口chunks: ['app', 'vendors'],    //要把script插入到标签里    inject: 'body'  }),  new HtmlwebpackPlugin({    title: 'Hello Mobile app',    template: path.resolve(TEM_PATH, 'mobile.html'),    filename: 'mobile.html',    chunks: ['mobile', 'vendors'],    inject: 'body'  })  ...]

5 献上师傅的文章

转载地址:http://tvlia.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
大数据教程(1.8):Linux之SSH免密登录配置
查看>>
ftp passive mode
查看>>
安装问题Error: dl failure on line 864
查看>>
oracle表分区详解(按天、按月、按年等)
查看>>
yum update upgrade区别
查看>>
angularjs select 三级联动
查看>>
BufferedReader指定编码及乱码问题解决
查看>>
Zabbix3.0监控Centos 6配置
查看>>
解决MAC下svn run cleanup interrupted错误
查看>>
谈谈Android中的Divider
查看>>
Python基础笔记
查看>>
对Vsftpd的一些总结
查看>>
搭建高可用mongodb集群(二)—— 副本集
查看>>
001-Python运算符
查看>>
saltstack使用之二(完成部署编译nginx以及部分cp模块的使用)
查看>>
Test20160120
查看>>
Android WindowManager$BadTokenException异常
查看>>
ELK学习3 启动es常见错误或问题
查看>>
Linux快捷键和帮助
查看>>