Задать вопрос
@ShadowTrix

Миграция VueJS 2 на VueJS 3 при RequireJS?

VUE 2

Подгружаю это:
vendor/npm-asset/vue/dist/vue.min.js

Создан был такой myVue.js:

define(['vue'], function (Vue) {

	window.Vue = Vue;

	var VuePlugin = {
		install: function (Vue) {
			Vue.mixin({
				methods: {
					debounce: function (func, wait, immediate) {
						var timeout;
						return function () {
							var context = this, args = arguments;
							var later = function () {
								timeout = null;
								if (!immediate) {
									func.apply(context, args);
								}
							};
							var callNow = immediate && !timeout;
							clearTimeout(timeout);
							timeout = setTimeout(later, wait);
							if (callNow) {
								func.apply(context, args);
							}
						};
					},
				}
			});
		}
	};

	Vue.use(VuePlugin);

	return Vue;
});


Далее я вызывал app.js:
define(function(require) {
	var Vue = require('myVue');

	var vm = new Vue({
		el: '#app'
	});

	return vm;
});


И это работало.

VUE 3

Подгружаю это:
vendor/npm-asset/vue/dist/vue.global.prod.js

Изменяю myVue.js:

define(['vue'], function (Vue) {

	window.Vue = Vue.default;
	
	var app = Vue.createApp({});

	var VuePlugin = {
		install: function (app) {
			app.mixin({
				methods: {
					debounce: function (func, wait, immediate) {
						var timeout;
						return function () {
							var context = this, args = arguments;
							var later = function () {
								timeout = null;
								if (!immediate) {
									func.apply(context, args);
								}
							};
							var callNow = immediate && !timeout;
							clearTimeout(timeout);
							timeout = setTimeout(later, wait);
							if (callNow) {
								func.apply(context, args);
							}
						};
					},
				}
			});
		}
	};

	app.use(VuePlugin);

	return app;
});


И редактирую app.js:
define(function(require) {
	var app = require('myVue');

	var vm = app.mount('#app');

	return vm;
});


И ничего не происходит.

Я пробовал убрать
window.Vue = Vue.default;

из myVue.js, но в этом случае возникает ошибка, о которой в консоли сообщается:
Uncaught TypeError: Cannot destructure '_Vue' as it is undefined.


Я пробовал оставить в app.js:
var vm = new app({
el: '#app'
});

Но это, конечно, вызвало ошибку в консоли:
Uncaught TypeError: app is not a constructor

Други, я честно пытался с помощью ГГЛ и v3.ru.vuejs.org решить этот вопрос, но мне нужен ваш пинок. чтобы понять, что тут не так?

Заранее всех благодарю!
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы