Перенос старых модулей Backbone в модули es6.

У меня есть все эти модули, которые объявлены таким образом на основе переменной Global app, которая затем объединяется через gulpfile

view1.js

var app = app || {}
app.View1 = Backbone.View.extend({});

view2.js

var app = app || {}
app.View1 = Backbone.View.extend({});

Поэтому я ссылаюсь между файлами, используя:

var app = app || {};
new app.View1();
new app.View2();

На данный момент этот подход устарел.

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

view1.js

import Backbone
export default = Backbone.View.extend({});

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

import * as _ from "underscore";
import Backbone from "Backbone";
import * as LoginModal from "../views/loginModal";
import Router from "./router";

new LoginModal();
new Router();
Backbone.history.start({
    pushState : true,
    hashChange : false
});

Проблема в том, что в LoginModal различные глобальные переменные, такие как _ или $, не определены. Любая идея о том, как сохранить оба типа модулей и связать их вместе?


person steo    schedule 20.10.2017    source источник


Ответы (2)


В вашем основном файле вы можете импортировать jQuery и _ и назначить их Backbone следующим образом:

import $ from "jquery";
import _ from "underscore";

Backbone.$ = $;
Backbone._ = _;

А затем в других ваших файлах вы можете просто использовать Backbone.$ и Backbone._ для использования underscore или jquery.

ИЛИ импортируйте их только как зависимости в файлы, которые используют underscore или jQuery. Это правильный способ сделать это.

person Win    schedule 20.10.2017
comment
ммм, это может сработать, но я бы не хотел изменять все старые файлы - person steo; 20.10.2017
comment
ну, вам нужно будет import _ from "underscore" и import $ from "jquery" в файлах, которые вы использовали тогда. Это единственные два варианта. - person Win; 20.10.2017

Вы можете определить некоторые глобальные переменные в параметрах Browserify: Определение глобальной переменной для Browserify

В webpack есть ProvidePlugin для глобальных модулей.

person antejan    schedule 30.10.2017