Импортировать модули в языке сценариев JavaScript

Я пробую импортировать модуль в языке сценариев JavaScript. В python, так как это просто, просто ты импортируешь то, что ты желаешь с import.

В javascript по-видимому также покажись простым. В моем случае, я пробую осуществлять пример, который выходит в Using язык сценариев JavaScript code, модулируй

Однако, у меня появляется эта ошибка в google chrome Uncaught ReferenceError: Components is not defined. Что я буду вредить?

my_module.jsm

var EXPORTED_SYMBOLS = ["foo", "bar"];

function foo() {
  return "foo";
}

var bar = {
  name : "bar",
  size : 3
};

var dummy = "dummy";

test.js

Components.utils.import("resource://my_module.jsm");

alert(foo());         // displays "foo"
alert(bar.size + 3);  // displays "6"
alert(dummy);         // displays "dummy is not defined" because 'dummy' was not exported from the module

test.html



  
    
    
  
  
    

hola

3
задан 05.02.2016, 04:07
3 ответа

Components он не является стандартным и Ваше в стадии строительства Веб использование не рекомендовалось согласно сайту Mozilla Девелопер Нетворк (MDN).

Перевод страницы об объекте Components в MDN:

Не стандарт

Будьте характерной он не является стандартным и не в планах, которых он был бы стандартным. Не использовать на веб-страницах в производстве: оно не будет функционировать для всех пользователей. Может быть также многочисленная несовместимость и Ваше поведение может меняться в будущем.

Внимание:

Этот объект не разработан, чтобы прокручивать изображение в окне с привилегиями chrome. Выставлять этот объект в Веб было ошибка. Если ты используешь этот объект в твоем веб сайте: твоя страница может ломаться в любом моменте! В настоящих версиях Firefox только несколько интерфейсов, потребованных для Вашего функционирования активные. Не используй Components!

2
ответ дан 24.11.2019, 14:55

Components он не является стандартным, однако ты мог бы использовать ES6 и Babel + Webpack чтобы реализовывать imports.

2
ответ дан 24.11.2019, 14:55

Забудь Components, он не является стандартным, но я предлагаю тебе альтернативу, где ЕСЛИ возможно импортировать другой файл язык сценариев JavaScript используя средства стандартно, этот прием, который я изучил в первоначальном SO:

// declaras un función que agregue el script a la cabecera del HTML
// y te notifique cuando el archivo termino de cargarse
function import(url, callback)
{
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    // compatibilidad cross browser 
    script.onreadystatechange = callback;
    script.onload = callback;
    head.appendChild(script);
}

// ... así se usa

import("url/del/archivo.js", function() {
  // aqui ya se cargo el script, de forma global, como cualquier otro.
});

Почти такой легкий как import в pyton, только, что асинхронный :P

Конечно, также ты имеешь в jQuery.getScript(), или даже используя Ajax чтобы загружать код язык сценариев JavaScript.

Есть формы, которые функционируют во всех браузерах.

Конечно, Components не будет не функционировать ни в Chrome ни в других браузерах, это не будет часть настоящего стандарта (Living стандарт).

Это сделано для jsm, что javascript модульный, предмет, свойственный Gecko, чтобы увеличивать Firefox.

5
ответ дан 24.11.2019, 14:55
  • 1
    Но это не было бы что-то как то же самое, что и <script src="url/del/archivo.js"></script>? и с другой стороны, как har и # 237; если я только хочу импортировать переменную или funci и # 243; n определи модуля? – Javier Cárdenas 05.02.2016, 23:46
  • 2
    @JavierC и # 225; rdenas это позволяет тебе загружать javascript с другого javascript, что ты говоришь, состоит в том, чтобы загружать javascript с html и с другой стороны, любую переменную " global" (что был объявлен в теле файла ej: var nombreVar = 1;) он будет доступным со всех нагруженных scripts, они глобальные. – rnrneverdies 06.02.2016, 03:38