2016-05-17 6 views
1

Я немного смущен, что делать здесь. Я видел, как многие люди создают модули в JS, но каждый обычно делает это по-другому. Я видел, как люди обертывают свой модуль WHOLE в (function(){})(); или объявляют объектный литерал или делают что-то безумное, как window.Module = {};. Я хочу знать, какой будет лучший выбор для использования (как в том, что вы считаете наиболее полезным). Помощь будет действительно оценена, и спасибо.Как будет создан JS-модуль?

+1

«лучший» с какой точки зрения? Ничто не является абсолютно идеальным. – zerkms

ответ

1

Я бы сказал: это зависит от конечного использования вашего «модуля». Если это что-то, что будет использоваться внутри страны, а это значит, что никто из вас не будет использовать его, тогда все может быть использовано до тех пор, пока вы все согласны с правильным методом. В противном случае, если он будет использоваться другими: менее глобальные переменные вы создадите, тем лучше. Например, jQuery использует «$» и «jQuery» как глобальные переменные (возможно, другие, но я не уверен). Когда люди добавляют к нему модули, они всегда добавляют их к window.jQuery.[Under jQuery var], где [Under jQuery var] должны быть прочитаны в документации jQuery для правильного использования.

2

Существует только одно официальное решение для создания модулей 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), чтобы вы могли использовать его без спецификации загрузчика.

Подробнее о синтаксисе here и here.

+0

Можете ли вы ответить мне, почему многие люди, которых я вижу, отвечают за ECMAScript6, даже если это не один год? Разве мы не должны рассматривать более широкое решение? –

+0

@MasterDJon, спецификация модуля ECMAScript2015 была завершена в течение [почти 2 лет] (https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-07/jul-30.md) и имеет разрабатывались гораздо дольше, чем это. Это часть спецификации языка. Я не уверен, насколько более широким вы можете воспользоваться, чем «использовать официальную спецификацию языка, которая будет реализована в любой среде исполнения JS когда-либо». Отсутствие поддержки теперь рассматривается в моем ответе через транспилеры, такие как Babel. – rockerest

+0

@MasterDJon «Разве мы не должны рассматривать более широкое решение?» --- Конечно, возможно. Также можно использовать w3m и lynx в качестве поддерживаемых браузеров, а другие будут использовать только современные современные стандарты. – zerkms