当前位置: 首页 > Web前端 > vue.js

taro-script0.4发布,基于Tarov3的js解释器组件

时间:2023-03-31 16:49:20 vue.js

taro-scriptGithub地址基于Tarov3开发,支持多终端小程序动态加载执行远程JavaScript脚本,支持ES5语法近期更新内容新增useScriptContext获取当前执行的Context参数名调整:useCache->cache缓存策略调整新增text属性,可直接传入js字符串src支持数组,解决多层TaroScript嵌套问题usagenpminstall--savetaro-scriptimportTaroScriptfrom"taro-script";;从"taro-script"导入TaroScript;HelloTaroScript;注1:同一个taro-script只会执行一次,即在componentDidMount之后执行,后续修改属性无效。ExamplefunctionApp({url}){//只会在第一次创建后加载执行,后续组件更新会忽略所有属性变化return;}注2:多个taro-scripts会并行加载,乱序执行,不能保证顺序。例如://并行加载和乱序执行如果需要保证执行顺序,你应该使用数组或者嵌套,例如:数组方法(推荐)或者嵌套方法globalContext内置全局执行上下文importTaroScript,{globalContext}from"taro-script";;此时globalContext.value的值为100CustomcontextexampleimportTaroScriptfrom"taro-script";constapp=getApp();;在这次app.value的值为100TaroScript属性###srctype:string|string[]要加载的远程脚本文本类型:string|string[]待执行的JavaScript脚本字符串,文本优先级高于srccontext类型:object默认值:globalContext={}执行上下文,默认为globalContext超时类型:number默认值:10000毫秒设置每个远程脚本的超时时间为loadvoid脚本执行错误PostcallbackonLoadtype:()=>voidscript加载执行成功后回调,存在text时无效onErrortype:(err:Error)=>voidscript加载失败或脚本执行错误后回调,存在text时无效fallbacktype:显示React.ReactNode脚本加载、加载失败、执行失败的内容。循环子类型:React.ReactNode|((context:T)=>React.ReactNode)加载完成后显示的内容,支持传入函数第一个参数。支持脚本执行的上下文。useScriptContext()获取当前执行上下文hookimportTaroScript,{useScriptContext}from"taro-script";;functionTest(){constctx=useScriptContext();返回ctx.a;//100}evalScript(code:string,context?:{})动态执行给定的字符串脚本并返回最后一个表达式的值import{evalScript}from"taro-script";constvalue=evalScript("100+200");//300others该组件使用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环境有关,如果环境本身不支持,它将不被支持!导入自定义方法或类型示例:importTaroScript,{globalContext}from"taro-script";globalContext.hello=function(){console.log('hellotaro-script')};或自定义上下文importTaroScriptfrom"taro-script";constctx={hello(){console.log('hellotaro-script')}};