Как включать файл язык сценариев JavaScript в другой файл Javascript, не используя JQuery?

Я хотел бы знать, как я могу включать функциональность файла .js с другого файла .js, не используя jQuery. Так как я увидел какие-то решения, но используя jQuery, и то, что интересует меня, состоит в том, чтобы знать, могу ли я импортировать это с чистым языком сценариев JavaScript.

19
задан 29.12.2016, 17:09
4 ответа

Когда рукописный шрифт JS загружает вместе с другими на странице HTML, он имеет доступ к переменным и методам остального scripts.

Именно поэтому ты можешь импортировать библиотеку как JQuery

<script src="jquery.js"></script>

И в другом рукописном шрифте (miarchivo.js) что ты создал писать:

$("div").hide(); // cualquier código que use JQuery

Это, не будучи должен делать "import" или что-то сходное, это проистекает того, что scripts загружаются глобально. Но также нужно считать что, если твоя программа зависит от другого рукописного шрифта, нужно загружать эту зависимость сначала.

В ES6 появилась новая функция языка сценариев JavaScript, который это модули, эти позволяют тебе экспортировать код с функциональностью, которую ты желаешь, и которая может быть загруженной в других программах, здесь пример:

//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5

У этой формы есть преимущество в том, чтобы включать encapsulamiento, а именно, что ты только выставляешь необходимое и не весь код, он позволяет создание библиотек и облегчает управление зависимостей от приложения.

20
ответ дан 01.12.2019, 08:14
  • 1
    Синтаксис import и export м и # 243; dulos ES6 он не решает проблему загружения м и # 243; dulo (я модулировал loading). Если вопрос - на нагруженных деньгах и # 225; обезьяна м и # 243; dulos вероятно отнеситесь к чему-то как require.js, что верно podr и # 237; чтобы сочетаться с ES6, чтобы загружать файл / в м и # 243; dulo деньги и # 225; micamente. – Edwin Dalorzo 18.12.2015, 20:52

Быстрое решение, хотя уродливая: напиши файл прямо в документе используя команду document.write(). Если рукописный шрифт, который это называет, работает синхронной формы, не было бы проблемы (потому что, если ты делаешь один document.write() когда страница была загружена, контент страницы будет заменен тем, что ты напишешь).

Например: представь, что у тебя есть файлы codigo1.js, codigo2.js и codigo3.js; тогда ты мог бы создавать файл больше incluir.js, который включал бы все их:

document.write('<script src="codigo1.js"></script>');
document.write('<script src="codigo2.js"></script>');
document.write('<script src="codigo3.js"></script>');

И они будут работать последовательным способом (codigo3.js у него был бы код, который ты хочешь выполнить, и который использует функции / переменные / и т.д. codigo1.js и codigo2.js).


Более красивая форма состояла бы в том, чтобы создавать твою собственную функцию, не волнуя тебя, если он называется синхронным или асинхронным способом:

function importarScript(nombre) {
    var s = document.createElement("script");
    s.src = nombre;
    document.querySelector("head").appendChild(s);
}

И звонить в функцию каждый раз, когда ты захотел иметь значение:

importarScript("codigo1.js");
importarScript("codigo2.js");
importarScript("codigo3.js");

Эти решения простые, но у них есть проблема: методы и переменные импортируемого файла не доступны в файле, который импортирует их (хотя да в следующих). Например, если ты имеешь incluir.js с этим кодом:

x = 4;
importarScript("codigo1.js");
console.log(x);

И в codigo1.js ты имеешь:

x = 5;

Результата в консоли языка сценариев JavaScript будет "4", хотя ты конечно надеялся, что его "5". Чтобы это решать, что ты можешь делать, состоит в том, чтобы завертывать код внутри функции и перемещать ее как параметр, чтобы делать его callback, когда файл будет загружен.

В этом случае код importarScript он изменился бы немного:

function importarScript(nombre, callback) {
    var s = document.createElement("script");
    s.onload = callback;
    s.src = nombre;
    document.querySelector("head").appendChild(s);
}

И код в incluir.js перешел бы к тому, чтобы быть:

x = 4;
importarScript("codigo1.js", scriptCargado);

function scriptCargado() { 
    console.log(x); 
}

Сейчас код incluir.js не работает до тех пор, пока codigo1.js он не был загружен (потому что он называется в методе onload рукописного шрифта) и результата в консоли языка сценариев JavaScript "5".

11
ответ дан 01.12.2019, 08:14

SoluciГіn "простой":

, Если javascript составляет часть документа HTML, ты можешь использовать просто этикетку со свойством src.

<SCRIPT src="archivo.js"></SCRIPT>

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

<SCRIPT>
Codigo...
</SCRIPT>

<SCRIPT src="archivo.js">
</SCRIPT>

<SCRIPT>
Codigo...
</SCRIPT>

не является очень элегантным, но самая простая, она aГ±ado только, потому что никто это не сделал. В любом случае я рекомендую тебе читать ответ Альваро Монторо.

5
ответ дан 01.12.2019, 08:14

С этим cГіdigo: $.getScript("script.js"); ты включаешь .js внутри другого .js

3
ответ дан 01.12.2019, 08:14
  • 1
    Этот soluci и # 243; n используй jQuery, когда в вопросе он становится понятным expl и # 237; citamente, что не был использован. – Mariano 03.10.2016, 06:47

Включать файл javascript внутри другого файла javascript, не используя книжного магазина jquery, ты можешь использовать эту функцию только javascript.

 function loadScript(url, callback){

        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = url;
        script.onreadystatechange = callback;
        script.onload = callback;
        head.appendChild(script);
    }

Где url - маршрут файла и callback, это функция с кодом javascript, который ты хочешь выполнить, после того, как он нагрузил.

Вызов был бы таким:

loadScript("MiArfchivoJavascript.js", MiArchivoCargado);

и функция нечто похожее:

function MiArchivoCargado(){
     alert('MiArchivoJavascript.js ya ha sido cargado');
}
7
ответ дан 03.12.2019, 23:18
  • 1
    он мне кажется, что эта serí в правильный ответ на вопрос, так как он использует javascript сигару, чтобы импортировать архивы. –  03.03.2017, 17:52

Метод, указанный Бернар Спаин, добро реализует задание, которое ты просишь, с javascript сигара

Но ты должен уточнять, что ты требуешь, итак, если импорт, ты делаешь ее с твоего приложения к другому файлу в твоем server, это было бы достаточным, но если ты должен приносить файлы js, что они живут на другом сервере, и существует риск отсутствия в наличии, и подпираешь, если ты нуждаешься, асинхронный груз, и кодировать событие "законченный груз exitosamente" для файлов, которые они, может быть, могли бы отсрачивать, тогда уже ты нуждаешься в книжном магазине, который осуществляли бы главный файл ADM, как RequireJS, или inbuilt новых версий JS, которые все еще в дату не вынесены как in built в большинстве браузеров

3
ответ дан 03.12.2019, 23:18