基于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://www.kartarina.com/article48/dhgdep.html

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

廣告

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

微信小程序開發
主站蜘蛛池模板: 无码日韩人妻AV一区二区三区| 免费无码又爽又刺激高潮| 无码人妻久久一区二区三区蜜桃 | 亚洲中文字幕无码一区二区三区| 亚洲gv猛男gv无码男同短文| 精品久久久久久无码中文字幕一区 | 亚欧免费无码aⅴ在线观看| 久久久久亚洲精品无码网址色欲| 亚洲国产精品无码久久久不卡| 国产福利无码一区在线| 日木av无码专区亚洲av毛片| 国产激情无码一区二区三区| 亚洲爆乳少妇无码激情| 无码国产精品一区二区免费vr| 无码的免费不卡毛片视频| 无码人妻精品一区二区三区久久久| 无码中文字幕乱在线观看| 岛国无码av不卡一区二区| 免费无码又爽又刺激毛片| 西西444www无码大胆| 18禁网站免费无遮挡无码中文| 夜夜添无码一区二区三区| 精品久久久无码中文字幕| 全免费a级毛片免费看无码| 亚洲精品无码久久久久YW| 久久国产精品无码HDAV| 久久无码人妻一区二区三区午夜| 国产白丝无码免费视频| 免费无码又爽又刺激网站| 久久激情亚洲精品无码?V| 亚洲精品一级无码鲁丝片| 永久免费无码日韩视频| 一本大道无码人妻精品专区| 久久久久久国产精品无码下载| 无码日韩人妻AV一区二区三区| 久久久久久无码国产精品中文字幕 | 无码人妻少妇久久中文字幕| 日韩中文无码有码免费视频| 日韩美无码五月天| 日韩精品无码一区二区三区AV | 精品国精品无码自拍自在线|