国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序skyline渲染引擎嘗鮮

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序skyline渲染引擎嘗鮮。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

概述
官方描述

當(dāng)小程序基于 WebView 環(huán)境下時(shí),WebView 的 JS 邏輯、DOM 樹創(chuàng)建、CSS 解析、樣式計(jì)算、Layout、Paint (Composite) 都發(fā)生在同一線程,在 WebView 上執(zhí)行過多的 JS 邏輯可能阻塞渲染,導(dǎo)致界面卡頓。以此為前提,小程序同時(shí)考慮了性能與安全,采用了目前稱為「雙線程模型」的架構(gòu)。

在 Skyline 環(huán)境下,我們嘗試改變這一情況:Skyline 創(chuàng)建了一條渲染線程來負(fù)責(zé) Layout, Composite 和 Paint 等渲染任務(wù),并在 AppService 中劃出一個(gè)獨(dú)立的上下文,來運(yùn)行之前 WebView 承擔(dān)的 JS 邏輯、DOM 樹創(chuàng)建等邏輯。這種新的架構(gòu)相比原有的 WebView 架構(gòu),有以下特點(diǎn):

  • 界面更不容易被邏輯阻塞,進(jìn)一步減少卡頓
  • 無需為每個(gè)頁面新建一個(gè) JS 引擎實(shí)例(WebView),減少了內(nèi)存、時(shí)間開銷
  • 框架可以在頁面之間共享更多的資源,進(jìn)一步減少運(yùn)行時(shí)內(nèi)存、時(shí)間開銷
  • 框架的代碼之間無需再通過 JSBridge 進(jìn)行數(shù)據(jù)交換,減少了大量通信時(shí)間開銷
思考

新的skyline渲染引擎能提升性能,減少卡頓,接下來編寫長列表代碼來測試新引擎的實(shí)際性能表現(xiàn)如何。

一、環(huán)境準(zhǔn)備

在hbuderx中創(chuàng)建項(xiàng)目,選擇默認(rèn)模板,生成基礎(chǔ)代碼。
文件結(jié)構(gòu)如圖。

skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue

運(yùn)行項(xiàng)目后查看詳情-本地設(shè)置,確保基礎(chǔ)庫版本在2.30.4以上

skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue
manifest.json 文件配置

在mp-weixin 對象內(nèi)增加如下lazyCodeLoading、rendererOptions 的配置信息,完整配置如下。

{
	"mp-weixin" : {
        "appid" : "",
        "setting" : {
            "urlCheck" : false
        },
        "usingComponents" : true,
        "lazyCodeLoading": "requiredComponents",
        "rendererOptions": { 
            "skyline": { 
                "defaultDisplayBlock": true 
            } 
        }
    }
}

pages.json 文件配置

在需要Skyline渲染的頁面增加renderer、navigationStyle、componentFramework 三個(gè)配置項(xiàng),完整配置如下

{
    "pages": [
        {
            "path": "pages/index/index",
            "style": {
                "navigationBarTitleText": "uni-app",
                "renderer": "skyline",
                "navigationStyle": "custom",
                "componentFramework": "glass-easel"
            }
        }
    ]
}

配置完成重新啟動(dòng)項(xiàng)目會提示切換Skyline調(diào)試模式,直接切換。

skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue
二、長列表實(shí)現(xiàn)

html

<template>
	<view class="navBar"></view>
	<view class="content">
		<view class="title"> 
			<text>姓名</text>
			<text>學(xué)校</text>
			<text>班級</text>
			<text>語文</text>
			<text>數(shù)學(xué)</text>
			<text>英語</text>
		</view>

		<scroll-view type="list" :scroll-y="true" class="list">
			<view class="item" v-for="item in list" :key="item.key1">
				<text>{{ item.key1 }}</text>
				<text>{{ item.key2 }}</text>
				<text>{{ item.key3 }}</text>
				<text>{{ item.key4 }}</text>
				<text>{{ item.key5 }}</text>
				<text>{{ item.key6 }}</text>
				<text>{{ item.key7 }}</text>
			</view>

			<view class="more" @tap="page++">查看更多~</view>
		</scroll-view>
	</view>
