관련 학습 권장 사항: js 비디오 튜토리얼
Github 주소
Taro v3
를 기반으로 개발되었으며, 원격 JavaScript 스크립트를 동적으로 로드하고 실행할 수 있는 다중 터미널 소형 프로그램을 지원합니다. Taro v3
开发,支持多端小程序动态加载远程 JavaScript 脚本并执行,支持 ES5 语法
useScriptContext
获取当前执行上下文text
属性,可直接传入js字符串src
支持数组,解决多层TaroScript嵌套问题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="path1" /> <TaroScript src="path2" /> <TaroScript src="path3" />复制代码
如需要确保执行顺序,应该使用数组或嵌套,例如:
数组方式(建议)
<TaroScript src={["path1", "path2", "path3"]} />复制代码
或 嵌套方式
<TaroScript src="path1"> <TaroScript src="path2"> <TaroScript src="path3"></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
ES5 구문 지원
useScriptContext
를 추가했습니다매개변수 이름 조정: useCache-> 캐시
캐시 전략 조정text
속성
src
다단계 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,复制代码
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>;复制代码
rrreee참고 2참고 1
:와 동일 taro-script
comComponentDidMount
이후에 한 번만 실행되며 이후 속성 변경은 유효하지 않습니다. 예시
: 여러 taro-script
가 병렬로 로드되어 순서 없이 실행되므로 순서를 보장할 수 없습니다. 예:
배열 방법(권장)🎜rrreee🎜또는 중첩 방법🎜rrreee
globalContext
globalContext.value
의 값은 100
🎜🎜🎜 🎜맞춤형 context
예시🎜🎜rrreee🎜🎜이때 app.value
의 값은 100
입니다. >🎜🎜TaroScript
속성src
h3>🎜Type: string | string []
🎜🎜로드할 원격 스크립트🎜text
string | string[]🎜🎜실행해야 하는 JavaScript 스크립트 문자열, <code>text
는 src
🎜컨텍스트
객체
🎜🎜기본값: globalContext = {}
🎜🎜실행 컨텍스트 , 기본값은 globalContext
🎜timeout
number
기본값: 10000 밀리초🎜🎜 각 원격 스크립트 로딩 시간 초과 설정 🎜onExecSuccess
()= > void
🎜 🎜성공적인 스크립트 실행 후 콜백🎜onExecError
(err:Error) => 무효
🎜🎜스크립트 실행 오류 후 콜백🎜onLoad
() => ; void
🎜🎜 스크립트가 성공적으로 로드되고 실행된 후의 콜백은 text
가 존재하는 경우 유효하지 않습니다🎜onError code>
(err: Error) => void
🎜🎜스크립트 로딩 실패 또는 스크립트 실행 오류 후 콜백, text
가 존재하는 경우 유효하지 않음🎜 fallback
React.ReactNode
🎜🎜스크립트 로딩, 로딩 실패, 실행 실패 내용 표시 🎜캐시
부울
🎜🎜기본값: true
🎜 🎜캐시 로드 활성화 여부는 현재 캐시 정책이 적용됩니다. 요청 주소는 키
로 사용되며, 캐시 기간은 현재 사용자가 애플리케이션을 사용하는 라이프사이클입니다. 🎜children
React.ReactNode | ((context: T) => React.ReactNode) code>🎜🎜로드가 완료된 후 표시되는 콘텐츠는 함수
전달을 지원합니다. 첫 번째 매개변수는 스크립트 실행의 context
입니다. -16" >useScriptContext()
🎜현재 실행 컨텍스트 후크 가져오기🎜rrreeeevalScript(code: string, context? : {})
🎜주어진 문자열 스크립트를 동적으로 실행하고 마지막 표현식의 값을 반환합니다🎜rrreeeOther
🎜 🎜 이 구성 요소는 eval5를 사용하여 JavaScript
구문을 구문 분석하고 ES5
🎜🎜🎜🎜🎜로드하기 전에 로드해야 하는 주소에 대한 법적 도메인 이름을 구성하는 것을 잊지 마세요. 프로덕션 환경으로 이동🎜🎜🎜🎜🎜TaroScript 내장 유형 및 메소드: 🎜🎜🎜rrreee🎜🎜 내장 유형은 현재 실행 중인 JavaScript 환경과 관련되어 있으며 환경 자체가 지원하지 않는 경우 지원되지 않습니다. ! 🎜🎜🎜사용자 정의 메서드 또는 유형 가져오기의 예: 🎜rrreee🎜또는 사용자 정의 컨텍스트🎜rrreee🎜🎜프로그래밍에 대해 자세히 알아보려면 🎜php training🎜 칼럼에 주목하세요! 🎜🎜🎜
위 내용은 taro-script 0.4 출시, Taro v3 기반의 js 인터프리터 구성 요소에 대해 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!