如何在ExtjS 6/7中导入ES6模块

cyvaqqii  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(312)

我还没有找到任何与这个主题有关的东西。
我想导入pusher,就像其他js框架一样:

npm install pusher-js

然后,您只需导入库:

import Pusher from 'pusher-js';

const Pusher = require('pusher-js');

请分享在ExtJS应用程序中实现这一点的良好实践。
最后的办法是在app.json中包含min文件:...

"js": [            
            {
                "path": "https://js.pusher.com/7.0/pusher.min.js",
                "bundle": true,
                "compress": false
            }
        ], ...

或者更糟的是,将include放在index.html文件中:

<script src="https://js.pusher.com/7.0/pusher.min.js"></script>

有什么主意吗?谢谢。

pinkon5k

pinkon5k1#

如果您不希望使用app.json包含它,则可以在需要时加载它。
异步(onLoad、onError是承诺)

Ext.Loader.loadScript({
    url: 'pusher-js',
    onLoad: successFn,
    onError: errorFn,
    scope: this
});

同步(加载文件后,代码将继续)

Ext.Loader.loadScriptsSync(url|[url]);
  • 可选方法 *

如果您添加Ext.require,ExtJS将尝试加载该文件,您可以在控制器中使用它。

Ext.define('MyApp.view.SomeViewController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.someview',

    init() {
        // Preload additional functionality
        Ext.require('MyApp.libs.pusher-js');

        // from folder ===> MyApp/app/libs/pusher-js
    }
})


读取this作为起点。
使用app.json,您可以将其全部准备为:

"js": [            
            {
                "path": "https://js.pusher.com/7.0/pusher.min.js",
                "remote": true
            }
        ], 
...

在初始化过程中:

var pusher = new Pusher('APP_KEY', {
    cluster: 'APP_CLUSTER'
});

这将自动加载文件,您不必以任何方式导入它。

相关问题