Как сделать так, чтобы модуль webpack (внутренний лог c) выполнялся самостоятельно? - PullRequest
0 голосов
/ 29 мая 2020

Это следующий вывод модуля, который генерирует webpack: Я вижу, что он сохраняет в массиве window.webpackJsonp, однако логические c бизнес-функции модуля, похоже, не выполняются в случае, когда я включаю ниже результат на любой другой странице, на которой находится весь проект (параллельный подпроект, не имеющий архитектуры webpack)

Мой вопрос, может кто-нибудь, пожалуйста, дайте небольшое представление о том, почему это происходит, и есть ли возможное обходное решение, чтобы сделать это module:
- Сделайте его независимым и действительно самовыполняющимся, это бизнес-логи c всякий раз, когда он загружается на страницу
- или какие зависимости веб-пакета должны быть загружены ранее на странице, чтобы гарантировать, что он подберет модули зарегистрированы в webpack.webpackJsonp и исполняют их

(window["webpackJsonp"] = window["webpackJsonp"] || []).push([
    ["xxx-fit-responsive/xxx-fit-responsive-package/src/main/jcr_root/apps/xxx/fit/responsive/par/alertribbon/clientlib/publish/alertribbon.publish.bundle.js"],
    {
        /***/ "../../../xxx-fit-responsive/xxx-fit-responsive-package/src/main/jcr_root/apps/xxx/fit/responsive/par/alertribbon/clientlib/publish/alertribbon.publish.entry.js": /***/ function (
            module,
            __webpack_exports__,
            __webpack_require__
        ) {
            "use strict";
            eval(
                'eval("__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\\"./node_modules/core-js/modules/es.array.index-of.js\\");\\n/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__);\\n\\n\\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\\"Cannot call a class as a function\\"); } }\\n\\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\\"value\\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\\n\\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\\n\\nvar AlertRibbon =\\n/*#__PURE__*/\\nfunction () {\\n  function AlertRibbon(el) {\\n    _classCallCheck(this, AlertRibbon);\\n\\n    if (!el) {\\n      return;\\n    }\\n\\n    debugger;\\n    this.$elements = {\\n      el: el\\n    };\\n    this.init();\\n  }\\n\\n  _createClass(AlertRibbon, [{\\n    key: \\"setElements\\",\\n    value: function setElements() {\\n      this.$elements.closeButton = this.$elements.el.querySelector(\'.alertribbon__closeButton\');\\n    }\\n    /**\\n     * @param {event} event\\n     */\\n\\n  }, {\\n    key: \\"slideComponentOutUp\\",\\n    value: function slideComponentOutUp(event) {\\n      var _this = this;\\n\\n      var eventType = event.type;\\n      var closeKeyCodes = [13, 32];\\n\\n      if (eventType === \'click\' || eventType === \'keydown\' && closeKeyCodes.indexOf(event.keyCode) >= 0) {\\n        this.$elements.el.style.maxHeight = \\"\\".concat(this.$elements.el.offsetHeight, \\"px\\");\\n        setTimeout(function () {\\n          _this.$elements.el.style.maxHeight = \'0px\';\\n        });\\n      }\\n    }\\n    /*\\n    This logic excludes element from keyboard navigation flow */\\n\\n  }, {\\n    key: \\"hideComponent\\",\\n    value: function hideComponent() {\\n      this.$elements.el.classList.add(\'alertribbon__base--hidden\');\\n    }\\n  }, {\\n    key: \\"addEventListeners\\",\\n    value: function addEventListeners() {\\n      this.$elements.closeButton.addEventListener(\'click\', this.slideComponentOutUp.bind(this));\\n      this.$elements.closeButton.addEventListener(\'keydown\', this.slideComponentOutUp.bind(this));\\n      this.$elements.el.addEventListener(\'transitionend\', this.hideComponent.bind(this));\\n    }\\n  }, {\\n    key: \\"init\\",\\n    value: function init() {\\n      this.setElements();\\n      this.addEventListeners();\\n    }\\n  }]);\\n\\n  return AlertRibbon;\\n}();\\n\\ndebugger;\\n\\nif (window.nc) {\\n  window.nc.loaderRegister({\\n    AlertRibbon: AlertRibbon\\n  });\\n  /*\\n  Location Finder workaround, since it doesn\'t use nc.loader for now (6.3 Release) */\\n} else {\\n  document.addEventListener(\'DOMContentLoaded\', function () {\\n    var $alertRibbon = document.querySelector(\'.alertribbon__base\');\\n\\n    if ($alertRibbon) {\\n      new AlertRibbon($alertRibbon).init();\\n    }\\n  });\\n}//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL1VzZXJzL2JvaGRhbi5hZmFuYXN5ZXYvUHJvamVjdHMvdWJzLWludGVybmV0LWZpdC91YnMtZml0LXJlc3BvbnNpdmUvdWJzLWZpdC1yZXNwb25zaXZlLXBhY2thZ2Uvc3JjL21haW4vamNyX3Jvb3QvYXBwcy91YnMvZml0L3Jlc3BvbnNpdmUvcGFyL2FsZXJ0cmliYm9uL2NsaWVudGxpYi9wdWJsaXNoL2FsZXJ0cmliYm9uLnB1Ymxpc2guZW50cnkuanM/ZTM0ZSJdLCJuYW1lcyI6WyJBbGVydFJpYmJvbiIsImVsIiwiJGVsZW1lbnRzIiwiaW5pdCIsImNsb3NlQnV0dG9uIiwicXVlcnlTZWxlY3RvciIsImV2ZW50IiwiZXZlbnRUeXBlIiwidHlwZSIsImNsb3NlS2V5Q29kZXMiLCJpbmRleE9mIiwia2V5Q29kZSIsInN0eWxlIiwibWF4SGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwic2V0VGltZW91dCIsImNsYXNzTGlzdCIsImFkZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzbGlkZUNvbXBvbmVudE91dFVwIiwiYmluZCIsImhpZGVDb21wb25lbnQiLCJzZXRFbGVtZW50cyIsImFkZEV2ZW50TGlzdGVuZXJzIiwid2luZG93IiwibmMiLCJsb2FkZXJSZWdpc3RlciIsImRvY3VtZW50IiwiJGFsZXJ0UmliYm9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFNQSxXOzs7QUFDSix1QkFBWUMsRUFBWixFQUFnQjtBQUFBOztBQUNkLFFBQUksQ0FBQ0EsRUFBTCxFQUFTO0FBQ1A7QUFDRDs7QUFFRDtBQUVBLFNBQUtDLFNBQUwsR0FBaUI7QUFDZkQsUUFBRSxFQUFGQTtBQURlLEtBQWpCO0FBR0EsU0FBS0UsSUFBTDtBQUNEOzs7O2tDQUVhO0FBQ1osV0FBS0QsU0FBTCxDQUFlRSxXQUFmLEdBQTZCLEtBQUtGLFNBQUwsQ0FBZUQsRUFBZixDQUFrQkksYUFBbEIsQ0FBZ0MsMkJBQWhDLENBQTdCO0FBQ0Q7QUFFRDs7Ozs7O3dDQUdvQkMsSyxFQUFPO0FBQUE7O0FBQ3pCLFVBQU1DLFNBQVMsR0FBR0QsS0FBSyxDQUFDRSxJQUF4QjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQXRCOztBQUVBLFVBQUlGLFNBQVMsS0FBSyxPQUFkLElBQ0lBLFNBQVMsS0FBSyxTQUFkLElBQTJCRSxhQUFhLENBQUNDLE9BQWQsQ0FBc0JKLEtBQUssQ0FBQ0ssT0FBNUIsS0FBd0MsQ0FEM0UsRUFDK0U7QUFDN0UsYUFBS1QsU0FBTCxDQUFlRCxFQUFmLENBQWtCVyxLQUFsQixDQUF3QkMsU0FBeEIsYUFBdUMsS0FBS1gsU0FBTCxDQUFlRCxFQUFmLENBQWtCYSxZQUF6RDtBQUVBQyxrQkFBVSxDQUFDLFlBQU07QUFDZixlQUFJLENBQUNiLFNBQUwsQ0FBZUQsRUFBZixDQUFrQlcsS0FBbEIsQ0FBd0JDLFNBQXhCLEdBQW9DLEtBQXBDO0FBQ0QsU0FGUyxDQUFWO0FBR0Q7QUFDRjtBQUVEOzs7OztvQ0FFZ0I7QUFDZCxXQUFLWCxTQUFMLENBQWVELEVBQWYsQ0FBa0JlLFNBQWxCLENBQTRCQyxHQUE1QixDQUFnQywyQkFBaEM7QUFDRDs7O3dDQUVtQjtBQUNsQixXQUFLZixTQUFMLENBQWVFLFdBQWYsQ0FBMkJjLGdCQUEzQixDQUE0QyxPQUE1QyxFQUFxRCxLQUFLQyxtQkFBTCxDQUF5QkMsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBckQ7QUFDQSxXQUFLbEIsU0FBTCxDQUFlRSxXQUFmLENBQTJCYyxnQkFBM0IsQ0FBNEMsU0FBNUMsRUFBdUQsS0FBS0MsbUJBQUwsQ0FBeUJDLElBQXpCLENBQThCLElBQTlCLENBQXZEO0FBQ0EsV0FBS2xCLFNBQUwsQ0FBZUQsRUFBZixDQUFrQmlCLGdCQUFsQixDQUFtQyxlQUFuQyxFQUFvRCxLQUFLRyxhQUFMLENBQW1CRCxJQUFuQixDQUF3QixJQUF4QixDQUFwRDtBQUNEOzs7MkJBRU07QUFDTCxXQUFLRSxXQUFMO0FBQ0EsV0FBS0MsaUJBQUw7QUFDRDs7Ozs7O0FBR0g7O0FBRUEsSUFBSUMsTUFBTSxDQUFDQyxFQUFYLEVBQWU7QUFDYkQsUUFBTSxDQUFDQyxFQUFQLENBQVVDLGNBQVYsQ0FBeUI7QUFBRTFCLGVBQVcsRUFBWEE7QUFBRixHQUF6QjtBQUNBOztBQUVELENBSkQsTUFJTztBQUNMMkIsVUFBUSxDQUFDVCxnQkFBVCxDQUEwQixrQkFBMUIsRUFBOEMsWUFBTTtBQUNsRCxRQUFNVSxZQUFZLEdBQUdELFFBQVEsQ0FBQ3RCLGFBQVQsQ0FBdUIsb0JBQXZCLENBQXJCOztBQUVBLFFBQUl1QixZQUFKLEVBQWtCO0FBQ2hCLFVBQUk1QixXQUFKLENBQWdCNEIsWUFBaEIsRUFBOEJ6QixJQUE5QjtBQUNEO0FBQ0YsR0FORDtBQU9EIiwiZmlsZSI6Ii4uLy4uLy4uL3Vicy1maXQtcmVzcG9uc2l2ZS91YnMtZml0LXJlc3BvbnNpdmUtcGFja2FnZS9zcmMvbWFpbi9qY3Jfcm9vdC9hcHBzL3Vicy9maXQvcmVzcG9uc2l2ZS9wYXIvYWxlcnRyaWJib24vY2xpZW50bGliL3B1Ymxpc2gvYWxlcnRyaWJib24ucHVibGlzaC5lbnRyeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEFsZXJ0UmliYm9uIHtcbiAgY29uc3RydWN0b3IoZWwpIHtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGVidWdnZXJcblxuICAgIHRoaXMuJGVsZW1lbnRzID0ge1xuICAgICAgZWwsXG4gICAgfTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIHNldEVsZW1lbnRzKCkge1xuICAgIHRoaXMuJGVsZW1lbnRzLmNsb3NlQnV0dG9uID0gdGhpcy4kZWxlbWVudHMuZWwucXVlcnlTZWxlY3RvcignLmFsZXJ0cmliYm9uX19jbG9zZUJ1dHRvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZXZlbnR9IGV2ZW50XG4gICAqL1xuICBzbGlkZUNvbXBvbmVudE91dFVwKGV2ZW50KSB7XG4gICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnQudHlwZTtcbiAgICBjb25zdCBjbG9zZUtleUNvZGVzID0gWzEzLCAzMl07XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAnY2xpY2snXG4gICAgICAgIHx8IChldmVudFR5cGUgPT09ICdrZXlkb3duJyAmJiBjbG9zZUtleUNvZGVzLmluZGV4T2YoZXZlbnQua2V5Q29kZSkgPj0gMCkpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnRzLmVsLnN0eWxlLm1heEhlaWdodCA9IGAke3RoaXMuJGVsZW1lbnRzLmVsLm9mZnNldEhlaWdodH1weGA7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiRlbGVtZW50cy5lbC5zdHlsZS5tYXhIZWlnaHQgPSAnMHB4JztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFRoaXMgbG9naWMgZXhjbHVkZXMgZWxlbWVudCBmcm9tIGtleWJvYXJkIG5hdmlnYXRpb24gZmxvdyAqL1xuICBoaWRlQ29tcG9uZW50KCkge1xuICAgIHRoaXMuJGVsZW1lbnRzLmVsLmNsYXNzTGlzdC5hZGQoJ2FsZXJ0cmliYm9uX19iYXNlLS1oaWRkZW4nKTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuJGVsZW1lbnRzLmNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5zbGlkZUNvbXBvbmVudE91dFVwLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGVsZW1lbnRzLmNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLnNsaWRlQ29tcG9uZW50T3V0VXAuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kZWxlbWVudHMuZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMuaGlkZUNvbXBvbmVudC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5zZXRFbGVtZW50cygpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxufVxuXG5kZWJ1Z2dlclxuXG5pZiAod2luZG93Lm5jKSB7XG4gIHdpbmRvdy5uYy5sb2FkZXJSZWdpc3Rlcih7IEFsZXJ0UmliYm9uIH0pO1xuICAvKlxuICBMb2NhdGlvbiBGaW5kZXIgd29ya2Fyb3VuZCwgc2luY2UgaXQgZG9lc24ndCB1c2UgbmMubG9hZGVyIGZvciBub3cgKDYuMyBSZWxlYXNlKSAqL1xufSBlbHNlIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHtcbiAgICBjb25zdCAkYWxlcnRSaWJib24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYWxlcnRyaWJib25fX2Jhc2UnKTtcblxuICAgIGlmICgkYWxlcnRSaWJib24pIHtcbiAgICAgIG5ldyBBbGVydFJpYmJvbigkYWxlcnRSaWJib24pLmluaXQoKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../../xxx-fit-responsive/xxx-fit-responsive-package/src/main/jcr_root/apps/xxx/fit/responsive/par/alertribbon/clientlib/publish/alertribbon.publish.entry.js\\n");\n\n//# sourceURL=webpack:////Users/bohdan.afanasyev/Projects/xxx-internet-fit/xxx-fit-responsive/xxx-fit-responsive-package/src/main/jcr_root/apps/xxx/fit/responsive/par/alertribbon/clientlib/publish/alertribbon.publish.entry.js?'
            );

            /***/
        },
    },
    [
        [
            "../../../xxx-fit-responsive/xxx-fit-responsive-package/src/main/jcr_root/apps/xxx/fit/responsive/par/alertribbon/clientlib/publish/alertribbon.publish.entry.js",
            "xxx-fit-design/xxx-fit-design-package/src/main/jcr_root/etc/designs/fit/includes/es6-main-publish/clientlib/publish/loader/runtime.publish.bundle.js",
            "xxx-fit-design/xxx-fit-design-package/src/main/jcr_root/etc/designs/fit/includes/es6-main-publish/clientlib/publish/vendors/vendors.corejs/vendors.corejs.bundle.js",
            "xxx-fit-design/xxx-fit-design-package/src/main/jcr_root/etc/designs/fit/includes/es6-main-publish/clientlib/publish/vendors/vendors.default/vendors.default.bundle.js",
        ],
    ],
]);

