Запуск некоторого внешнего JS-кода во время выполнения в Vue

#javascript #vue.js #runtime

#javascript #vue.js #время выполнения

Вопрос:

Возможно ли запустить некоторый внешний JS-код во время выполнения в Vue?

Например, у меня есть некоторая логика, которая может быть изменена локальным администратором во время выполнения без необходимости перезагрузки всего приложения, которое хранится в базе данных в виде фрагмента JS-кода и доступно через серверную часть через вызов axios. Так можно ли включать такие скрипты без их предварительной компиляции? Для использования следующим образом:

 let params = {...}; //some input props for my stored script

let script = restService.getScript(); //get script code from backend via axios

let result = scriptService.executeScript( script, params ); //execute script with given params
 

У меня был аналогичный подход с приложением Java, которое могло бы выполнять сохраненный скрипт Groovy во время выполнения, хотелось бы реализовать что-то подобное в моем приложении Vue.

Я довольно новичок в разработке JS-интерфейса, поэтому может быть что-то очевидное, чего мне не хватает.

Ответ №1:

В вашем приложении vue main.js вы можете определить свой экземпляр vue следующим образом:

 window.app = new Vue({
      store,
      render: h => h(App)
    });

app.$mount('#app');
 

Из внешнего js вы можете получить доступ к своему экземпляру Vue из app object.
Если вы используете vuex, вы можете вызывать такие действия, как:

 app.$store.dispatch('ACTION_NAME', 'Payload');