基于Tarov3中js解釋器組件的案例分析-創新互聯

這篇文章主要介紹基于Taro v3中js解釋器組件的案例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創新互聯是一家專注于成都做網站、網站建設與策劃設計,塔什庫爾干塔吉克網站建設哪家好?成都創新互聯做網站,專注于網站建設10年,網設計領域的專業建站公司;建站業務涵蓋:塔什庫爾干塔吉克等地區。塔什庫爾干塔吉克做網站價格咨詢:028-86922220

Github地址

基于Taro v3開發,支持多端小程序動態加載遠程 JavaScript 腳本并執行,支持 ES5 語法

最近更新內容

  • 新增useScriptContext獲取當前執行上下文
  • 參數名稱調整:useCache-> cache
  • 緩存策略調整
  • 新增text屬性,可直接傳入js字符串
  • src支持數組,解決多層TaroScript嵌套問題

Usage

npm install --save taro-script復制代碼
import TaroScript from "taro-script";

<TaroScript text="console.log(100+200)" />;復制代碼
import TaroScript from "taro-script";

<TaroScript src="https://xxxxx/xx.js">
    <View>Hello TaroScript</View>
</TaroScript>;復制代碼

注 1:同一taro-script只會執行一次,也就是在componentDidMount后執行,后續改變屬性是無效的。示例

function App({ url }) {
    // 只會在第一次創建后加載并執行,后續組件的更新會忽略所有屬性變動
    return <TaroScript src={url} />;
}復制代碼

注 2:多個taro-script會并行加載及無序執行,無法保證順序。如:

// 并行加載及無序執行
<TaroScript  src="path2" />
<TaroScript  src="path3" />
<TaroScript  src="path4" />復制代碼

如需要確保執行順序,應該使用數組或嵌套,例如:

數組方式(建議)

<TaroScript src={["path2", "path3", "path4"]} />復制代碼

或 嵌套方式

<TaroScript src="path2">
    <TaroScript src="path3">
        <TaroScript src="path4"></TaroScript>
    </TaroScript>
</TaroScript>復制代碼

globalContext

內置的全局執行上下文

import TaroScript, { globalContext } from "taro-script";

<TaroScript text="var value = 100" />;復制代碼

此時 globalContext.value 的值為 100

自定義context示例

import TaroScript from "taro-script";

const app = getApp();

<TaroScript context={app} text="var value = 100" />;復制代碼

此時 app.value 的值為 100

TaroScript 屬性

src

類型:string | string[]

要加載的遠程腳本

text

類型:string | string[]

需要執行的 JavaScript 腳本字符串,text 優先級高于 src

context

類型:object

默認值:globalContext = {}

執行上下文,默認為globalContext

timeout

類型:number默認值:10000 毫秒

設置每個遠程腳本加載超時時間

onExecSuccess

類型:()=> void

腳本執行成功后回調

onExecError

類型:(err:Error)=> void

腳本執行錯誤后回調

onLoad

類型:() => void

腳本加載完且執行成功后回調,text存在時無效

onError

類型:(err: Error) => void

腳本加載失敗或腳本執行錯誤后回調,text存在時無效

fallback

類型:React.ReactNode

腳本加載中、加載失敗、執行失敗的顯示內容

cache

類型:boolean

默認值:true

是否啟用加載緩存,緩存策略是已當前請求地址作為key,緩存周期為當前用戶在使用應用程序的生命周期。

children

類型:React.ReactNode | ((context: T) => React.ReactNode)

加載完成后顯示的內容,支持傳入函數第一個參數為腳本執行的上下文

useScriptContext()

獲取當前執行上下文 hook

import TaroScript, { useScriptContext } from "taro-script";

<TaroScript text="var a= 100">
    <Test />
</TaroScript>;

function Test() {
    const ctx = useScriptContext();
    return ctx.a; // 100
}復制代碼

evalScript(code: string, context?: {})

動態執行給定的字符串腳本,并返回最后一個表達式的值

import { evalScript } from "taro-script";

const value = evalScript("100+200"); // 300復制代碼

其他

  • 該組件使用eval5來解析JavaScript語法,支持 ES5

  • 上生產環境前別忘記給需要加載的地址配置合法域名

  • TaroScript 內置類型及方法:

NaN,Infinity,undefined,null,Object,Array,String,Boolean,Number,Date,RegExp,Error,URIError,TypeError,RangeError,SyntaxError,ReferenceError,Math,parseInt,parseFloat,isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,escape,unescape,eval,Function,console,
setTimeout,
clearTimeout,
setInterval,
clearInterval,復制代碼

內置類型和當前運行 JavaScript 環境相關,如環境本身不支持則不支持!

導入自定義方法或類型示例:

import TaroScript, { globalContext } from "taro-script";

globalContext.hello = function(){
  console.log('hello taro-script')
}

<TaroScript text="hello()"></TaroScript>;復制代碼

或自定義上下文

import TaroScript from "taro-script";

const ctx = {
  hello(){
    console.log('hello taro-script')
  }
}

<TaroScript context={ctx} text="hello()"></TaroScript>;復制代碼

以上是基于Taro v3中js解釋器組件的案例分析的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道!

分享文章:基于Tarov3中js解釋器組件的案例分析-創新互聯
文章位置:http://m.kartarina.com/article48/dhgdep.html

成都網站建設公司_創新互聯,為您提供微信小程序、品牌網站制作、網站維護、網站制作、自適應網站、網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 久久久久久精品无码人妻| 成人A片产无码免费视频在线观看| 国产成人精品无码一区二区| 久久青青草原亚洲AV无码麻豆| 亚洲AV无码一区二区二三区入口 | 亚洲heyzo专区无码综合| 亚洲精品无码国产片| 内射人妻少妇无码一本一道 | 国产精品无码一区二区在线观一| 人妻中文无码久热丝袜| 亚洲国产精品无码久久九九大片| 国模无码人体一区二区| 熟妇人妻无码xxx视频| 亚洲av无码一区二区三区不卡 | 亚洲精品无码乱码成人| 国产成年无码久久久久下载| 国产AV无码专区亚洲A∨毛片| 18禁超污无遮挡无码免费网站国产 | 97久久精品无码一区二区天美| 亚洲熟妇少妇任你躁在线观看无码| 亚洲成av人片不卡无码| 无码人妻AV一二区二区三区| 中文字幕无码毛片免费看| 无码人妻精品一区二区三区99不卡| 久久精品国产亚洲AV无码娇色| 亚洲国产a∨无码中文777| 亚洲精品人成无码中文毛片 | 中文字幕丰满伦子无码| 成人无码嫩草影院| 国内精品久久人妻无码不卡| 亚洲AV无码专区在线电影成人| 综合无码一区二区三区四区五区| 国产AV无码专区亚洲AV毛网站| 亚洲一区无码中文字幕| 中文字幕无码乱人伦| 国产V亚洲V天堂无码久久久| 国产成人精品无码免费看| 无码少妇一区二区性色AV| 亚洲综合无码一区二区| 蜜桃臀AV高潮无码| 蜜芽亚洲av无码一区二区三区|