使用最新的Next.js,我可以在pages/_app.js
中使用指令像import '../styles/global.scss';
全局导入Sass样式,而不依赖于@zeit/next-sass
。
这对组件级别是否有效?例如,我是否可以有一个components/*
目录,在其中存储我的组件,每个组件都有一个导入*.module.scss
文件的*.tsx
文件?
这对我现在没有效果。我没有得到错误,但组件级别的样式不加载,而全局样式却会加载。
编辑:明确一下,我不想导入像 import styles from ...scss
这样的对象。我只想为此组件导入Sass,而不是任何具有属性的对象。
以下是代码示例,当我使用npx run dev
运行它时,我可以看到globals.scss
样式,但无法看到Main.module.scss
样式。
从头开始,我运行了npx create-next-app _
,然后npm install sass
。一旦我制作了一个简单的Main
组件,我想要给它设置样式,这里只有五个重要文件:
components/Main/Main.tsx
:
import './Main.module.scss';
export default function Main() {
return <div className="Main">Main</div>;
};
components/Main/Main.module.scss
:
由于某些原因,此规则未被应用!
.Main {
color: blue;
}
pages/_app.js
:
这些全局样式会被应用!
import '../styles/globals.scss';
export default function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />
};
pages/index.js
:
import Head from 'next/head';
import Main from '../components/Main/Main';
export default function Home() {
return (
<div>
<Head>
<title>Create Next App</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<Main />
</div>
)
};
styles/globals.scss
:
这个样式规则被应用,但是上面没有color: blue
。
* {
box-sizing: border-box;
}
npm install sass
安装了sass
,Sass(包括Sass模块)在Next.js中具有内置支持。您能否提供一个代码示例,其中尝试使用Sass模块? - juliomalves<link>
加载它。js-css和js-sass可能看起来很方便,但它们不需要webpack或任何类似的东西才能工作。只需独立运行Sass编译即可。您的用户值得拥有更好的体验。 - Mike 'Pomax' Kamermanscomponents/*/*.tsx
中,并且具有components/*/*.module.scss
中的样式。 - Ganymede