微信小程序分包教程(微信小程序主包和分包的區別)

1. 需求詳解

很多時候,我們在項目中會大量使用到可視化圖表數據,在大量工作中,我們最熟悉的可視化數據一定是echarts這個工具,它非常好用并免費.聽起來很香,對!它真的很香。

但是當我們在特定場景中,比如小程序,那它就是一個非常頭痛的存在,為什么?在小程序中代碼上傳大小規定只有2M,而echarts在小程序中使用必須要在本地使用,無法使用連接的方式外部引用(微信官方規定項目有請求白名單)。

那么在項目中使用了echarts會非常占用我們有限的空間,那怎么辦呢,下面就告訴大家在小程序項目使用可視化工具的方法。

2. 使用echarts

首先去官網,相對于有小程序開發經驗的開發者來說, 步驟比較簡單。大體上的步驟:

1、下載官網例子。

2、把官網例子中的ec-canvas文件夾復制到項目目錄中。

3、在具體的頁面中像使用組件一樣引入ec-canvas。

4、在具體的頁面的js中進行初始化。

在下載完官網例子后,找到ec-canvas文件夾,里面有echarts.js,wx-canvas.js還有ec-canvas四件套。

然后把這個文件夾復制到自己項目的目錄下,放到utils下的,后來分包之后就放別的地方,這里就當放在utils下了。然后項目就大了700+KiB。

頁面中的使用 xxx.json文件中

{

“usingComponents”: { “ec-canvas”: “xxx/xxx/xxx/ec-canvas/ec-canvas” }

}

xxx.wxml 中使用組件來實例

<view class=”container-echarts margin-top-10″>

<ec-canvas class=”mycharts” id=”mychart-dom-bar” canvas-id=”mychart-bar” ec=”{{ ec }}”></ec-canvas>

</view>

js文件中

首先要引入echarts然后才能用下面的initChart方法,所以根據放置的ec-canvas的路徑引入echarts。

import * as echarts from ‘
xxx/xxx/xxx/ec-canvas/echarts’; // 根據放置的ec-canvas的路徑引入echarts

let chart = null // 用一個變量保存echarts的初始化

let options = { // 圖形配置,用過echarts的人都知道是嘛意思~ 這里給出官網線圖的基礎例子

xAxis: {

type: ‘category’,

data: [‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’]

},

yAxis: {

type: ‘value’

},

series: [{

data: [150, 230, 224, 218, 135, 147, 260],

type: ‘line’

}]

}

function initChart(canvas, width, height, dpr) { // 這里的canvas,width,height,dpr都可以不用管

const chart = echarts.init(canvas, null, {

width: width,

height: height,

devicePixelRatio: dpr // 像素

});

canvas.setChart(chart);

chart.setOption(options);

return chart;

}

Page({

data: {

ec: {

onInit: initChart // 這里不要加括號哦!

}

}

});

保存運行,到這一步理論上echarts已經可以顯示了,實際怎么樣還要自己調試的。

用一個chart變量保存echarts的初始化,官網上把options也寫在方法里,我給拿出來了。

那chart有什么用呢?因為大部分的數據都是異步獲取的,所以要動態渲染echarts。當拿到數據后,這個chart就用上了。

chart.setOption({

xAxis: {

data: newData.map(item => {

return item[0];

})

},

series: {

data: newData.map(item => {

return item[1];

})

}

})

我們定義的data數據

data: {

isUseNewCanvas: true // 這里改成true, 默認是false

}

在組件中使用數據 2種方式

<!– 新的:接口對齊了H5 –>

<canvas wx:if=”{{isUseNewCanvas}}” type=”2d” class=”ec-canvas” canvas-id=”{{ canvasId }}” bindinit=”init” bindtouchstart=”{{ ec.disableTouch ? ” : ‘touchStart’ }}” bindtouchmove=”{{ ec.disableTouch ? ” : ‘touchMove’ }}” bindtouchend=”{{ ec.disableTouch ? ” : ‘touchEnd’ }}”></canvas>

