Я немного смущен, что делать здесь. Я видел, как многие люди создают модули в JS, но каждый обычно делает это по-другому. Я видел, как люди обертывают свой модуль WHOLE в (function(){})();
или объявляют объектный литерал или делают что-то безумное, как window.Module = {};
. Я хочу знать, какой будет лучший выбор для использования (как в том, что вы считаете наиболее полезным). Помощь будет действительно оценена, и спасибо.Как будет создан JS-модуль?
ответ
Я бы сказал: это зависит от конечного использования вашего «модуля». Если это что-то, что будет использоваться внутри страны, а это значит, что никто из вас не будет использовать его, тогда все может быть использовано до тех пор, пока вы все согласны с правильным методом. В противном случае, если он будет использоваться другими: менее глобальные переменные вы создадите, тем лучше. Например, jQuery использует «$» и «jQuery» как глобальные переменные (возможно, другие, но я не уверен). Когда люди добавляют к нему модули, они всегда добавляют их к window.jQuery.[Under jQuery var]
, где [Under jQuery var]
должны быть прочитаны в документации jQuery для правильного использования.
Существует только одно официальное решение для создания модулей JavaScript. Все, что вы видели, это либо полипол для этого решения, либо бледное эхо реальной вещи.
Базовый синтаксис как так:
import otherStuff from "otherStuff.js";
var myThing = {};
myThing.stuff = function(){ /*...*/ };
myThing.do = function(){ otherStuff.doOther(););
export default myThing;
Он может получить гораздо сложнее, но основы:
- Ваш модуль должен быть уникальным файлом. Файл - это модуль.
- Ваш модуль должен , вероятно, экспортировать что-то, хотя это не является абсолютно необходимым.
Это идет по трубопроводу в JavaScript. К сожалению, никто не смог договориться о официальном описании того, как загружает модули, поэтому они не находятся на пути к выпуску ближайшей версии. Тем не менее, спецификация under development и полиполк, который ее реализует has been created.
Лучше всего использовать официальный синтаксис модуля - запустить его через BabelJS и скомпилировать его под размер, например Require (который использует формат AMD), чтобы вы могли использовать его без спецификации загрузчика.
Можете ли вы ответить мне, почему многие люди, которых я вижу, отвечают за ECMAScript6, даже если это не один год? Разве мы не должны рассматривать более широкое решение? –
@MasterDJon, спецификация модуля ECMAScript2015 была завершена в течение [почти 2 лет] (https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-07/jul-30.md) и имеет разрабатывались гораздо дольше, чем это. Это часть спецификации языка. Я не уверен, насколько более широким вы можете воспользоваться, чем «использовать официальную спецификацию языка, которая будет реализована в любой среде исполнения JS когда-либо». Отсутствие поддержки теперь рассматривается в моем ответе через транспилеры, такие как Babel. – rockerest
@MasterDJon «Разве мы не должны рассматривать более широкое решение?» --- Конечно, возможно. Также можно использовать w3m и lynx в качестве поддерживаемых браузеров, а другие будут использовать только современные современные стандарты. – zerkms
«лучший» с какой точки зрения? Ничто не является абсолютно идеальным. – zerkms