我正在使用 Webpack 2、Bootstrap 3 和 TypeScript,并尝试将 npm 和打包的包集成到现有应用程序中。我正在使用ProvidePlugin使 jQuery 可用,并将expose-loaderjQuery 公开给外部依赖项。
((<any> global).$ = global.jQuery = $;或 webpackmodule: { rules [{}] }配置的任何组合都不起作用,但最终我得到了以下内容:
plugins: ([
// make sure we allow any jquery usages outside of our webpack modules
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
jquery: "jquery",
"window.jQuery": "jquery",
"window.$": "jquery"
}),
]),
Run Code Online (Sandbox Code Playgroud)
条目.ts:
import "expose-loader?$!jquery"
import "expose-loader?jQuery!jquery"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用时,import "bootstrap"我可以$(...).popover()在我的模块内调用,也可以在模块外调用$(...)或jQuery(...),但不能$(...).popover在模块外调用,而是收到此错误:
未捕获的类型错误:$(...).popover 不是函数
如何使添加到 jQuery …
javascript twitter-bootstrap typescript twitter-bootstrap-3 webpack
我正在使用 npm、TypeScript 和 Webpack。
我可以使用Expose Loader来全局公开 jQuery:
import "expose-loader?$!jquery"
import "expose-loader?jQuery!jquery"
Run Code Online (Sandbox Code Playgroud)
然后我可以导入引导程序:
import "bootstrap"
Run Code Online (Sandbox Code Playgroud)
这允许$, jQuery, 和$().popover(jQuery 命名空间中的一个 boostrap 函数)对外部 js 文件或浏览器控制台全局可见。
但是,我找不到以$.ui相同方式公开的方法。
我试过了:
import "jquery-ui" //needs building, from 1.12 on they support importing indivisual modules
import "jquery-ui/ui"
import "jquery-ui-dist/jquery-ui.js"
import "jquery-ui-bundle" //1.12.1 and 1.11.4
import "jqueryui";
Run Code Online (Sandbox Code Playgroud)
一切都是import "jquery-ui-touch-punch"为了最终导入而不会抛出错误......
我已经创建了一个nameOf用于打字稿的简单助手。
function nameOf<T>(name: Extract<keyof T, string>) {
return name;
}
Run Code Online (Sandbox Code Playgroud)
在功能需要代表一个属性的值的字符串,而没有适当类型的,我可以用它的地方,像这样:expectsKey(nameOf<MyObject>("someMyObjectProperty"))。这意味着即使我不控制expectsKey(key: string)我也可以对传递给它的字符串进行某种类型检查。这样,如果MyObject重命名on属性,则该nameOf()调用将显示一个错误,普通函数在执行之前不会检测到。
是否可以将其扩展到嵌套元素?
即,进行某种nameOf<MyComplexObject>('someProperty[2].someInnerProperty')类型检查以确保它与类型的结构匹配的一种方法MyComplexObject?
我正在使用Bootstrap 3并尝试在面板标题的右侧添加一个下拉菜单.我按下了按钮,float:right但是下拉菜单不再呈现连接到按钮.我认为浮动正在打破与下拉菜单的链接.
我已经尝试添加float:right和删除position:absolute(覆盖到position:initial)我可以使按钮出现在按钮旁边,但它最终包含在panel-headerdiv中,它将面板标题扩展到菜单大小.
我能做些什么吗?
这里有一个Bootply:http://www.bootply.com/4jVDGUJMYg