【工程化】taro小程序怎樣引入loadsh

loadsh在小程序裏的引入比較麻煩。緣由以下:node

一、沒法按需引入。因爲 tarowebpack 配置不會對 es6 moduletree shaking, 因此會總體引入loash,直接撐爆verndor.js webpack

二、環境問題,小程序環境下一些全局變量不存在,須要從新指定es6

解決方案

1、使用lodash-webpack-plugin按需加載

在config/index.js配置以下:web

webpackChain(chain) {npm

// chain.plugin('analyzer')小程序

// .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [])markdown

//lodash 瘦身配置oop

// 奇怪行爲,須要設置這個www.npmjs.com/package/lod…ui

// 也能夠移除一些,用來瘦身,目前發現shorthands,coercions,paths是必須的,不然會很詭異spa

chain.plugin('lodash-webpack-plugin')

.use(require('lodash-webpack-plugin'), [

{

shorthands: true,

cloning: true,

caching: true,

collections: true,

exotics: true,

guards: true,

memoizing: true,

coercions: true,

flattening: true,

paths: true,

}])

// 將 lodash 單獨拆分出來 (防止vendors.js過大)

chain.merge({

optimization: {

splitChunks: {

cacheGroups: {

lodash: {

name: 'lodash',

priority: 1000,

test(module) {

return /node_modules[\\/]lodash/.test(module.context)

},

},

},

},

},

})

},

commonChunks(commonChunks) { // 添加 lodash 公共文件

commonChunks.push('lodash')

return commonChunks

},

2、提早聲明全局變量

一、提早聲明全局變量

loadsh-prepare.js

// 使用loadsh必須先聲明

global.Object = Object

global.Array = Array

global.Buffer = Buffer

global.DataView = DataView

global.Date = Date

global.Error = Error

global.Float32Array = Float32Array

global.Float64Array = Float64Array

global.Function = Function

global.Int8Array = Int8Array

global.Int16Array = Int16Array

global.Int32Array = Int32Array

global.Map = Map

global.Math = Math

global.Promise = Promise

global.RegExp = RegExp

global.Set = Set

global.String = String

global.Symbol = Symbol

global.TypeError = TypeError

global.Uint8Array = Uint8Array

global.Uint8ClampedArray = Uint8ClampedArray

global.Uint16Array = Uint16Array

global.Uint32Array = Uint32Array

global.WeakMap = WeakMap

global.clearTimeout = clearTimeout

global.isFinite = isFinite

global.parseInt = parseInt

global.setTimeout = setTimeout

export default {}

二、引入全局變量

loadsh.ts

import {} from './loadsh-prepare'

import _ from 'lodash'

export default _

3、注意

雖然loadsh很方便,咱們也最大程度作了瘦身。可是打包後依然很大,若是不是非用不可,建議不用

相關文章
相關標籤/搜索