[21/09/27]Junzzi Editorプロジェクトの設定-(4)scssの適用
ざっと書いてみた.
学習の目的(これまでプロジェクトはcss-in-js環境で行われていた.css-in-cssの適用を試みることにした)
ステータスに応じてUIスタイルを直接適用します(ユーザーのインタラクションが多いアプリケーションではcss-in-js方式よりも効率的です->UIスタイルを迅速に変更します).
エディタを親プロジェクトに移植する環境を考慮します(ベンダー情報入力プロジェクトはcss-in-css環境で作成されるため、scssの適用を考慮してください).
scssの適用
webpack docs
[velopert scss]
[non cra setting]
なぜscssを使うのですか?
学習の目的(これまでプロジェクトはcss-in-js環境で行われていた.css-in-cssの適用を試みることにした)
ステータスに応じてUIスタイルを直接適用します(ユーザーのインタラクションが多いアプリケーションではcss-in-js方式よりも効率的です->UIスタイルを迅速に変更します).
エディタを親プロジェクトに移植する環境を考慮します(ベンダー情報入力プロジェクトはcss-in-css環境で作成されるため、scssの適用を考慮してください).
scssの適用
CRA環境ではないので、プロジェクトではなくconfigを直接修正すればいいです.
install
npm install node-sass style-loader css-loader sass-loader
sass-loader
Loads a Sass/SCSS file and compiles it to CSS.
style-loader
Creates style
nodes from JS strings
css-loader
Translates CSS into CommonJS
webpack setting
Webパッケージは次のように設定されています.module.rules
に追加
以下に示すように、ロード・プログラムの適用順序があるため、sass-loader->css-loader->style-loaderの順にアプリケーションを記述します. {
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
},
sass-loaderを使用してscss、sassファイルをcssに変換し、css loaderを使用してCommon JSに変換します.スタイルラベルとして挿入します.
use scss
例としてButtonコンポーネントを作成// Button.tsx
import React from 'react';
import './style/Button.scss';
function Button() {
return <button className="Button">this is button</button>;
}
export default Button;
$blue: #228be6; // 주석 선언
.Button {
display: inline-flex;
color: white;
font-weight: bold;
outline: none;
border-radius: 4px;
border: none;
cursor: pointer;
height: 2.25rem;
padding-left: 1rem;
padding-right: 1rem;
font-size: 1rem;
background: $blue; // 주석 사용
&:hover {
background: lighten($blue, 10%); // 색상 10% 밝게
}
&:active {
background: darken($blue, 10%); // 색상 10% 어둡게
}
}
// EditorPage
import Button from '@/components/Button';
import React from 'react';
function EditorPage() {
return (
<div>
<Button></Button>
</div>
);
}
export default EditorPage;
result
適用状況を確認できます.
Ref
npm install node-sass style-loader css-loader sass-loader
{
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
},
// Button.tsx
import React from 'react';
import './style/Button.scss';
function Button() {
return <button className="Button">this is button</button>;
}
export default Button;
$blue: #228be6; // 주석 선언
.Button {
display: inline-flex;
color: white;
font-weight: bold;
outline: none;
border-radius: 4px;
border: none;
cursor: pointer;
height: 2.25rem;
padding-left: 1rem;
padding-right: 1rem;
font-size: 1rem;
background: $blue; // 주석 사용
&:hover {
background: lighten($blue, 10%); // 색상 10% 밝게
}
&:active {
background: darken($blue, 10%); // 색상 10% 어둡게
}
}
// EditorPage
import Button from '@/components/Button';
import React from 'react';
function EditorPage() {
return (
<div>
<Button></Button>
</div>
);
}
export default EditorPage;
webpack docs
[velopert scss]
[non cra setting]
Reference
この問題について([21/09/27]Junzzi Editorプロジェクトの設定-(4)scssの適用), 我々は、より多くの情報をここで見つけました https://velog.io/@rat8397/210923-24-Junzzi-Editor-프로젝트-셋팅-4-scss-적용하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol