SASS: Là gì, tại sao và như thế nào?
SASS là một bộ tiền xử lý CSS, giúp bạn sử dụng các tính năng không tồn tại trong CSS như các biến, lồng nhau, mixins, function, các tính năng tiện lợi khác. Điều này giúp cho code dễ đọc, ngắn gọn, dễ kế thừa và maintain hơn so với cách viết CSS truyền thống. Khi bạn bắt đầu chạy, nó sẽ lấy tệp Sass của bạn, chuyển đổi và lưu nó dưới dạng tệp CSS bình thường mà bạn có thể sử dụng trong trang web của mình.
Khởi tạo dự án
Đầu tiên, cần tạo 1 package.json
giúp quản lý các package version cũng như khởi chạy dự án thông qua npm
npm init -y
Bạn có thể tham khảo cây thư mục dưới đây của mình
.
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
Tại sao phải chia ra 2 thư mục
src/
và0? Bởi vì source code từ. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
src/
sẽ được biên dịch và tự động đặt vào thư mục0. Khi giữ sự tách biệt các thư mục này, bạn có thể chắc chắn rằng mọi thứ bạn cần để đưa web của mình lên môi trường Product đều nằm trong thư mục. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
0 và mọi thứ để triển khai phát triển dự án của bạn đều nằm trong thư mục. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
src/
.
Cài đặt SASS
Đầu tiên, chúng ta sẽ cài đặt sass , thư viện giúp để biên dịch
.
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
5 hoặc .
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
6 các tệp thành .
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
7.npm install -D sass
Trong file package.json
, chúng ta sẽ thêm 1 dòng khởi chạy giúp biên dịch SASS.
"scripts": {
...
"start": "sass src/scss:public"
...
}
Dòng khởi chạy có dạng
9, chúng ta sẽ khai báo cho sass cần biên dịch bất kỳ file. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
6 nào mà nó tìm thấy [ngoại trừ những tệp bắt đầu bằng dấu gạch dưới] từ thư mục. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
1 và xuất tớinpm install -D sass
0.. ├─ node_modules/ ├─ public/ │ ├─ styles/ │ ├─ index.html ├─ src/ │ ├─ scss/ package.json
Viết code
Sau khi đã cài đặt SASS, chúng ta có thể bắt đầu làm việc trên dự án của mình. Chúng ta sẽ bắt đầu bằng cách tạo một file
.
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
6 trong thư mục npm install -D sass
1. Tạo một file npm install -D sass
5 trong npm install -D sass
1 và import nó vào npm install -D sass
7.// main.scss
@import '_base';
h2 {
color: tomato;
font-family: system-ui, -apple-system, Roboto, sans-serif;
}
5 là một file chứa tất cả các style cơ bản cho dự án. Đó là một nơi tốt để đặt các style global như màu sắc, phông chữ, kích thước và các style khác được sử dụng trong toàn bộ dự án.npm install -D sass
Có 1 số style cơ bản thường dùng như:
// _base.scss
*, *:before, *:after {
box-sizing: border-box;
}
h2, h2, h3, h4, h5, h6 {
margin: 0;
}
html, body, ul, ol, li, figure, blockquote, dl, dd {
margin: 0;
padding: 0;
}
Thêm SASS vào HTML
Trình duyệt không thể hiểu SASS. Vì vậy, chúng ta cần thêm file đã biên dịch của SASS [CSS] vào HTML. Chúng ta có thể thêm bằng cách thêm thẻ
npm install -D sass
9 vào trong "scripts": {
...
"start": "sass src/scss:public"
...
}
0.DOCTYPE html>
Document
Hello World
Bây giờ chúng ta có thể chạy
"scripts": {
...
"start": "sass src/scss:public"
...
}
1 tại terminal để chuyển đổi từ .
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
6 sang .
├─ node_modules/
├─ public/
│ ├─ styles/
│ ├─ index.html
├─ src/
│ ├─ scss/
package.json
7.Môi trường Development và Production
Có 1 vài sự khác biệt khi build ở môi trường development và production. Nếu ở môi trường Dev, bạn cần giữ code nguyên vẹn, cùng với
"scripts": {
...
"start": "sass src/scss:public"
...
}
4 giúp debug và dễ dàng tìm kiếm khi phát sinh lỗi, lỗi ở đâu. Nếu ở môi trường Prod, bạn cần nén code, loại bỏ "scripts": {
...
"start": "sass src/scss:public"
...
}
4, những khoảng trống và comment không cần thiết để tăng hiệu suất.Khi nãy chúng ta đã tạo 1 lệnh giúp build code về CSS, bây giờ hãy tách riêng nó ra 2 phiên bản cho phù hợp với đặc điểm của mỗi môi trường.
"scripts": {
...
"sass:dev": "sass --watch --embed-source-map src/scss:public/styles",
"sass:prod": "sass --no-source-map --style compressed src/scss:public/styles"
...
}
Dev Script:
6 giúp SASS lắng nghe trong thư mục "scripts": {
...
"start": "sass src/scss:public"
...
}
1 và biên dịch lại nếu phát hiện có sự thay đổi trong file. npm install -D sass
8 để tạo ra "scripts": {
...
"start": "sass src/scss:public"
...
}
4 dành cho file CSS đã được biên dịch.: "scripts": {
...
"start": "sass src/scss:public"
...
}
"scripts": {
...
"start": "sass src/scss:public"
...
}
6 giúp SASS lắng nghe trong thư mục npm install -D sass
1 và biên dịch lại nếu phát hiện có sự thay đổi trong file. "scripts": {
...
"start": "sass src/scss:public"
...
}
8 để tạo ra "scripts": {
...
"start": "sass src/scss:public"
...
}
4 dành cho file CSS đã được biên dịch.Prod Script: Sử dụng
0 để không khởi tạo // main.scss
@import '_base';
h2 {
color: tomato;
font-family: system-ui, -apple-system, Roboto, sans-serif;
}
4. Còn "scripts": {
...
"start": "sass src/scss:public"
...
}
2 giúp nén và loại bỏ bất kỳ khoảng trắng không cần thiết nào khỏi file CSS đã biên dịch. Cả hai tùy chọn này sẽ giảm kích thước file và cải thiện hiệu suất khi tải trang.: Sử dụng // main.scss
@import '_base';
h2 {
color: tomato;
font-family: system-ui, -apple-system, Roboto, sans-serif;
}
// main.scss
@import '_base';
h2 {
color: tomato;
font-family: system-ui, -apple-system, Roboto, sans-serif;
}
0 để không khởi tạo "scripts": {
...
"start": "sass src/scss:public"
...
}
4. Còn // main.scss
@import '_base';
h2 {
color: tomato;
font-family: system-ui, -apple-system, Roboto, sans-serif;
}
2 giúp nén và loại bỏ bất kỳ khoảng trắng không cần thiết nào khỏi file CSS đã biên dịch. Cả hai tùy chọn này sẽ giảm kích thước file và cải thiện hiệu suất khi tải trang.Kết luận
- SCSS là một công cụ giúp bạn viết CSS rõ ràng, dễ dàng và ít tốn kém hơn trong một cấu trúc chương trình.
- Trình duyệt không thể hiểu SASS. Vì vậy, chúng ta cần chuyển SCSS sang CSS.
- Trong môi trường Development, việc sử dụng
4 cho trình duyệt sẽ tái tạo lại code ban đầu và hiển thị bản gốc đã được tái tạo lại trong trình gỡ lỗi."scripts": { ... "start": "sass src/scss:public" ... }
- Trong môi trường Production, hãy xóa
4 và giảm kích thước tệp để tải trang nhanh hơn, giúp đạt được hiệu suất tốt hơn."scripts": { ... "start": "sass src/scss:public" ... }