微信小程序开发附源码:详解如何在微信小程序中愉快地使用sass.doc
微信小程序开发附源码:详解如何在微信小程序中愉快地使用sass 微信小程序中的CSS是用wxss来表示的,但写法基本一致。需要注意的是wxss扩展了两个特性,分别是:尺寸单位样式导入。为了方便打包sass,我们使用gulp来处理我们的scss文件,将其转换为wxss。 在开发中,我们一般会有一个src源代码目录,一个dist目录用来输出我们打包的代码。本次讲解用的目录结构如下:build目录用来配置我们的打包参数,目前里面只有一个config.js文件;dist目录为打包输出的目录,也是小程序运行的目录;gulpfile.js配置打包的任务;src就是我们的源代码目录。 在src目录结构中,我们需要安装依赖,使用yarn add gulp gulp-sass gulp-rename gulp-replace gulp-tap gulp-clean -D命令安装gulp和gulp-sass插件,这两个插件是打包sass必需的。gulp-rename则负责把scss后缀改为wxss,gulp-replace负责内容的替换,gulp-tap用来处理当前执行的文件,gulp-clean负责清除我们不需要的文件。 sass打包配置非常简单,代码如下: ``` 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')) ); ``` 这样就可以完成了sass的配置,但是这样会有问题。前面讲到了wxss是支持样式导入的,也就是说import语法wxss是支持的,但css不支持,因此sass打包会把import的文件打包到当前文件,从而导致当前文件的体积变大。由于微信限制单包代码不能超过2M,因此当css越写越多的时候,这种打包方式势必会使样式文件越来越大。 解决import导入问题有两种方式可以做到,第一种是改写sass处理的源码,当遇到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) { // ... } }); }) .pipe(sass().on('error', sass.logError)) .pipe(rename({ extname: '.wxss' })) .pipe(gulp.dest('./dist')) ); ``` 这样,我们就可以解决import导入问题,并且使我们的样式文件不会变得太大。





























剩余6页未读,继续阅读


- 粉丝: 64
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 硬件技术-《物联网技术基础教程》.ppt
- web前端工程化刘晓林.ppt
- django基于大数据的手机商品数据分析_ty9542m3.zip
- 大学数学实验MATLAB简介.ppt
- 电子商务管理与法律法规.ppt
- 电子商务运营部门架构.ppt
- 大学本科计算机课程导学.ppt
- 存储容灾规划及自动化实现.ppt
- 第6课-防范网络陷阱与计算机病毒-课件.ppt
- PLC组态与编程.ppt
- 操作系统精髓与设计原理英汉对照th.ppt
- 第一章-项目管理概述.ppt
- 项目管理学自考授课用第1章.ppt
- qt-files-xxx.7z.002
- django基于大数据的校园美食推荐系统的设计与实现_5n2nvr8c.zip
- 【USV控制】基于matlab USV几何避碰算法多海上车辆的防撞仿真【含Matlab源码 13671期】.zip


