#typescript #vue.js #string-interpolation #vuejs3
#typescript #vue.js #строка-интерполяция #vuejs3
Вопрос:
Я пытаюсь установить пользовательские разделители в Vue.js 3 но, похоже, это не работает.
Первое, что я попробовал, это установить параметр компонента delimiters
следующим образом:
export default defineComponent({
delimiters: ["${", "}$"],
// ...
})
но ничего не происходит.
Затем я попытался настроить файл main.ts следующим образом:
import { createApp } from "vue";
import router from "./router";
import App from "./App.vue";
App.delimiters = ["${", "}$"];
createApp(App)
.use(router)
.mount("#app");
Опять интерполяция строк в шаблоне не работает.
Чего мне не хватает?
Ответ №1:
Должно быть внутри createApp
Пример:
var app = Vue.createApp({
data() {return {message: 'Ciao'}},
// for global
delimiters: ["${", "}$"],
// for standalone
compilerOptions: {
delimiters: ["${", "}$"]
}
}).mount('#app');
<script src="https://unpkg.com/vue@3.0.1/dist/vue.global.prod.js"></script>
<div id="app"><h1>Message: ${message}$</h1></div>
Комментарии:
1. Этот пример не работает.
2. обновление для работы с более свежими изменениями
Ответ №2:
Если вы посмотрите на консоль в инструментах разработчика вашего браузера, вы можете увидеть что-то вроде:
«»» vue.runtime.esm-browser.js:1486 [Предупреждение Vue]: компонент предоставил параметр шаблона, но компиляция во время выполнения не поддерживается в этой сборке Vue. Использовать «vue.esm-browser.js » вместо этого. в «»»
import { createApp } from "vue";
указывает на ‘vue / dist / vue.runtime.esm-browser’, который не поддерживает параметр «разделители», поскольку он требует компиляции, недоступной в этой сборке.
Теперь замените строку импорта на
import { createApp } from "vue/dist/vue.esm-browser";
или
import { createApp } from "vue/dist/vue.esm-bundler";
Он должен работать просто отлично.