위 챗 애플 릿 에서 sass 를 어떻게 즐겁게 사용 하 는 지 상세 하 게 설명 합 니 다.
위 챗 애플 릿 에서 css 는 wxs 로 표시 되 지만 쓰기 방법 은 기본적으로 일치 합 니 다.주의해 야 할 것 은 wxs 가 두 가지 특성 을 확장 하 였 는데 각각:
사이즈 단위
스타일 가 져 오기
구체 적 으로 참고 할 수 있 습 니 다.
sass 를 편리 하 게 포장 하기 위해 서,우 리 는 gulp 를 사용 하여 우리 의 scss 파일 을 처리 하고,그것 을 wxs 로 변환 합 니 다.
디 렉 터 리 구조
개발 중,우 리 는 일반적으로 src 소스 코드 디 렉 터 리 를 가지 고 있 으 며,dist 디 렉 터 리 는 우리 가 포장 한 코드 를 출력 하 는 데 사용 된다.이번 설명 에 사 용 된 디 렉 터 리 구 조 는 다음 과 같다.
설치 의존
yarn add gulp gulp-sass gulp-rename gulp-replace gulp-tap gulp-clean -D
gulp 와 gulp-ass 는 sass 를 포장 하 는 데 필수 적 이 며,gulp-rename 은 scss 접 두 사 를 wxs 로 바 꾸 고,gulp-replace 는 내용 의 교체(이 뒤에 설명 할 것)를 책임 집 니 다.gulp-tap 는 현재 실행 중인 파일 을 처리 하고,gulp-clean 은 우리 가 필요 로 하지 않 는 파일 을 제거 합 니 다.sass 패키지 설정
gulp 설정 패키지 sas 는 매우 간단 합 니 다.코드 는 다음 과 같 습 니 다.
const gulp = require('gulp');
const sass = require('gulp-sass');
const rename = require('gulp-rename');
gulp.task('sass', () => gulp.src('./src/**/*.{scss,wxss}')
.pipe(sass().on('error', sass.logError))
.pipe(rename({
extname: '.wxss'
}))
.pipe(gulp.dest('./dist'))
);
이렇게 하면 sas 의 설정 을 완성 할 수 있 지만,이렇게 하면 문제 가 생 길 수 있 습 니 다.앞에서 말 했 듯 이 wxs 는 스타일 가 져 오 기 를 지원 합 니 다.즉,import 문법 wxs 는 지원 하지만 css 는 지원 하지 않 습 니 다.따라서 sass 포장 은 import 파일 을 현재 파일 로 포장 하여 현재 파일 의 부피 가 커 집 니 다.위 챗 은 패키지 코드 가 2M 을 초과 할 수 없 도록 제한 하기 때문에 css 가 많이 쓸 수록 이러한 포장 방식 은 스타일 파일 을 더욱 크게 만 들 것 입 니 다.import 가 져 오기 문제 해결
import 의 가 져 오기 문 제 를 어떻게 해결 합 니까?사실 비교적 간단 합 니 다.말하자면 sass 가 처리 할 때 import 부분의 문 구 를 처리 하지 않 게 하면 됩 니 다.두 가지 방법 으로 할 수 있 습 니 다.첫 번 째 는 sas 처리 소스 코드 를 바 꾸 는 것 입 니 다.import 문 구 를 만 났 을 때 건 너 뛰 는 것 입 니 다.두 번 째 는 파일 을 sass 처리 에 맡 기기 전에 우 리 는 먼저 import 문장 부분 에 주석 을 달 면 sass 처리 할 때 무시 합 니 다.sass 처리 가 끝 난 후에 주석 이 떨 어 진 문 구 를 열 면 됩 니 다.분명히 첫 번 째 원가 가 비교적 높 고 유지 하기 도 어렵다.우 리 는 두 번 째 종 류 를 사용 합 니 다.코드 는 다음 과 같 습 니 다.
const gulp = require('gulp');
const sass = require('gulp-sass');
const replace = require('gulp-replace');
const rename = require('gulp-rename');
const clean = require('gulp-clean');
const tap = require('gulp-tap');
const path = require('path');
const config = require('./build/config');
const hasRmCssFiles = new Set();
gulp.task('sass', () => gulp.src('./src/**/*.{scss,wxss}')
.pipe(tap((file) => {
//
const filePath = path.dirname(file.path);
//
const content = file.contents.toString();
// filter scss,
content.replace(/@import\s+['|"](.+)['|"];/g, ($1, $2) => {
const hasFilter = config.cssFilterFiles.filter(item => $2.indexOf(item) > -1);
// hasFilter > 0 filter ,
if (hasFilter.length > 0) {
const rmPath = path.join(filePath, $2);
// src dist,.scss .wxss, :'/xxx/src/scss/const.scss' => '/xxx/dist/scss/const.wxss'
const filea = rmPath.replace(/src/, 'dist').replace(/\.scss/, '.wxss');
//
hasRmCssFiles.add(filea);
}
});
console.log('rm', hasRmCssFiles);
}))
.pipe(replace(/(@import.+;)/g, ($1, $2) => {
const hasFilter = config.cssFilterFiles.filter(item => $1.indexOf(item) > -1);
if (hasFilter.length > 0) {
return $2;
}
return `/** ${$2} **/`;
}))
.pipe(sass().on('error', sass.logError))
.pipe(replace(/(\/\*\*\s{0,})(@.+)(\s{0,}\*\*\/)/g, ($1, $2, $3) => $3.replace(/\.scss/g, '.wxss')))
.pipe(rename({
extname: '.wxss',
}))
.pipe(gulp.dest('./dist')));
import 를 처리 할 때 주의해 야 할 부분 이 있 습 니 다.sass 에서 import 는 css 를 도입 할 수 있 을 뿐만 아니 라 변수,함수 도 도입 할 수 있 습 니 다.따라서 저 희 는 처리 할 때 도 구분 에 주의해 야 합 니 다.변수 와 함 수 는 독립 된 파일 디 렉 터 리 에 저장 하 는 것 이 좋 습 니 다.또한 import 할 때 변수 와 함수 에 대해 서 는 반드시 sass 에 맡 겨 야 합 니 다.즉,주석 을 달 수 없습니다.따라서 위의 코드 에서 볼 수 있 듯 이 우 리 는 build 디 렉 터 리 에 있 는 config 를 도 입 했 습 니 다.이 는 sas 변수 와 함수 가 저 장 된 위 치 를 설정 합 니 다.그러면 우 리 는 포장 할 때 이러한 import 문 구 를 만 났 을 때 건 너 뛰 고 sas 처리 에 맡 깁 니 다.그렇지 않 으 면 공용 스타일 파일 을 도입 한 것 을 의미 합 니 다.이렇게 해서 우 리 는 sas 처리 전에 맡 깁 니 다.먼저 주석 을 지우 고,sas 처리 가 끝 난 후에 주석 을 엽 니 다.또한 import 는 scss 파일 일 수 있 지만 wxs 로 전 환 될 때 접 두 사 를 wxs 로 바 꾸 었 기 때문에 주석 을 열 때 도 해당 하 는 도입 을 변경 해 야 합 니 다.이것 이 바로 gulp-replace 패키지 의 역할 입 니 다.config 설정 은 다음 과 같 습 니 다:
module.exports = {
cssFilterFiles: ['scss/var.scss'],
};
쓸모없는 wxss 파일 정리앞에서 말 했 듯 이 우 리 는 sas 에서 일부 변수,함 수 를 정의 할 수 있 습 니 다.이 파일 들 은 잠시 후에 dist 디 렉 터 리 에 포장 되 지만 그 내용 이 비어 있 습 니 다.이 럴 때 우 리 는 이 변 수 를 정리 해 야 합 니 다.앞에서 포장 하 는 과정 에서 우 리 는 set 변수 가 있 습 니 다
hasRmCssFiles
해당 하 는 파일 을 기록 하면 우 리 는 이 변 수 를 옮 겨 다 니 며 해당 하 는 파일 을 삭제 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
gulp.task('clean:wxss', () => {
const arr = [];
hasRmCssFiles.forEach((item) => {
arr.push(item);
});
return gulp.src(arr, { read: false })
.pipe(clean({ force: true }));
});
총결산wxss 의 특성
sass 포장 설정 및 import 문 구 를 어떻게 처리 하 는 지sass 변수,함수 의 파일 정리
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.