jQuery UI $(...).sortable不是WebPack的函数

Chu*_*utt 10 javascript npm webpack

我相信我已经正确设置了所有内容,但我在Webpack中遇到了一个奇怪的问题.

考虑这个简单的app.ts文件:

'use strict';

import $ = require('jquery');
import 'jquery-ui';

$(function() {
    $( "#sortable" ).sortable();
});
Run Code Online (Sandbox Code Playgroud)

一切都编译好,但当网站运行时,它抱怨说Uncaught TypeError: $(...).sortable is not a function.(sortable是一个jQuery UI函数).

当我改为链接到CDN托管版本的jQuery和jQuery UI时,一切正常,但是当我使用JS模块和Webpack时它不起作用.为什么是这样?

为什么jQueryUI函数sortable()无法识别?

Chu*_*utt 17

问题是jQuery UI通常会自动拉入它需要的组件(这就是它通过CDN链接时的工作原理),但是当它作为模块导入时(例如Webpack),它不起作用.

值得庆幸的是,从jQuery UI 1.11开始,您可以手动拉入所需的任何额外组件,如下所示:

'use strict';

import $ = require('jquery');

require('jquery-ui');
require('jquery-ui/ui/widgets/sortable');
require('jquery-ui/ui/disable-selection');
Run Code Online (Sandbox Code Playgroud)

等等

以下是一些官方文档,进一步解释了这一点.