javascript - FOUC:没有任何样式加载的初始页面
问题描述
我正在尝试通过为 Nextjs 应用程序导入.scss
文件来应用全局样式。_app.js
但问题是,样式并没有在页面加载时预先应用。因此,所有初始页面渲染都会发生 FOUC。
示例 1
下面给出的是上述问题的基本版本:
项目结构:
pages/
_app.js
index.js
app.scss
package.json
index.js文件:
export default function Home() {
return (
<div className="hello">
<p>Hello World</p>
</div>
);
}
_app.js文件:
import "../app.scss";
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />;
}
app.scss文件:
$color: red;
.hello {
background-color: lavender;
padding: 100px;
text-align: center;
transition: 100ms ease-in background;
&:hover {
color: $color;
}
}
package.json文件:
{
"name": "basic-css",
"version": "1.0.0",
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "^9.4.5-canary.31", // using canary build as per https://github.com/vercel/next.js/issues/11195
"node-sass": "4.14.1",
"react": "^16.13.1",
"react-dom": "^16.13.1"
},
"license": "ISC"
}
示例 2(使用 next-sass 的 repo)
根据@Ramakay 的回答的第三点,
它创建了一个静态散列 css 文件并将其附加到<head/>
标签,但问题仍然存在。
我所期待的:
我现在得到的:
我没有使用任何外部库,如“styled-components”等。我也没有在寻找它。
我能做些什么来解决手头的问题?
解决方案
因为这是 JS 中的 CSS 方法,所以文件不会在服务器端呈现以供文档预解析器应用,因此它必须等待 Javascript 下载
- 您可以使用 Nextjs 产品 - https://github.com/vercel/styled-jsx - 它将输出样式服务器以及客户端。
- 您可以查看单独导出 SCSS 并链接到文档头。
- Next-sass 与 Node-sass 输出文件 - https://github.com/vercel/next-plugins/tree/master/packages/next-sass + https://github.com/sass/node-sass#outfile
推荐阅读
- python - Python pynput、pyautogui、键盘模块 - 无法将字母输入键盘,例如自动输入一个 setnence。记录输入工作正常
- android - 创建多个嵌套集合firestore android
- android - 为什么 paging3 与 Mediator 加载 APPEND 无限
- objective-c - [NSPlaceholderString initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error
- peoplesoft - 从动态视图中提取记录时,为什么 Peoplesoft 组件接口会出错?
- r - 创建具有均值、标准差、标准误差和置信度误差的数据框
- python - InvalidArgumentError:您必须为占位符张量输入一个值,即使我输入了它
- r - 包是否在 R 中有 dll 的信息
- json - jq - 按字段值对 json 对象进行分组,并在一行中输出分组值
- spring - Jackson模块kotlin中的泛型类转换异常