美文网首页
使用babel编译自定义代码

使用babel编译自定义代码

作者: DXYang | 来源:发表于2020-12-01 19:40 被阅读0次

需求

界面组件支持事件自定义,自定义事件通过代码编辑器输入。

参考

https://github.com/babel/sandboxes

Demo代码

import React, { useState } from 'react';
import * as Babel from '@babel/core';

export function compileModule(code: string, globals = {}) {
  const exports = {};
  const module = { exports };
  const globalNames = Object.keys(globals);
  const keys = ['module', 'exports', ...globalNames];
  const values = [module, exports, ...globalNames.map(key => globals[key])];
  // eslint-disable-next-line no-new-func
  new Function(keys.join(), code).apply(exports, values);
  return module.exports;
}

export function transpilePlugin(pluginString: string) {
  return Babel.transform(pluginString, {
    babelrc: false,
    configFile: false,
    ast: false,
    highlightCode: false,
    presets: [require('@babel/preset-env')],
  }).code;
}

export default () => {

// 模拟编辑器输入的代码
  const FUNCTION = `function sumFunction(babel) {
    const a = 1;
    const b= 2;
    return a+b;
  }

  const data = {
    name:'1',
    age:12
  }

  function sumFunction2(x, y) {
    return x+y+data.age;
  }
  export {sumFunction, data, sumFunction2};
  `;

  const selfModule = compileModule(transpilePlugin(FUNCTION));
  const {sumFunction, sumFunction2 , data} = selfModule;

  return (
    <div>
      {code}
      <br />
      {sumFunction()}
      <br />
      {sumFunction2(2,4)}
    </div>
  );
};

相关文章

  • 使用babel编译自定义代码

    需求 界面组件支持事件自定义,自定义事件通过代码编辑器输入。 参考 https://github.com/babe...

  • 2019-01-24 JS 中的Babel是什么?

    Bable简介 Babel可以把JSX语法编译成JS语法,使得写 UI代码更加方便。 不使用Babel: 使用Ba...

  • 一文说尽 Babel 的前世今生

    作者: 多巴胺 一、Babel 是什么 Babel 是一个可以将 使用ES2015+语法的代码 编译成 向后兼容 ...

  • 酣畅淋漓的使用cube-ui后编译

    1. 后编译介绍 目前大部分的前端项目开发都是使用es6+的代码并且使用babel进行编译,而传统的对代码包的引入...

  • 前端知识你问我答

    babel 的编译流程 先说一下我所理解的编译,编译是将源代码转译成目标环境能够执行的代码。我们在项目中使用 ba...

  • 第三章:实战(深入浅出 Webpack 笔记)

    使用 ES6 语言 Babel 是一个 JavaScript 编译器,能将 ES6 代码转为 ES5 代码。在 B...

  • Webpack和Babel

    Babel Babel 是 JavaScript 的编译器,用来将 ES6 的代码,转换成 ES6 之前的代码 官...

  • babel

    现在不推荐将babel安装在全局 进入项目,创建package.json 使用babel编译 将babel指令写入...

  • webpack 3.X学习之Babel配置

    Babel是什么 Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到: 使用下...

  • (15/24) 为webpack增加babel支持

    Babel是什么?Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译达到以下目的:使用...

网友评论

      本文标题:使用babel编译自定义代码

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