gpt4 book ai didi

css - 使用webpack加载的css时如何停止FOUC

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:26 26 4
gpt4 key购买 nike

我在使用 webpack 时在我的入口点内加载 css 时得到 FOUC。如果我从 webpack 加载中删除我的 css,并将其作为普通链接包含在我的 html 文件中,那么 FOUC 的问题就会消失。

Note: This not just with bootstrap framework, I have tested with Foundation and Materialize with the same results

下面发布的代码只是我使用 Bootstrap 遇到的问题的测试示例。

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>

</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Navbar example</h1>
</div>
</div> <!-- /container -->

<script src="build/bundle.js"></script>
</body>
</html>

bootstrap.js 主入口点

import "../node_modules/bootstrap/dist/css/bootstrap.css";
import bootstrap from 'bootstrap'

$(document).ready(function () {
console.log('bootstrap loaded')
});

webpack.config.js

var path = require('path');
const ProvidePlugin = require('webpack/lib/ProvidePlugin');
const webpack = require("webpack");

module.exports = {
entry: './src/bootstrap.js',
output: {
path: path.join(__dirname, 'build'),
filename: 'bundle.js'
},
resolve: {
extensions: ['', '.js']
},
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
'window.jQuery': 'jquery'
})
],
devtool: 'inline-source-map',
module: {
resolve: {
modulesDirectories: ['node_modules']
},
loaders: [
{
test: path.join(__dirname, 'src'),
loader: 'babel-loader',
query: {
presets: ['es2015']
}
},
{ test: /\.css?$/, loader: 'style!css'},
{ test: /\.html$/, loader: 'html' },
{ test: /\.(png|gif|jpg)$/, loader: 'url', query: { limit: 8192 } },
{ test: /\.woff2(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url', query: { limit: 10000, mimetype: 'application/font-woff2' } },
{ test: /\.woff(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url', query: { limit: 10000, mimetype: 'application/font-woff' } },
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file' },
]
}
};

最佳答案

ExtractTextWebpackPlugin将允许您将 CSS 作为单独的文件输出,而不是将其嵌入到 JS 包中。然后您可以将此文件包含在您的 HTML 中,正如您所说,这可以防止无样式内容的闪现。

我建议仅在生产环境中使用它,因为它会阻止热加载工作并使您的编译时间更长。我将 webpack.config.js 设置为仅在 process.env.NODE_ENV === "production" 时应用插件;当您进行开发构建/运行开发服务器时,您仍然会获得 FOUC,但我觉得这是一个公平的权衡。

有关如何设置的更多信息,请查看 SurviveJS's guide .


更新:如评论中所述,ExtractTextWebpackPlugin 现在已被 mini-css-extract-plugin 取代- 你应该改用它。

关于css - 使用webpack加载的css时如何停止FOUC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453826/

26 4 0
文章推荐: ios - 搜索 NSDictionary 对象的 NSArray
文章推荐: jquery - 性能:纯 CSS 与 jQuery
文章推荐: iphone - 如何在不造成内存泄漏的情况下清除自定义对象的 NSMutableArray?
文章推荐: css - 在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com