最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uni-app中renderjs使用的方式淺析

 更新時間:2022年09月23日 09:18:48   作者:study夏羽  
renderjs是一個運(yùn)行在視圖層的js,它只支持app-vue和h5,下面這篇文章主要給大家介紹了關(guān)于uni-app中renderjs使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

對于UNI APP端的開發(fā)而言,由于上并沒有document,不能進(jìn)行相關(guān)的DOM操作,同時有關(guān)DOM渲染的第三方庫(echart、openlayer等)也無法有效的使用,因此官方推出了renderjs方案,來解決上述問題。

renderjs是一個運(yùn)行在視圖層的js

renderjs的主要作用有2個:

大幅降低邏輯層和視圖層的通訊損耗,提供高性能視圖交互能力

在視圖層操作dom,運(yùn)行for web的js庫

renderjs和service層的通信

具體分為三部分:

1.在template中通過用戶手動操作觸發(fā)事件

2.在service層中調(diào)用方法

3.在renderjs中調(diào)用方法

從renderjs到service層:通過this.$ownerInstance.callMethod()方法可以調(diào)用service中的方法,第一個參數(shù)是方法名,第二個參數(shù)是傳過去的參數(shù)

使用方式

設(shè)置 script 節(jié)點(diǎn)的 lang 為 renderjs

script的module的名稱可以隨便取,module=(值任意,相當(dāng)于命名空間,之后會根據(jù)這個名字調(diào)用其中的方法),但是change:參數(shù)名稱必須和module保持一致,雖然不會阻斷renderjs的運(yùn)行,但是會報錯,也會導(dǎo)致無法捕獲數(shù)據(jù)的變化

<script module="test" lang="renderjs">
	export default {
		mounted() {
			// ...
		},
		methods: {
			// ...
		}
	}
</script>
<template>
	<view>
		<!--  prop是個名字,可以隨意改,注意:change:[name]這兩個名字需要相同就行了  -->
		<!-- 從service層到renderjs:首先在template中綁定一個service中定義的值,然后在同樣的位置增加:change:(屬性名)=(renderjs的module名.觸發(fā)的方法)來實(shí)現(xiàn)通信。
簡單來說就是service負(fù)責(zé)數(shù)據(jù)的更改,通過template監(jiān)聽數(shù)據(jù)的變化來通知renderjs 
			this.$ownerInstance.callMethod方法必須通過點(diǎn)擊事件執(zhí)行-->

	<!-- msg是要向renderjs發(fā)送的數(shù)據(jù),testRenderjs 為renderjs模塊名稱,onChange是renderjs中的監(jiān)聽方法 -->
		<view :prop="msg" :change:prop="testRenderjs.onChange" id="renderjs-view">{{msg}}</view>

		<button @tap="changeMsgFn">點(diǎn)擊修改options</button>

		<button @tap="testRenderjs.emitData">直接調(diào)用renderjs中的emitData方法</button>
	</view>
</template>
<script>
	// 原先的script,這里被稱為service層 
	export default {
		data() {
			return {
				// 這里存放準(zhǔn)備傳遞給renderjs的數(shù)據(jù)  
				msg: "我是service層原來的msg"
			}
		},
		methods: {
			// 觸發(fā)service層 出入renderjs數(shù)據(jù)改變
			changeMsgFn() {
				//  修改msg 觸發(fā)change
				this.msg = "msg的值變了"
			},
			// 接收renderjs發(fā)回的數(shù)據(jù)
			acceptDataFromRenderjs(data) {
				console.log('從renderjs中接收到的數(shù)據(jù)', data)
				this.msg = data.content
			}
		}
	}
</script>
<!--  testRenderjs 為renderjs模塊名稱,lang固定寫法 -->
<script module="testRenderjs" lang="renderjs">
	export default {
		data() {
			return {
				content:"我是來自renderjs的數(shù)據(jù)"
			}
		},
		created() {
			console.log('renderjs初始化完畢')
		},
		mounted() {
			const view = document.getElementById('renderjs-view')
			const button = document.createElement('button')
			button.innerText = '一個按鈕'
			view.appendChild(button)
		},
		methods: {
			// 接收邏輯層service層發(fā)送的數(shù)據(jù)
			onChange(newValue, oldValue, ownerInstance, instance) {
				console.log('service層中的options發(fā)生變化')
				console.log('新值newValue', newValue)
				console.log('舊值oldValue', oldValue)
				// ownerInstance和this.$ownerInstance一樣,可用來向service層通信     
				// instance和ownerInstance的區(qū)別是:       
				// instance.$el指向的是觸發(fā)事件的那個節(jié)點(diǎn);ownerInstance.$el指向當(dāng)前vue文件中的根節(jié)點(diǎn);    
				// instance的作用目前尚不明確,官方?jīng)]有給出用法   
			},
			// 發(fā)送數(shù)據(jù)到service層
			emitData(event, ownerInstance) {
				// event是事件對象
				
				ownerInstance.callMethod('acceptDataFromRenderjs', {
					content: this.content
				})
				// 或者
				/* this.$ownerInstance.callMethod('acceptDataFromRenderjs',{
					content:this.content
				}) */
				// 需要注意的是:只有通過在template中用戶手動操作觸發(fā)renderjs的方法參數(shù)是這兩個:event, ownerInstance;通過其他方法觸發(fā)的函數(shù)參數(shù)不一樣
			}
			
		}
	}
