全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Webpack实现按需打包Lodash的几种方法详解

前言

在数据操作时,Lodash 就是我的弹药库,不管遇到多复杂的数据结构都能用一些函数轻松拆解。

ES6 中也新增了诸多新的对象函数,一些简单的项目中 ES6 就足够使用了,但还是会有例外的情况引用了少数的 Lodash 函数。一个完整的 Lodash 库,即使是压缩后,现最新版本也有 71k 的体积。不能为了吃一口饭而买下一个饭店啊。

针对这个问题,其实已经有很多可选方案了。

函数模块

Lodash 中的每个函数在 NPM 都有一个单独的发布模块。NPM: results for ‘lodash'

假如你只需要使用_.isEqual,那么你只需要安装lodash.isequal模块,然后按以下方式引用。

var isEqual = require('lodash.isequal')
// or ES6
import isEqual from 'lodash.isequal'
isEqual([1, 2, 3], [1, 2, 3]) // true

全路径引用

在你完整安装 Lodash 后,可以按lodash/函数名的格式单独引入需要的函数模块。

var difference = require('lodash/difference')
// or ES6
import difference from 'lodash/difference'
difference([1, 2], [1, 3]) // [2]

使用插件优化

在简单场景下,以上两种方式足以解决问题。

而遇到复杂的数据对象时,我们不得不在一个文件中引入多个 Lodash 函数,这样就需要在文件中写多个require或import相关函数。

import remove from 'lodash/remove'
import uniq from 'lodash/uniq'
import invokeMap from 'lodash/invokeMap'
import sortBy from 'lodash/sortBy'
// more...

正写到关键处却因为引入一个函数要拉到文件头部去定义引用而打乱了思路,很不爽!

于是我机智的到 Github 去搜索了webpack和lodash两个关键词的组合,排在首位的 lodash-webpack-plugin 就是为了解决这个问题而生。

使用时需要以下模块,其实除了前两个剩下的一般都已安装了:

$ npm i -S lodash-webpack-plugin babel-plugin-lodash babel-core babel-loader babel-preset-es2015 webpack

配置:

webpack.config.js
var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
var webpack = require('webpack');
module.exports = {
 module: {
 loaders: [{
 loader: 'babel',
 test: /\.js$/,
 exclude: /node_modules/,
 query: {
 plugins: ['transform-runtime', 'lodash'],
 presets: ['es2015']
 }
 }]
 },
 plugins: [
 new LodashModuleReplacementPlugin,
 new webpack.optimize.OccurrenceOrderPlugin,
 new webpack.optimize.UglifyJsPlugin
 ]
}

其中babel-plugin-lodash的配置,也就是plugins: ['lodash'] ,并不是一定要在loaders中,也可以单独定义babel。

webpack.config.js
var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
var webpack = require('webpack');
module.exports = {
 module: {
 loaders: [{
 loader: 'babel',
 test: /\.js$/,
 exclude: /node_modules/
 }]
 },
 babel: {
 presets: ['es2015'],
 plugins: ['transform-runtime', 'lodash']
 },
 plugins: [
 new LodashModuleReplacementPlugin,
 new webpack.optimize.OccurrenceOrderPlugin,
 new webpack.optimize.UglifyJsPlugin
 ]
}

又或者是.babelrc文件中。

以上工作完成了,在每个你需要使用 lodash 函数的文件中只需要引用一次 lodash,即可调用任意函数而不会造成完全打包。

import _ from 'lodash'
_.add(1, 2) // 打包时只会引入这一个函数模块

注意:必须要使用 ES2015 的模块引用方式才有效。

以上即是我目前所知道的几种方式,如果哪位朋友有更好的方式(比如只需要全局引入一次),请一定分享与我!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# webpack  # lodash  # 打包  # 打包命令  # webpack如何打包一个按需引入的vue组件库  # Webpack按需加载打包chunk命名的方法  # Vue.js中用webpack合并打包多个组件并实现按需加载  # Webpack中实现条件组件的按需打包的多种方法  # 关键词  # 只需要  # 多个  # 这一  # 都有  # 也有  # 会有  # 有很多  # 两种  # 这个问题  # 数据结构  # 只会  # 与我  # 或者是  # 几种  # 即使是  # 解决问题  # 可选  # 写到  # 这篇文章 


相关文章: 制作销售网站教学视频,销售网站有哪些?  如何选择靠谱的建站公司加盟品牌?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  内部网站制作流程,如何建立公司内部网站?  建站之星导航菜单设置与功能模块配置全攻略  如何快速生成可下载的建站源码工具?  深圳网站制作平台,深圳市做网站好的公司有哪些?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  网站制作报价单模板图片,小松挖机官方网站报价?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何在VPS电脑上快速搭建网站?  如何在腾讯云服务器上快速搭建个人网站?  建站之星安装步骤有哪些常见问题?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何有效防御Web建站篡改攻击?  建站之星安装后如何配置SEO及设计样式?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  已有域名如何免费搭建网站?  如何在阿里云ECS服务器部署织梦CMS网站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  建站之星如何开启自定义404页面避免用户流失?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何在Windows环境下新建FTP站点并设置权限?  如何通过云梦建站系统实现SEO快速优化?  建站VPS能否同时实现高效与安全翻墙?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何快速启动建站代理加盟业务?  如何在IIS7中新建站点?详细步骤解析  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  高防服务器如何保障网站安全无虞?  如何通过IIS搭建网站并配置访问权限?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  Android使用GridView实现日历的简单功能  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何高效配置香港服务器实现快速建站?  如何在云主机上快速搭建多站点网站?  XML的“混合内容”是什么 怎么用DTD或XSD定义  香港服务器部署网站为何提示未备案?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何通过宝塔面板实现本地网站访问?  制作网站的公司有哪些,做一个公司网站要多少钱?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在宝塔面板中创建新站点?  建站主机CVM配置优化、SEO策略与性能提升指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。