美文网首页
通过ajax加载js沙箱机制

通过ajax加载js沙箱机制

作者: 黑曼巴yk | 来源:发表于2019-11-16 18:03 被阅读0次

前言

在做微前端的时候,有时候会遇到不同版本的问题。但是加载的js 又不能污染全局,只能在对应的scope中生存。

const { default: react } = await load(
      "https://unpkg.com/react@16/umd/react.development.js"
);

解决方案

通过模拟一个类似commonjs的语法,然后通过类似eval或者Function()()来自执行

import axios from "axios";

/* eslint-disable */
export default async function load(url, dependencies = {}) {
  const deps = dependencies;

  // 模拟一个 CommonJS 的执行环境
  const module = {
    exports: {}
  };

  function require(moduleName) {
    return deps[moduleName];
  }

  const { data: sourceCode } = await axios.get(url);

  Function(`
    return function(module, exports, require) {
      ${sourceCode}
    }
  `)()(module, module.exports, require);

  return module.exports;
}

相关文章

  • 通过ajax加载js沙箱机制

    前言 在做微前端的时候,有时候会遇到不同版本的问题。但是加载的js 又不能污染全局,只能在对应的scope中生存。...

  • js面试题-3(ajax)

    1. 阐述一下异步加载 JS 异步加载的方案: 动态插入script标签 通过ajax去获取js代码,然后通过e...

  • AJAX的知识梳理

    【目录】 一、用AJAX加载CSS二、用AJAX加载JS三、用AJAX加载HTML四、用AJAX加载XML五、用A...

  • JS沙箱机制

    一.思考 微前端应用加载 刚开始我加载A应用 window.a B应用 window.a 怎样可以俩个应用里的...

  • jvm(二)类加载过程与类加载器

    本篇内容: 类加载过程 类加载器分类 双亲委托机制 沙箱安全机制 类加载过程 类加载器子系统负责将从文件系统或者网...

  • requirejs-requirejs插件

    text.js插件 使用text插件加载html 用于加载文本文件的requirejs插件 通过ajax请求来加载...

  • Three.js跨域问题(无法预览)

    Three.js跨域问题 通过Three.js加载obj、FBX等格式外部模型文件的时候是ajax异步加载数据的过...

  • 前端面试题总结【39】:异步加载和延迟加载

    异步加载的方案: 动态插入 script 标签 通过 ajax 去获取 js 代码,然后通过 eval 执行 sc...

  • AJAX异步加载

    异步加载的方案: 动态插入 script 标签 通过 ajax 去获取 js 代码,然后通过 eval 执行 sc...

  • jdk读书笔记

    双亲委派机制:沙箱安全机制:自己写的String.class类不会被加载,防止核心API库被随意篡改避免被重复加载...

网友评论

      本文标题:通过ajax加载js沙箱机制

      本文链接:https://www.haomeiwen.com/subject/brnyictx.html