2016-10-13 7 views
1

Если у меня есть файл ES6 JS (test.js) ...ES6 Экспорт и импорт функции

export default function() { 
    let foo = "test" 
    return foo 
} 

С Бабеля, является возможным transpile и вызвать его в файле index.html

<script src="js/text-min.js"></script> 

И начать использовать функцию без необходимости импортировать ее в другой файл js? Для примера. следующий тег скрипта будет иметь следующий код. Это используется с Webpack -

<script> 
    var bar = new foo(); 
    console.log(bar); 
</script> 
+1

Конечно, используйте параметры, чтобы выставить значение по умолчанию в качестве переменной по вашему выбору. – Bergi

ответ

0

transpiled версия приведенного выше кода производит, как это,

"use strict"; 

    Object.defineProperty(exports, "__esModule", { 
    value: true 
    }); 

    exports.default = function() { 
    var foo = "test"; 
    return foo; 
    }; 

Как вы можете видеть, это добавить свойство экспортировать объект с именем __esModule. Ничего больше. Таким образом, у вас нет способа включить эту функцию по умолчанию без использования импорта или запроса.

+0

, если я хочу создать один файл, перекодированный плагин, в этом случае должен быть импорт до пересылки? будут ли свойства доступны в качестве файла? – Yasir

+0

Если я использую babel/webpack, чтобы свести к одному файлу, можно ли тогда прикрепить его как скрипт и методы доступа из сжатого файла в другой файл? – Yasir

+0

@Yasir Итак, вы используете webpack? Вы должны были это сказать. – Bergi

0

Что вы на самом деле ищете, это глобальная переменная (что, вероятно, не является отличной идеей). Например:

Модуль 1:

import {foo} from 'foo'; // still an ES6 module, just no export 

// global variable 'bar' 
window.bar = (...args) => foo(...args) + 6; 

Затем в Модуль 2:

bar(1, 3, 5); 

Заметим, что это подрывает весь смысл использования модулей и должны быть использованы очень экономно.

+0

это имеет смысл. предполагаемый конечный вариант использования - рассматривать es6 как es5 js, который вы добавляете через тег скрипта. идея заключается в том, что у вас есть es6 способ сделать это, экспортировать/импортировать и стандартный способ es5. intenedd быть плагином. – Yasir

+0

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