Me gustaría que mi aplicación vue transforme la siguiente cadena:
const test = 'import { pi } from "MathPie"; function test() { console.log(pi); } export default test;'en una función que podría llamar.
import { pi } from "MathPie"; function test() { console.log(pi); } export default test; Ya intenté usar eval (incluso si es malvado), pero no funciona porque no admite la declaración de import .
eval(test)() > Cannot use import statement outside a module > Should log '3.14159'El fragmento es solo para presentación, conozco Math.PI
Mi pregunta es ¿cómo puedo evaluar una cadena con declaración de import ?
En su caso, puede usar una combinación de importación dinámica() junto con createObjectURL() .
A continuación se muestra un ejemplo de prueba:
(async() => { // <= if you don't support top level await. const jsCode = ` export default function defaultTest() { console.log('this is default test func'); }; export function primaryTest() { console.log('this is primary test func'); }; export function secondaryTest() { console.log('this is secondary test func'); };`; const blobData = new Blob([jsCode], { type: 'text/javascript' }); const url = URL.createObjectURL(blobData); const { "default": defaultTest, primaryTest, secondaryTest } = await import(url); defaultTest(); primaryTest(); secondaryTest(); })()