</template>

javascript

export default {
    data () {
        return {
            showPage: 1,
            list: [],
            page: 1,
            size: 200
        }
    },
    onLoad() {
        this.getList()
    },
    methods: {
        getList () {
        let len = this.list.length
            for (let i=1; i <= this.size; i++) {
                this.list.push({
                    key1: len + i,
                    key2: '張三',
                    key3: '1中',
                    key4: '3班',
                    key5: '100分',
                    key6: '90分',
                    key7: '87分',
                })
            }
        }
    },
    watch: {
        'page' () {
            console.log('頁碼改變了---', value);
            this.getList()
        }
    }
}

css

.navBar {
    height: var(--status-bar-height);
    background-color: red;
    position: fixed;
    top: 0;
    z-index: 9999;
}
.content {
    font-size: 14px;
}
.title {
    height: 40px;
    width: 100%;
    display: flex;
    justify-content: space-around;
    background: #4381ff;
}
.title text {
    width: 100rpx;
    color: #fff;
    line-height: 40px;
    text-align: center;
}

.list {
    height: calc(100vh - var(--status-bar-height) - 40px);
}

.item {
    height: 40px;
    width: 100%;
    display: flex;
    justify-content: space-around;
    border-bottom: solid 1px rgba(0, 0, 0, 0.068);
}
.item text {
    width: 100rpx;
    line-height: 40px;
    text-align: center;
}

.more {
    height: 40px;
    width: 100%;
    text-align: center;
    line-height: 40px;
    color: #4381ff;
}

界面展示如圖,點(diǎn)擊查看更多一次,多展示一頁的數(shù)據(jù)。

skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue
三、性能對比測試
1. 測試說明

復(fù)制長列表頁面,把pages.json 內(nèi)兩個(gè)頁面的配置改為普通渲染(webview)。這樣子就有了所有條件都一致、渲染方式不同的兩個(gè)頁面,通過查看更多按鈕增加列表渲染數(shù)量,在不卡頓的前提下數(shù)據(jù)渲染的條數(shù)越多,性能越好,反之越差。

文件結(jié)構(gòu)如圖
skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue

pages.json 配置如下

{
	"path": "pages/index/skyline",
    "style": {
        "navigationBarTitleText": "skyline",
        "renderer": "skyline",
        "navigationStyle": "custom",
        "componentFramework": "glass-easel"
    }
},
{
	"path": "pages/index/webview",
    "style": {
        "navigationBarTitleText": "webview",
        "navigationStyle": "custom"
    }
}
2. webview渲染
skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue

演示視頻地址: https://markdownimg-1313808923.cos.ap-chengdu.myqcloud.com/skyline%2F888.mp4

普通的渲染模式(webview)在渲染第2000條數(shù)據(jù)時(shí),界面卡死,操作無反應(yīng)。

3. skyline渲染
skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue

演示視頻地址: https://markdownimg-1313808923.cos.ap-chengdu.myqcloud.com/skyline%2F999.mp4

skyline渲染模式在渲染第7000條數(shù)據(jù)時(shí),界面卡死,操作無反應(yīng)

4. 打包uni-小程序

通過hbuderX 發(fā)行為小程序包,在iphone5 上運(yùn)行測試:

  • 未使用skyline配置: 頁面渲染10000條數(shù)據(jù)是出現(xiàn)明顯卡頓,點(diǎn)擊按鈕無反應(yīng)

  • 使用skyline配置: 頁面渲染8500條數(shù)據(jù)是出現(xiàn)明顯卡頓,點(diǎn)擊按鈕無反應(yīng)

四、總結(jié)
1. 性能

在性能的表現(xiàn)上官方給出的首屏渲染速度數(shù)據(jù)如圖

