У меня есть init.js
файл, который выполняет некоторую логику, и HTML Import добавляет либо form.html
, либо app.html
к основному файлу.Это позволяет сэкономить время и загружать только те фрагменты кода, которые необходимы в данный момент.Я могу опубликовать код, чтобы проиллюстрировать это при необходимости.
В зависимости от того, какой импорт HTML загружен init.js
, я загружаю сопутствующий скрипт.Например, если загружено form.html
, я также загружаю form.js
.
Я использую Browserify + Babelify, чтобы преобразовать мои скрипты из ES6 в ES5 и создать как минимум 3 пакета: init.js
, form.js
и app.js
.
Вот мойтекущая Gruntfile.js
, где я настраиваю Browserify для использования преобразования Babelify и установки src-dest
отображений:
module.exports = function(grunt) {
require("load-grunt-tasks")(grunt);
grunt.initConfig({
browserify: {
init: {
src: 'src/scripts/init.js',
dest: 'dist/scripts/init.js'
},
form: {
src: 'src/scripts/form.js',
dest: 'dist/scripts/form.js'
},
options: {
transform: [
['babelify', {
"global": true,
presets: [
["es2015"]
]
}]
],
browserifyOptions: {
debug: true,
sourceType: 'unambiguous'
}
}
}
});
grunt.registerTask('default', ['browserify']);
}
Мой сценарий инициализации использует ES6 Импорт / Экспорт и экспортирует userData
для использования в form.js
:
'use strict';
export let userData = null;
(function() {
// do some stuff and assign value to userData
})();
Когда form.html
импортируется, form.js
загружает и импортирует userData
из init.js
:
// form.js
import {userData} from './init';
Проблема заключается в том, что вместо импорта просто userData
, form.js
импортирует весь init.js
, импортируется и связывается, поэтому я случайно импортирую весь скрипт, когда мне просто нужна одна именованная переменная.
Я попытался включить параметр global: true
вВарианты задач gruntfile и экспериментировали с различным синтаксисом импорта / экспорта.
Для точности я также использую некоторые заливки в заголовке моего основного файла index.html, чтобы получить веб-компоненты, HTML-импорт и Browserify, которым требуется синтаксис, чтобы заставить код работать в браузерах, помимо Chrome.
//index.html
<head>
<script type="text/javascript" src="src/scripts/helper/webcomponents-loader.js"></script>
<script type="text/javascript" src="src/scripts/helper/html-imports.min.js"></script>
<script src="node_modules/requirejs/require.js"></script>
</head>
<body>
<script src="dist/scripts/init.js"></script>
</body>
Я новичок в использовании Babelify, Browserify и синтаксиса модулей ES6, но, возможно, есть конфигурация option
, которую мне не удается реализовать.
Вероятно, мне не хватает основной информации или что-то не так на уровне ядра.
Я просто не могу понять или исправить причину, когда я пытаюсь импортировать один файл с именеммодуль, который в итоге импортирует весь скрипт.
Я что-то упустил?