console.log(`Modules loaded`, webpackJsonp)

1 Ответ

2 голосов
/ 01 июня 2020

Если вы используете веб-пакет для создания приложения, он запускает ваш код записей , когда он будет загружен .

Например, для простого "Hello World" код, вы получите что-то вроде этого

!function(arrayOfEntries) {
  var t = {};

  function runEntryByIndex(n) {
    if (t[n]) return t[n].exports;
    var o = t[n] = {i: n, l: !1, exports: {}};
    return arrayOfEntries[n].call(o.exports, o, o.exports, runEntryByIndex), o.l = !0, o.exports;
  }

  runEntryByIndex.m = arrayOfEntries, runEntryByIndex.c = t, runEntryByIndex.d = function(e, t, n) {
    runEntryByIndex.o(e, t) || Object.defineProperty(e, t, {
      enumerable: !0,
      get: n
    });
  }, runEntryByIndex.runEntryByIndex = function(e) {'undefined' != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: 'Module'}), Object.defineProperty(e, '__esModule', {value: !0});}, runEntryByIndex.t = function(e, t) {
    if (1 & t && (e = runEntryByIndex(e)), 8 & t) return e;
    if (4 & t && 'object' == typeof e && e && e.__esModule) return e;
    var n = Object.create(null);
    if (runEntryByIndex.r(n), Object.defineProperty(n, 'default', {
      enumerable: !0,
      value: e
    }), 2 & t && 'string' != typeof e) for (var o in e) runEntryByIndex.d(n, o, function(t) {return e[t];}.bind(null, o));
    return n;
  }, runEntryByIndex.n = function(e) {
    var t = e && e.__esModule ? function() {return e.default;} : function() {return e;};
    return runEntryByIndex.d(t, 'a', t), t;
  }, runEntryByIndex.o = function(e, t) {return Object.prototype.hasOwnProperty.call(e, t);}, runEntryByIndex.p = '', runEntryByIndex(runEntryByIndex.s = 0);
}([function(e, t) {console.log('Hello World!');}]);

Если вы выполните приведенные выше инструкции, вы увидите, что он запустит функцию, которая содержит console.log("Hello World").

Если мы говорим о зависимостях код, тогда он будет выполнен, когда он вам понадобится. Например, у нас есть два файла «A. js» и «B. js». «A. js» зависит от «B. js»

A. js

console.log("A");
require("./B.js");

B. js

console.log("B");

Если вы создадите это приложение, где A. js будет точкой входа, тогда вы увидите вывод

"A"
"B"

Давайте изменим порядок операторов внутри «A. js»

A. js

require("./B.js")
console.log("A");

В этом случае на выходе будет

"B"
"A"

Webpack также позволяет создавать код библиотеки. Вы можете прочитать об этом здесь https://webpack.js.org/guides/author-libraries/

Если вам интересно, что такое webpackJsonp, вы можете прочитать об этом здесь https://webpack.js.org/configuration/output/#outputjsonpfunction

...