вопрос
Существуют ли какие-либо различия в модульных javascript по сравнению со старыми самопризываемыми функциями и объявленными сценариями, которые могут помешать выполнению некоторого основного кода Javascript?
Это:
<!-- modern, modular js/html -->
<body>
<script src="main.js" type="module"></script>
</body>
... против этого:
<body>
<script src="somefile.js"></script> <!-- self invoking js -->
<script src="anotherfile.js"></script> <!-- self invoking js -->
<script src="anotherfile.js"></script> <!-- self invoking js -->
</body>
предисловие
Я работаю с несколько устаревшей JavaScript визуальной библиотекой под названием Next-UI . Большая часть документации, файлов и тому подобного не обновлялась в течение нескольких лет.
Во всех примерах для работы с ней используются старые объявления <script>
, а самовозглашающиеся функции или имеют монолитный c основные файлы скриптов.
Я пытаюсь быть более дальновидным, используя современные модульные javascript, включая такие вещи, как:
<script src="./main.js" type="module"></script>
- named & default import
- именованные и экспорт по умолчанию
Я не использую 'use strict'
нигде в моем коде, ни импортированный код
проблема
Я столкнулся с проблемой, из-за которой при копировании кода из примера он может работать в Codepen пример , но не будет работать в моей локальной среде. Я проследил проблему до класса , который я определяю:
nx.define(<class name>, <some nx.class to inherit>, { ...some new stuff and overrides })
Внутри вновь определенных процедур и методов вы можете увидеть что-то вроде этого:
nx.define("MyNode", nx.graphic.Topology.Node, {
methods: {
setModel: function(model) {
this.inherited(model);
var status = model.get('status') || 'normal';
this.view('status').set('src', statusIconMap[status]);
}
})
Когда он вызывает это this.inherited(model);
, я могу проследить ошибку до этого бита кода this.inherited.caller.__super__;
, где caller
равно null
Единственные различия в коде и моем Проект заключается в том, что я строю его модульно и использую live-сервер для обслуживания через мой локальный хост.