<!– 舊的 –>

<canvas wx:else class=”ec-canvas” canvas-id=”{{ canvasId }}” bindinit=”init” bindtouchstart=”{{ ec.disableTouch ? ” : ‘touchStart’ }}” bindtouchmove=”{{ ec.disableTouch ? ” : ‘touchMove’ }}” bindtouchend=”{{ ec.disableTouch ? ” : ‘touchEnd’ }}”></canvas>

3. 分包加載

好,上面是我們使用echarts的使用步驟,但是echarts文件大小有500KB+ 它嚴重影響了我們項目打包大小,所以這里必須使用分包加載

在app.json里面,有一個subpackages

{

“subPackages”: [

{

“root”: “xxx/xxx”,

“name”: “xxx”,

“independent”: false,

“pages”: [

“pages/xxx”,

“pages/xxx”,

“pages/xxx”

]

},

{

“root”: “baoziTask/”,

“name”: “baozi”,

“pages”: [

“pages/roubaozi/roubaozi”

]

}

],

}

這個分包在官網上講得挺簡單的,但是在我使用時是這樣理解的。

root是要分包的路徑,放到根目錄的。那么baoziTask下的所有文件都會被認為是一個包。那不在這個baoziTask路徑下的文件都會被打包進app這個主包內。

name就是分包的別名,預下載的時候會用,這個預下載就當在某個頁面的時候,想主動下載這個可能被使用的分包,以提高訪問速度。

比如當我進入某個頁面的時候,很大可能會點擊某處跳轉到某個分包里面,這個時候可以預下載這個分包,而不用跳轉的時候才下載這個分包。

independent是分包是否獨立,但是我沒用過就沒有直觀的感覺。說是可以單獨運行,不依賴app這個主包。這個需要配置,不是代碼的下載,配置preloadRule,具體的話得看官網和自己嘗試了。

聲明:本文由網站用戶香香發表,超夢電商平臺僅提供信息存儲服務,版權歸原作者所有。若發現本站文章存在版權問題,如發現文章、圖片等侵權行為,請聯系我們刪除。

(0)
上一篇 2023年5月14日 20:12:40
下一篇 2023年5月14日 20:22:46

相關推薦

發表回復

您的電子郵箱地址不會被公開。 必填項已用*標注

主站蜘蛛池模板: 久久精品国产免费观看 | 久久国产精品99精品国产| 欧美日韩国产欧美| 免费不卡在线观看av| 美女网站色在线观看| 国产乱码精品一区二区三 | 扒开双腿猛进入免费观看美女 | 中文字幕在线第二页| 日本牲交大片无遮挡| 久香草视频在线观看免费 | 国产一级性生活片| 91抖音在线观看| 国产白白视频在线观看2| 4408私人影院| 国内精品久久久久伊人av| aaa毛片免费观看| 天天躁日日躁狠狠躁av中文| 一级特级黄色片| 成人精品视频一区二区三区| 久久中文字幕网站篠田优| 日韩av片无码一区二区不卡电影| 亚洲AV无码国产精品麻豆天美| 欧美大片va欧美在线播放| 亚洲欧美国产精品久久久| 波多野结衣一道本| 亚洲蜜芽在线精品一区| 男生插入女生下面视频| 全彩里番acg里番| 精品午夜一区二区三区在线观看| 嗯~啊~哦~别~别停~啊老师| 色哟哟网站在线观看| 国产一区二区不卡| 观看国产色欲色欲色欲www| 国产伦理不卡伦理剧| 试看120秒做受小视频免费| 国产产在线精品亚洲AAVV| 韩国免费特一级毛片| 国产又粗又猛又黄又爽无遮挡 | 成人免费ā片在线观看| 中国speakingathome宾馆学生| 成年免费视频黄网站在线观看|