Jun*_* Gu 29 javascript jquery node.js twitter-bootstrap webpack
我刚刚开始学习使用Webpack(之前我只是使用手动方式单独包含单个脚本).我用来bootstrap-loader加载bootstrap.这是我的webpack.config.js
var path = require("path")
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')
module.exports = {
context: __dirname,
entry: './assets/js/index', // entry point of our app. assets/js/index.js should require other js modules and dependencies it needs
output: {
path: path.resolve('./assets/bundles/'),
filename: "[name]-[hash].js",
},
plugins: [
new BundleTracker({filename: './webpack-stats.json'})
],
module: {
loaders: [
{ test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'}, // to transform JSX into JS
{ test: /\.css$/, loader: 'style-loader!css-loader'}, // to transform css
// images
{ test: /\.png$/, loader: 'url-loader?limit=100000'},
{ test: /\.jpg$/, loader: 'file-loader'},
// bootstrap image files
{ test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'},
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream'},
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'}
],
},
resolve: {
modulesDirectories: ['node_modules', 'bower_components'],
extensions: ['', '.js', '.jsx'],
jquery: './vendor/jquery/jquery.js',
},
}
Run Code Online (Sandbox Code Playgroud)
这是我的entry.js
global.jQuery = global.$ = require('jquery');
require('bootstrap-loader');
Run Code Online (Sandbox Code Playgroud)
这似乎有效.但是,之前我使用过这个并没有用:
window.jQuery = window.$ = require('jquery');
Run Code Online (Sandbox Code Playgroud)
我找到了这么多人建议的上面一行.但我只是在加载页面时遇到错误.只是一些例子:一些SO问题,webpack问题,另一个SO问题.
后来我发现了这个问题,这个问题.因此该页面实际上也可以使用bootstrap js功能.
我将添加我的package.json以防它是相关的:
{
"author": "franklingu",
"dependencies": {
"babel": "^6.5.2",
"babel-core": "^6.13.2",
"babel-loader": "^6.2.4",
"bootstrap-loader": "^1.2.0-beta.1",
"bootstrap-sass": "^3.3.7",
"extract-text-webpack-plugin": "^1.0.1",
"jquery": "^3.1.0",
"node-sass": "^3.8.0",
"resolve-url-loader": "^1.6.0",
"sass-loader": "^4.0.0",
"webpack": "^1.13.1",
"webpack-bundle-tracker": "0.0.93"
},
"devDependencies": {
"babel-core": "^6.13.2",
"babel-loader": "^6.2.4",
"css-loader": "^0.23.1",
"file-loader": "^0.9.0",
"node-sass": "^3.8.0",
"resolve-url-loader": "^1.6.0",
"sass-loader": "^4.0.0",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"webpack": "^1.13.1"
}
}
Run Code Online (Sandbox Code Playgroud)
我是webpack的新手,但我不是JS的新手.我想知道为什么window.$不工作.
我想知道,对于webpack,为什么有人在插件中提出这个问题:
new webpack.ProvidePlugin({
'window.jQuery': 'jquery',
'window.$': 'jquery',
})
Run Code Online (Sandbox Code Playgroud)
有人建议这样做(对我来说也不起作用):
resolve: {
alias: {
jquery: "jquery/src/jquery"
}
}
Run Code Online (Sandbox Code Playgroud)
我在节点玩了一段时间然后我记得那个节点使用请求js来加载(虽然我不太清楚common vs require vs amd之间的差异).但为什么有人提到常见的js?
我正在开发后端一段时间,刚刚开始前端 - 这么多问题都出现了.如果你给我提供一些阅读指南的链接就足够了,这可以清除我的怀疑/建立我对这些的基本理解.
Jor*_*ngh 51
将其添加为插件
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
Run Code Online (Sandbox Code Playgroud)
你应该能够在整个项目中使用jquery.
如果在添加插件后问题仍然存在,请尝试重新启动nodejs服务器.记得安装jquery使用npm install --save jquery.
Nie*_*eek 10
不需要插件.只需使用以下作为条目:
entry: [
'jquery', //will load jquery from node_modules
'./assets/js/index',
]
Run Code Online (Sandbox Code Playgroud)
然后在ES6 +文件中使用:
import $ from "jquery";
Run Code Online (Sandbox Code Playgroud)
我想与任何可能有与我相同用例的未来开发人员分享我的发现。
我需要使用Webpack 4 (4.16.4) 仅创建供应商包,而不是AngularJS (1.7.2) 应用程序的应用程序包。我认为因为我只是创建了一个供应商捆绑包,所以其他解决方案都不起作用。只为我工作,就像这样:expose-loader
// webpack.config.js
module: {
rules: [
{
test: require.resolve('jquery'),
use: [{
loader: 'expose-loader',
options: 'jQuery'
},
{
loader: 'expose-loader',
options: '$'
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息: https: //github.com/webpack-contrib/expose-loader
| 归档时间: |
|
| 查看次数: |
34790 次 |
| 最近记录: |