【发布时间】:2020-07-27 18:48:13
【问题描述】:
我只是在学习 webpack。作为一个练习,我用它来捆绑 Bootstrap。如果我将捆绑包与他们的一个基本示例 Starter Template 一起使用,如果我将 <script src="./main.js"></script> 放在 <body> 的末尾,我会得到一个 FOUC。如果我把它放在<body> 的开头,就没有FOUC。
<script> 应该放在<body> 的开头吗?还是应该放在<body> 的末尾,在这种情况下应该使用其他方法来防止 FOUC?例如,使用 mini-css-extract-plugin 创建一个单独的 CSS 文件,而不是像 this one 等其他帖子中所述将其包含在 webpack JS 包中。
代码
dist/index.html
与Starter Template | Bootstrap 相同,除了
- 删除样式表
<link>和 JS<script>行 - 插入
<script src="./main.js"></script>-
<body>开头:没有 FOUC -
<body>结束时:FOUC
-
webpack.config.js
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.(scss)$/,
use: [{
loader: 'style-loader', // inject CSS to page
}, {
loader: 'css-loader', // translates CSS into CommonJS modules
}, {
loader: 'postcss-loader', // Run postcss actions
options: {
plugins: function () { // postcss plugins, can be exported to postcss.config.js
return [
require('autoprefixer')
];
}
}
}, {
loader: 'sass-loader' // compiles Sass to CSS
}]
}
]
}
};
src/index.js
import 'bootstrap';
import './scss/index.scss';
src/scss/index.scss
@import "~bootstrap/scss/bootstrap";
@import "custom";
scss/_custom.scss 是微不足道的。
环境:webpack:4.44,bootstrap:4.4,Chrome:v80,Firefox:v78,Edge:v44(这些浏览器都有如上所述的FOUC/no-FOUC)。
【问题讨论】:
标签: webpack bootstrap-4