微信小程序加载远程js脚本

1,609 阅读1分钟

示例代码:wxGetRemoteJS
需要打开增强编译和允许访问

核心代码

// 主要是依赖了eval5 
import {Interpreter} from "../../utils/eval5/interpreter/main";

let res = await this.lodaJS('https://onein.7coder.top/lib/dayjs.min.js', 'dayjs')
// res ...
loadJS(url, type) {
    let obj = {}
    return new Promise((resolve, reject) => {
      wx.request({
        url,
        success(res) {
          // 常用的函数传进去 
          var interpreter = new Interpreter(obj, {
            timeout: 2000,
            rootContext: {
              console: console,
              setTimeout: setTimeout,
              clearTimeout: clearTimeout,
              setInterval: setInterval,
              clearInterval: clearInterval,
              wx: typeof wx === "undefined" ? undefined : wx,
              globalContextInFunction: obj
            }
          });
          // 只能解析es5 不需要mudel.export 直接能拿到里面的内容
          interpreter.evaluate(res.data);
          resolve(obj[type])
        }
      })
    })
  },