gpt4 book ai didi

javascript - 在 javascript 之前加载样式 - webpack 4

转载 作者:搜寻专家 更新时间:2023-11-01 04:12:44 25 4
gpt4 key购买 nike

我的 JavaScript 在我的样式之前加载,这导致跳跃和奇怪的加载。

这是我的演示:https://harp29.github.io/cb-pc/

如何在 JavaScript 文件通过 webpack 运行之前加载 styles/css 文件?我尝试了 setTimeout 函数并且它有效,但这是一个临时解决方案,这是解决此问题的最佳方法?

我的 webpack 文件:webpack.dev.js

const path = require("path")
const webpack = require("webpack")
const HTMLWebpackPlugin = require("html-webpack-plugin")
// const cssDev = ['style-loader', 'css-loader?sourceMap', 'sass-loader?sourceMap'];

module.exports = {
entry: {
main: [
"webpack-hot-middleware/client?reload=true",
"./src/script/main.js"
]
},
mode: "development",
output: {
filename: "[name]-bundle.js",
path: path.resolve(__dirname, "../dist"),
publicPath: "/"
},
devServer: {
contentBase: "dist",
overlay: true,
stats: {
colors: true
}
},
devtool: "source-map",
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: [{
loader: "babel-loader"
}]
},
{
test: /\.css$/,
use: [{
loader: "style-loader"
},
{
loader: "css-loader"
}
]
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader?sourceMap', 'sass-loader?sourceMap']
},
{
test: /\.(jpeg|jpg|png|svg)$/,
use: [{
loader: "file-loader",
options: {
name: "images/[name].[ext]"
}
}]
},
{
test: /\.html$/,
use: [{
loader: "html-loader"
}]
},
{
test: /\.pug$/,
use: [{
loader: "pug-loader"
}]
}
]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HTMLWebpackPlugin({
template: "./src/pug/index.pug",
title: "Cervini Bhatia PC",
inject: true
})
]
}

我的 main.js 文件:

const scss = require('../scss/style.scss');
import index from '../pug/index.pug';
import favicon from '../images/favicon.png';
import logoSymbol from '../images/logo-symbol.svg';
import IntroAnimations from './module/IntroAnimations';

//Instaniate
new IntroAnimations()
.animateTimelines();

我的 index.pug 文件:

doctype html
html
head.
<meta charset="UTF-8">
<title>Welcome - Cervini Bhatia PC</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="/images/favicon.png">
body
include ./modules/_loading.pug
include ./modules/_landing.pug
include ./modules/_team-section.pug
include ./modules/_experience.pug
include ./modules/_firm.pug
include ./modules/_communication.pug
include ./layout/_footer.pug

最佳答案

最简单的解决方法是在您的哈巴狗模板中包含一小段 CSS,以隐藏 <body> .然后包含一行 JS 以取消隐藏 <body>在你的动画开始之前。


编辑:如果您想从 JS 包中单独加载 CSS 文件,请使用 https://github.com/webpack-contrib/mini-css-extract-plugin .在您的模板中,包含一个 <link>标记到您生成的 CSS 文件的公共(public)路径。


发生这种情况是因为您正在使用 style-loader 进行捆绑,它将您的 CSS 作为字符串放入您的 Javascript bundle 中。

因此当浏览器正在解析您的 JS 包(非常慢)时,HTML 将呈现(非常快)。在该包的末尾,浏览器将找到包含您的 CSS 字符串的模块。然后它将解析并使用 Javascript 应用样式。

关于javascript - 在 javascript 之前加载样式 - webpack 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51213759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com