Использование собственных модулей в webpack 2

На данный момент я пытаюсь понять Webpack и AMD. Вот простой пример, который я написал для учебных целей. Мой вопрос в том, как мне получить доступ к модели ()? Это не работает должным образом, потому что консоль моего браузера выдает мне справочную ошибку. Я хочу, чтобы модель находилась в глобальной области.

веб-пакет.config.js:

var path = require('path');
var webpack = require('webpack');

const config = {
    output : {
        filename : '[name].bundle.js',
        path : 'assets'
    },
    entry : {
        main : ['./entry.js']
    }
};

module.exports = config;

тест.html:

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script type="text/javascript" src="assets/main.bundle.js" charset="utf-8"></script>
    </body>
</html>

запись.js:

require("./mod1");

test = new Model();
document.write(test.calculate());

мод1.js:

define([] ,function(){
    return function(){
        function Model() {
            var model = this;

            model.test = "bla";

            model.calculate = function(){
                return model.test + 45;
            }
        }
    }
});

Обновление 1 После некоторых экспериментов я обнаружил, что возврат объекта работает для меня с изменением entry.js

мод1.js:

define([] ,function(){
    var result = new Object();
    result.Model = function(){
        var model = this;

        model.test = "bla";

        model.calculate = function(){
            return model.test + 45;
        }   
    }

    return result;
});

запись.js:

var mod1 = require("./mod1");

var test = new mod1.Model();
document.write(test.calculate());

На данный момент есть новый вопрос. Что делать, если я хочу, чтобы модель была доступна по всему миру?


person Gustavo    schedule 01.03.2017    source источник


Ответы (1)


Функция Model не возвращается. Пытаться

define([] ,function(){
    return function(){
        return function Model() {
            ...
        }
    }
}

Обновлять:

Кроме того, вам нужна переменная для хранения возвращенного модуля. Пытаться:

var mod1 = require("./mod1");

в entry.js, тогда вы сможете var test = new mod1.Model();

Обновление 2:

Удалите функцию обертывания в mod1.js, она должна выглядеть так:

define([] ,function(){
   return function Model() {
       var model = this;

       model.test = "bla";

       model.calculate = function(){
           return model.test + 45;
       }
   }
}); 
person danwellman    schedule 01.03.2017
comment
Это по-прежнему вызывает исключение Uncaught ReferenceError: Модель не определена - person Gustavo; 01.03.2017
comment
Вы видите код из mod1 в сгенерированном main.bundle.js? - person danwellman; 01.03.2017
comment
Да, я могу открыть пакетный файл. Любые подсказки, где искать, почему нет доступа к модели - person Gustavo; 01.03.2017
comment
Результат обновления: mod1.Model не является конструктором. - person Gustavo; 01.03.2017
comment
Тем не менее mod1.Model не является конструктором. - person Gustavo; 02.03.2017
comment
Этот ответ stackoverflow.com/questions/4869530/, указывают, что то, что вы пытаетесь сделать, возможно - person danwellman; 02.03.2017