UMD / AMD解决方案
对于那些通过UMD进行操作并通过以下方式进行编译的人require.js
,有一个简单的解决方案。
在需要tether
作为依赖项,Tooltip
作为UMD 加载的模块中,在模块定义之前,只需在Tether的定义中添加简短的代码段即可:
// First load the UMD module dependency and attach to global scope
require(['tether'], function(Tether) {
// @todo: make it properly when boostrap will fix loading of UMD, instead of using globals
window.Tether = Tether; // attach to global scope
});
// then goes your regular module definition
define([
'jquery',
'tooltip',
'popover'
], function($, Tooltip, Popover){
"use strict";
//...
/*
by this time, you'll have window.Tether global variable defined,
and UMD module Tooltip will not throw the exception
*/
//...
});
实际上,这个简短的代码片段可以放在应用程序的任何更高级别上,这是最重要的-在实际使用bootstrap
具有Tether
依赖关系的组件之前先调用它。
// ===== file: tetherWrapper.js =====
require(['./tether'], function(Tether) {
window.Tether = Tether; // attach to global scope
// it's important to have this, to keep original module definition approach
return Tether;
});
// ===== your MAIN configuration file, and dependencies definition =====
paths: {
jquery: '/vendor/jquery',
// tether: '/vendor/tether'
tether: '/vendor/tetherWrapper' // @todo original Tether is replaced with our wrapper around original
// ...
},
shim: {
'bootstrap': ['tether', 'jquery']
}
UPD:在自举4.1稳定他们取代系绳,与Popper.js,看到上使用的文档。