Как преобразовать ответ API типа строки в композитный (с импортом) во время выполнения?Javascript

Форум по Javascript
Ответить
Anonymous
 Как преобразовать ответ API типа строки в композитный (с импортом) во время выполнения?

Сообщение Anonymous »

Я получаю противоположность API, которая содержит строку. По сути, он содержит код для композиции, который я должен запустить в своем Formbuilder. Я дал пример того, что я пытаюсь сделать ниже. < /P>

Код: Выделить всё

import FormBuilder from 'FormBuilder'
const apiResp = `
import { ref, computed } from 'vue'
// might include other imports like store

export const useFunc = (model) => {
const multiLoader = async () => {
try {
const resp = await fetch('https://jsonplaceholder.typicode.com/todos/1')
const data = await resp.json()
return data
} catch (error) {
console.log(error)
}
return {}
}
const singleLoader1 = async () => {
const str = ref('singleLoader1 is working properly')
const test = computed(() => {
console.log('model in singleLoader1', model)
return model.input?.fName || 'no name'
})
console.log(str.value)
try {
const resp = await fetch('https://jsonplaceholder.typicode.com/todos/2')
const data = await resp.json()
return data
} catch (error) {
console.log(error)
}
return {}
}
const singleLoader2 = async () => {
try {
const resp = await fetch('https://jsonplaceholder.typicode.com/todos/3')
const data = await resp.json()
return data
} catch (error) {
console.log(error)
}
return {}
}
const fNameLoader = async () => {
try {
const resp = await fetch('https://jsonplaceholder.typicode.com/todos/4')
const data = await resp.json()
return data?.title
} catch (error) {
console.log(error)
}
return {}
}
const test = async () => {
const url = 'https://jsonplaceholder.typicode.com/todos/4'
try {
const resp = await fetch(url)
const data = await resp.json()
const spl = data?.title?.split(' ')
return spl.map(op => ({ text: op, value: op }))
} catch (error) {
console.log(error)
}
return {}
}
const test2 = () => 'porro'
const kubeconfigFunc = () => 'miao miap'
const scalingRulesLoader = async () => {
try {
const resp = await fetch('https://jsonplaceholder.typicode.com/todos/5')
const data = await resp.json()
return '1Gi'
} catch (error) {
console.log(error)
}
return ''
}
return {
multiLoader,
singleLoader1,
singleLoader2,
fNameLoader,
kubeconfigFunc,
test,
test2,
scalingRulesLoader,
}
}
`

const blob = new Blob([apiResp], { type: 'application/javascript' })
const moduleUrl = URL.createObjectURL(blob)
const dynamicModule = await import(moduleUrl)
const { useFunc } = dynamicModule





Я пытался использовать Blob , eval , новая функция . Они работают только для функции, но если я использую ref или вычислен или пытаюсь импортировать что -либо в строке ответа API, он не работает. Я не хочу устанавливать отдельный магазин в моем Formbuilder, чтобы поддерживать его свет. Можно ли преобразовать ApiResp в файл JS, а затем выполнить его как обычный композитный?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... rts-during
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»