VueJS + Требуется JS в бэкэнд-модуле TYPO3 - PullRequest
0 голосов
/ 06 апреля 2020

Я использую Require JS для загрузки моих пользовательских Javascript модулей в расширение внутреннего модуля TYPO3.

I go по документам: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/JavaScript/RequireJS/Index.html

Я не смог заставить VueJS работать без какой-либо хакерской атаки:)

Моя первая попытка:

define("vue", [], function () {
    'use strict';
    /*!
     * Vue.js v2.6.11
     * (c) 2014-2019 Evan You
     * Released under the MIT License.
     */
    !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){"use strict";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}func ........ shortened;
});

Такой тест может вызвать ошибку Vue is not defined

var app = new Vue({
        el: '#headline',
        data: {
            message: 'Hello Vue.js!'
        }
    });

Я посмотрел, как загружается VueJS, и попытался изменить условия загрузки. Я понял, мне нужно было заставить скрипт выполнить часть (e=e||self).Vue=t(). Я не хотел менять исходный код VueJS, поэтому я делаю это сейчас так:

Мне пришлось сбросить define.amd, затем загрузить VueJS, а затем вернуть его к его старому значению, как это :

define("vue", [], function () {
    'use strict';

    const tempAmdHolder = define.amd;
    define.amd = false;
    /*!
     * Vue.js v2.6.11
     * (c) 2014-2019 Evan You
     * Released under the MIT License.
     */
    !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){"use strict";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}func ........ shortened;

    define.amd = tempAmdHolder;
});

Теперь я могу запустить свой тестовый код:

Есть идеи, что может быть не так или как избежать (неприятного) обходного пути?

...