</script>

uni-app官網(wǎng)文檔

補(bǔ)充:使用時的注意事項(xiàng)

  • 目前僅支持內(nèi)聯(lián)使用。
  • 不要直接引用大型類庫,推薦通過動態(tài)創(chuàng)建 script 方式引用。
  • 可以使用 vue 組件的生命周期不可以使用 App、Page 的生命周期
  • 視圖層和邏輯層通訊方式與 WXS 一致,另外可以通過 this.$ownerInstance 獲取當(dāng)前組件的 ComponentDescriptor 實(shí)例。
  • 觀測更新的數(shù)據(jù)在視圖層可以直接訪問到。
  • APP 端視圖層的頁面引用資源的路徑相對于根目錄計算,例如:./static/test.js。
  • APP 端可以使用 dom、bom API,不可直接訪問邏輯層數(shù)據(jù),不可以使用 uni 相關(guān)接口(如:uni.request)
  • H5 端邏輯層和視圖層實(shí)際運(yùn)行在同一個環(huán)境中,相當(dāng)于使用 mixin 方式,可以直接訪問邏輯層數(shù)據(jù)。

總結(jié)

到此這篇關(guān)于uni-app中renderjs使用方式的文章就介紹到這了,更多相關(guān)uni-app中renderjs使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS動態(tài)添加iframe的代碼

    JS動態(tài)添加iframe的代碼

    這篇文章主要介紹了JS動態(tài)添加iframe的代碼,需要的朋友可以參考下
    2015-09-09
  • 詳解JavaScript中var和let的區(qū)別

    詳解JavaScript中var和let的區(qū)別

    在JavaScript中,有3個關(guān)鍵字可以聲明變量:var、const和let,其中var在ECMAScript的所有版本中都可以使用,而const和let只能在ECMAScript 6及更晚的版本中使用,本文就來說說二者的區(qū)別,感興趣的可以了解一下
    2022-11-11
  • Kendo Grid editing 自定義驗(yàn)證報錯提示的解決方法

    Kendo Grid editing 自定義驗(yàn)證報錯提示的解決方法

    Kendo UI是一個強(qiáng)大的框架用于快速HTML5 UI開發(fā)。基于最新的HTML5、CSS3和JavaScript標(biāo)準(zhǔn)。今天小編通過分享本文給大家介紹Kendo Grid editing 自定義驗(yàn)證報錯提示的解決方法
    2016-11-11
  • JavaScript 事件屬性綁定帶參數(shù)的函數(shù)

    JavaScript 事件屬性綁定帶參數(shù)的函數(shù)

    在JavaScript中,為了實(shí)現(xiàn)表現(xiàn)和控制相分離,可以通過0級的DOM事件屬性或者2級的事件模型來實(shí)現(xiàn),不過這兩者在針對某個事件類型調(diào)用相應(yīng)的事件句柄的時候,不能給事件句柄提供參數(shù),也就是說,事件屬性的值只能是一個函數(shù)引用。
    2009-03-03
  • 微信小程序報錯: thirdScriptError的錯誤問題

    微信小程序報錯: thirdScriptError的錯誤問題

    這篇文章主要介紹了微信小程序報錯: thirdScriptError,本文給大家分享解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • JavaScript原型鏈與繼承操作實(shí)例總結(jié)

    JavaScript原型鏈與繼承操作實(shí)例總結(jié)

    這篇文章主要介紹了JavaScript原型鏈與繼承操作,結(jié)合實(shí)例形式總結(jié)分析了javascript原形鏈與繼承的相關(guān)概念、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • 20分鐘輕松創(chuàng)建自己的Bootstrap站點(diǎn)

    20分鐘輕松創(chuàng)建自己的Bootstrap站點(diǎn)

    這篇文章主要教大家如何在短短的20分鐘內(nèi)輕松創(chuàng)建自己的Bootstrap站點(diǎn),學(xué)會使用twitter bootstrap建立一個站點(diǎn),從而鞏固Bootstrap一系列基礎(chǔ)知識,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一)

    Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一)

    這篇文章主要介紹了Express實(shí)現(xiàn)前端后端通信上傳圖片存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一),需要的朋友可以參考下
    2015-12-12
  • 微信JS-SDK updateAppMessageShareData安卓不能自定義分享詳解

    微信JS-SDK updateAppMessageShareData安卓不能自定義分享詳解

    這篇文章主要介紹了微信JS-SDK updateAppMessageShareData安卓不能自定義分享詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Javascript實(shí)現(xiàn)div層漸隱效果的方法

    Javascript實(shí)現(xiàn)div層漸隱效果的方法

    這篇文章主要介紹了Javascript實(shí)現(xiàn)div層漸隱效果的方法,涉及javascript操作頁面元素與樣式變化的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評論

卓尼县| 灵石县| 曲沃县| 贡嘎县| 红安县| 镇沅| 平昌县| 黄大仙区| 闵行区| 马公市| 盐源县| 河南省| 宝山区| 扬州市| 乌鲁木齐县| 托克托县| 旅游| 白水县| 滦平县| 邹平县| 洪江市| 高安市| 牙克石市| 邻水| 依兰县| 双城市| 尉犁县| 寿阳县| 阳朔县| 永丰县| 靖宇县| 德令哈市| 怀化市| 大名县| 夏邑县| 德江县| 长乐市| 和林格尔县| 洛阳市| 嵊泗县| 金沙县|