【发布时间】:2018-09-02 19:20:32
【问题描述】:
我有一个非常简单的 Webpack 4 示例,我试图访问我的条目文件中的 jQuery 对象以操作 DOM。我已经把它缩减到我认为是经过广泛研究的最低限度。
我希望该示例在页面加载时将body 的背景颜色设置为青色。似乎无法让它做任何事情。看起来入口文件中暴露的$ 变量与浏览器中的$ 变量不同。
更新 - 问题已解决:我在下面滥用了jQuery。
原始(有缺陷的)入口文件(src/app.js):
import 'jquery';
$(() => {
$('body').bgColor = 'cyan';
});
更正条目文件:
import 'jquery';
$(() => {
$('body').css('background-color', 'cyan');
});
我使用ProvidePlugin 记录的here。这是我的简单webpack.config.js 文件:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require("webpack");
module.exports = {
entry: {
app: './src/app.js',
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new HtmlWebpackPlugin()
],
devtool: 'inline-source-map'
}
Webpack 编译得很好并且页面打开了(使用webpack-dev-server),但是背景颜色并没有像预期的那样变成青色。当我在app.js 文件中记录$('body') 的值时,我得到undefined。
这是package.json 文件:
{
"name": "foo",
"version": "1.0.0",
"description": "",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --inline --open"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^3.2.0",
"webpack": "^4.16.5",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.5"
},
"dependencies": {
"jquery": "^3.3.1"
}
}
感觉我根本不了解这应该如何工作。谢谢。非常感谢您的帮助。
【问题讨论】:
-
jQuery 对象没有
bgColor会影响元素的属性。使用css()方法或访问原生元素$('body')[0] -
是的@charlietfl,谢谢。我的错。将 jQuery 调用更改为使用
css()函数,一切正常。一线希望 - 有一个其他人可以使用的简单示例。我会发布答案并将这段代码放在 Github 的某个地方。