skyline 渲染模式在 2.29.2 及以上基礎(chǔ)庫支持。 當(dāng)前小程序未設(shè)置線上最低基礎(chǔ)庫,微信小程序,uni-app,vue

我們用長列表的渲染數(shù)據(jù)量對比的結(jié)果 2000( webview ) / 7000(skyline) 和官方標(biāo)定的性能對比圖類似,使用skyline引擎渲染的界面確實(shí)速度有質(zhì)的飛躍(至少在長列表渲染場景中)。文章來源地址http://www.zghlxwxcb.cn/news/detail-760805.html

2. 遇到的問題
  • 使用skyline渲染模式無法實(shí)現(xiàn)整頁滾動(dòng),必須借助scoroll-view 組件,并指定"type: list"
  • 使用skyline渲染模式必須使用自定義導(dǎo)航欄
  • 開發(fā)工具在使用skyline模式時(shí)不會熱更新
  • 使用hbuderx打包uni-小程序時(shí)skyline引擎是不生效的

到了這里,關(guān)于微信小程序skyline渲染引擎嘗鮮的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序Skyline模式自定義tab組件膠囊與原生膠囊平齊,安卓和ios均自適應(yīng)

    微信小程序Skyline模式自定義tab組件膠囊與原生膠囊平齊,安卓和ios均自適應(yīng)

    進(jìn)入下面小程序可以體驗(yàn)效果 : ? 至于原理的話,解釋起來畢竟麻煩,各位可以看源碼自己分析。其實(shí)很簡單,就算計(jì)算布局。很多網(wǎng)上公布的布局,都不能正常自適應(yīng)。在下這個(gè)是完美可以的?

    2024年03月21日
    瀏覽(29)
  • Taro 小程序開發(fā)大型實(shí)戰(zhàn)(七):嘗鮮微信小程序云(下篇)

    歡迎繼續(xù)閱讀《Taro 小程序開發(fā)大型實(shí)戰(zhàn)》系列,前情回顧: 熟悉的 React,熟悉的 Hooks:我們用 React 和 Hooks 實(shí)現(xiàn)了一個(gè)非常簡單的添加帖子的原型 多頁面跳轉(zhuǎn)和 Taro UI 組件庫:我們用 Taro 自帶的路由功能實(shí)現(xiàn)了多頁面跳轉(zhuǎn),并用 Taro UI 組件庫升級了應(yīng)用界面 實(shí)現(xiàn)微信和支付

    2024年03月10日
    瀏覽(27)
  • 微信小程序基礎(chǔ)面試題【29道】

    wxml 是微信小程序的一種頁面渲染語言,類似于 HTML,但也有一些不同之處。 以下是 wxml 與標(biāo)準(zhǔn)的 HTML 的異同: 相同點(diǎn): 兩者都是頁面渲染語言,用于描述網(wǎng)頁的結(jié)構(gòu)和內(nèi)容。 兩者都使用標(biāo)簽來組織內(nèi)容。 兩者都支持使用 CSS 樣式表來控制頁面的外觀和布局。 兩者都支持事

    2024年02月16日
    瀏覽(18)
  • 微信小程序渲染出錯(cuò)

    微信小程序渲染出錯(cuò)

    第一個(gè)錯(cuò)誤渲染出錯(cuò): [渲染層錯(cuò)誤] Uncaught (in promise) [object DOMException](env: Windows,mp,1.06.2306020; lib: 2.19.2) 第二錯(cuò)誤method值為空TypeError: Cannot read property \\\'method\\\' of undefined ? ? at Vi.playdate (play.js? [sm]:51) ? ? at Object.i.safeCallback (WASubContext.js?t=wechats=1687920555309v=2.19.2:2) ? ? at WASubContex

    2024年02月10日
    瀏覽(14)
  • 微信小程序渲染實(shí)時(shí)時(shí)間

    微信小程序渲染實(shí)時(shí)時(shí)間

    總結(jié)一下自己怎么用JS初級的內(nèi)容來寫一個(gè)頁面實(shí)時(shí)渲染時(shí)間的方法。 util.js文件代碼如下: 例如,我要在index.js中引用util.js中的模塊formatTime。那么,首先在index.js中定義變量util,使用require函數(shù)加載util.js文件。這里必須使用相對路徑。 調(diào)用函數(shù)時(shí),傳入new Date()參數(shù),返回值

    2024年02月11日
    瀏覽(20)
  • 微信小程序------WXML模板語法之條件渲染和列表渲染

    微信小程序------WXML模板語法之條件渲染和列表渲染

    目錄 前言 一、條件渲染 1.wx:if 2. 結(jié)合 使用 wx:if 3. hidden 4. wx:if 與 hidden 的對比 二、列表渲染 1. wx:for 2. 手動(dòng)指定索引和當(dāng)前項(xiàng)的變量名* 3. wx:key 的使用 ? ? ? ? 上一期我們講解wxml模版語法中的數(shù)據(jù)綁定和事件綁定(上一期鏈接:微信小程序-----WXML模板語法之?dāng)?shù)據(jù)綁定與事件

    2024年01月16日
    瀏覽(33)
  • 微信小程序之?dāng)?shù)據(jù)的同步渲染

    結(jié)論: 微信小程序通過setData方法實(shí)現(xiàn)數(shù)據(jù)的同步渲染,直接修改data無法實(shí)現(xiàn)同步渲染。 小程序分為邏輯層和渲染層,而每次邏輯層改變了,要借用Native運(yùn)行。小程序的渲染層和邏輯層由兩個(gè)線程管理:渲染層的界面使用了 WebView 進(jìn)行渲染;邏輯層采用 JsCore 線程運(yùn)行 JS 腳本

    2024年02月11日
    瀏覽(23)
  • 微信小程序iconfont真機(jī)渲染失敗

    微信小程序iconfont真機(jī)渲染失敗

    解決方法: 1.將下載的.woff文件在transfonter轉(zhuǎn)為base64, 2.打開網(wǎng)站,導(dǎo)入文件,開啟base64按鈕,下載轉(zhuǎn)換后的文件 3. 在下載解壓后的文件夾中找到stylesheet.css,并復(fù)制其中的base64 4. 修改index.wxss文件,將url中的本地地址替換為base64

    2024年02月13日
    瀏覽(27)
  • 【微信小程序】列表渲染wx:for

    【微信小程序】列表渲染wx:for

    ??今日學(xué)習(xí)目標(biāo):第十二期——列表渲染wx:for ??創(chuàng)作者:顏顏yan_ ?個(gè)人主頁:顏顏yan_的個(gè)人主頁 ?預(yù)計(jì)時(shí)間:20分鐘 ??專欄系列:我的第一個(gè)微信小程序 哈嘍大家好,本期是微信小程序?qū)诘谑冢酒谖覀儗W(xué)習(xí)列表渲染wx:for。 注意:每期內(nèi)容是連載呢,建議大家

    2024年02月08日
    瀏覽(18)
  • 微信小程序基礎(chǔ)使用-請求數(shù)據(jù)并渲染

    微信小程序基礎(chǔ)使用-請求數(shù)據(jù)并渲染

    小程序模板語法-數(shù)據(jù)綁定 在js中定義數(shù)據(jù) 小程序的data是一個(gè)對象,不同于vue的data是一個(gè)函數(shù) 在模塊中獲取使用數(shù)據(jù) 小程序中使用 {{}} 實(shí)現(xiàn)數(shù)據(jù)與模板的綁定 內(nèi)容綁定: view{{ 屬性名 }}/view 屬性綁定: input value=\\\"{{屬性名}}\\\" / {{}} 內(nèi)寫的是表達(dá)式 簡易雙向綁定 小程序中提供了

    2024年02月08日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包