webpack捆绑wysiwyg文本编辑器jquery插件
Bundling wysiwyg text editor jquery plugin with webpack
我正在使用一个遗留的jquery/bootstrap webapp,我正在把它变成一个node.js/webpack项目。我能够让它的大部分工作,但对于一个元素,wysiwyg文本编辑器。
最初项目使用这个编辑器,但它不再维护,我无法从github上获得npm install。这时,我开始在谷歌上搜索fu,想找到一个可插入的替代品,然后找到了这个。
它在全局命名空间中需要把手和范围,但这并不是结束。到目前为止,无论我做了什么,我都无法克服这个错误:
vendor.bundle.js:13993 Uncaught TypeError: Cannot read property 'fn' of undefined
,违规行是:
$.fn.wysihtml5
这是我不明白的,因为jquery是在全局命名空间,为什么它是"未定义"?
var App = function() {
var uiInit = function() {
$('.textarea-editor').wysihtml5();
};
return {
init: function() {
uiInit();
}
};
}();
$(function(){ App.init(); });
package.json:
{
"name": "wysihtml-problem",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "webpack-dev-server"
},
"author": "fbielejec",
"license": "LGPL",
"dependencies": {
"jquery": "^2.2.0",
"handlebars": "^4.0.5",
"rangy": "^1.3.0",
"bootstrap3-wysihtml5-commonjs": "0.0.4"
},
"devDependencies": {
"html-webpack-plugin": "^2.7.1",
"webpack": "^1.12.11",
"webpack-dev-server": "^1.14.1"
}
}
webpack.config.js:
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: {
app: "./app.js",
vendor: ["jquery", "rangy", "wysihtml5"],
},
output: {
path: __dirname + '/dist',
filename: "bundle.js"
},
resolve: {
alias: {
handlebars: 'handlebars/dist/handlebars.min.js',
rangy: "rangy/lib/rangy-core.js",
wysihtml5: "bootstrap3-wysihtml5-commonjs",
}
},
plugins: [
new HtmlWebpackPlugin({
title: "wysihtml-webpack"
}),
new webpack.optimize.CommonsChunkPlugin(chunkName = "vendor", filename = "vendor.bundle.js"),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
'window.jQuery': "jquery",
rangy: "rangy",
})
]
};
看起来像jQuery试图自省环境,如果它看到环境有一个模块系统(并且它从Webpack中找到一个),它不会污染全局命名空间。
使用以下代码获取对jQuery对象的引用:
var $ = require('jquery')
您也可以在window
上手动分配$
:
window.$ = require('jQuery')
,但使用第一个选项是更可取的,因为它会产生更易于维护的代码,并允许进一步的优化(例如webpack,它的模块使用jQuery并相应地将bundle分成几个块)。
相关文章:
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- JQuery-无法读取属性'编辑器'的未定义
- JQuery文本编辑器-在工具栏中添加其他下拉列表
- CKEditor编辑器.resize()在jQuery中不起作用
- jQuery数据表编辑器未初始化
- 使用JQUERY/Javascript获取DotNetNuke文本编辑器HTML值
- 在 jquery te 文本编辑器中添加特殊字符选项
- 无法使用 jQjery 从文本编辑器 (jQuery Text Edior) 获取值
- 使用jQuery(简单文本编辑器)为文本区域添加值
- 使用 JavaScript 更改 JQuery 所见即所得编辑器的内容
- 如何正确显示由 Redactor JQuery 编辑器编辑的数据
- 如何使用jquery在按钮单击上实现全屏编辑器
- 使用 Jquery 操作 html 字符串(在 Angular 应用程序中用于所见即所得编辑器)
- 在 PHP 页面上加载富文本编辑器 (TinyMCE) 的 jquery 插件时显示加载动画
- 另一个就地编辑器 - 一个jQuery就地编辑插件
- 你能使用jQuery'吗;s拖动n'放入所见即所得编辑器
- Sitecore8体验编辑器和jquery
- 在父容器上使用克隆的Jquery拖放照片编辑器
- Jquery图像编辑器或在我上传的图像上添加文本
- webpack捆绑wysiwyg文本编辑器jquery插件