使用非npm(遗留)javascript库与Jspm

Zve*_*tko 5 javascript node.js backbone.js aurelia jspm

我正在尝试整合这个非npm的.我已经多次失败,因为我总是因为使用一些现代框架而茁壮成长,这使我无法整合.

我尝试使用require.js的backbone.js,甚至是Dart,现在我顽固地尝试使用gulp,jspm,aurelia来实现同样的目标.问题是这个库可能不遵循模块概念.我对这个lib的初始化有很多问题,做了很多补偿.

所以问题是如何使用这种类型的库.同时使用现代方法构建javascript应用程序.

Yoa*_*oni 2

查看代码后,我得到了它的工作(我使用了require.js,但你可以使用任何你喜欢的):

// main.js
////////////////
require(['mapy-loader'], function (Loader) {
    // load mapy async and wait for it to finish
    Loader.async = true;
    Loader.load(null, null, function () {
        var stred = SMap.Coords.fromWGS84(14.41, 50.08);
        var mapa = new SMap(JAK.gel("mapa"), stred, 10);
        mapa.addDefaultLayer(SMap.DEF_BASE).enable();
        mapa.addDefaultControls();
    });
});
Run Code Online (Sandbox Code Playgroud)
<!doctype html>
<html>
<head>
    <script data-main="main.js" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js"></script>
    <script>
        requirejs.config({
            paths: {
                "mapy-loader": "//api.mapy.cz/loader"
            },
            shim: {
                'mapy-loader': {exports: 'Loader'}
            }
        });
    </script>
</head>

<body>
<div id="mapa" style="width:600px; height:400px;"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

(它不会在此处的代码片段中运行,因为 JavaScript 应放置在名为 的文件中main.js


编辑:

添加 jspm / System.js 片段:(
main.js更改)

// main.js
////////////////
define(['mapy-loader'], function (Loader) {
    // load it async and wait for it to finish!
    Loader.async = true;
    Loader.load(null, null, function () {
        var stred = SMap.Coords.fromWGS84(14.41, 50.08);
        var mapa = new SMap(JAK.gel("mapa"), stred, 10);
        mapa.addDefaultLayer(SMap.DEF_BASE).enable();
        mapa.addDefaultControls();
    });
});
Run Code Online (Sandbox Code Playgroud)
<!doctype html>
<html>
<head>
    <script src="jspm_packages/system.js"></script>
    <script>
        System.config({
            baseURL: "/",
            defaultJSExtensions: true,
            transpiler: "babel",
            paths: {
                "mapy-loader": "//api.mapy.cz/loader"
            },
            meta: {
                'mapy-loader': {
                    format: 'global',
                    exports: 'Loader'
                }
            }
        });
    </script>
    <script>
        System.import('main.js');
    </script>
    Run
</head>

<body>
<div id="mapa" style="width:600px; height:400px;"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)