# css-preprocessor
**Repository Path**: hexunjian/css-preprocessor
## Basic Information
- **Project Name**: css-preprocessor
- **Description**: css 预处理语言的学习测试项目
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-05-10
- **Last Updated**: 2021-05-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### css 预处理器(css preprocessor)
我们学习和测试下面三个主流的css的预处理器
1. Sass(Scss):https://www.sass.hk/
2. Less:https://less.bootcss.com/
3. Stylus:https://stylus.bootcss.com/
#### 本项目通过使用vue和react分别对css预处理器进行学习测试
#### vue 版本
我们这里不考虑vue的版本问题,比如说有的人还在使用vue2.x ,有的人已经开始使用vue3.x,其实vue的版本的变化并不影响我们对 css 预处理器的测试使用,所以我们统一使用 vue-cli 进行项目结构的创建,当然你也可以自己搭建一个基本的项目结构,这些都不是问题,我们的重点还是 css 预处理器。
1. 我们使用vue-cli之前需要先安装vue cli , 参考官方文档:https://cli.vuejs.org/zh/, 需要注意的是,cli 有两个不同的版本;
2. 老版本 cli 工具的安装使用:
安装:npm install --global vue-cli
使用:vue init webpack demo, demo是我们的项目的名称
3. 新版本 cli 工具的安装使用:
安装:npm install @vue/cli -g
使用:vue create demo , demo是我们的项目的名称
4. 本项目通过 新版本进行项目基本结构的创建:
(1) 创建基于 sass(scss) 的vue项目
我们先进入到 vue 目录下,使用命令:vue create vue-sass 创建一个基于vue的 sass /scss 测试项目,
安装完成按照提示进入 vue-sass 目录中,按照提示使用 yarn serve命令(或者 npm run serve 命令)进行项目的启动
启动之后,访问:http://localhost:8080/ 即可进入默认的首页
我们基于这个项目结构进行 sass/scss 的学习和测试;
(2) 创建基于 less 的vue项目
我们先进入到 vue 目录下,使用命令:vue create vue-less 创建一个基于vue的less测试项目,
安装完成按照提示进入 vue-less目录中,按照提示使用 yarn serve命令(或者 npm run serve 命令)进行项目的启动
启动之后,访问:http://localhost:8080/ 即可进入默认的首页
我们基于这个项目结构进行 less 的学习和测试;
(3) 创建基于 stylus 的vue项目
我们先进入到 vue 目录下,使用命令:vue create vue-stylus 创建一个基于vue的stylus测试项目,
安装完成按照提示进入 vue-stylus目录中,按照提示使用 yarn serve命令(或者 npm run serve 命令)进行项目的启动
启动之后,访问:http://localhost:8080/ 即可进入默认的首页
我们基于这个项目结构进行 stylus 的学习和测试;
在创建的基于sass的vue项目中使用sass
vue-cli 支持在创建项目的时候选择 css 预处理器类型,但是我们创建项目的时候先不要添加,我们创建项目完成之后再来自己进行添加,帮助我们学习。
首先下载两个包: sass 和 sass-loader
npm install -D sass-loader sass
下载完成即可,无需任何配置
我们在任意一个vue文件中测试sass的使用,示例如下:
如果报错类似:Syntax Error: TypeError: this.getOptions is not a function,那么我们修改下sass-loader的版本即可,换一个版本;
注意,使用lang="scss", 不要使用 lang="sass";
我们启动项目使用命令: npm run serve 即可访问;
参考官网说明:https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8
在创建的基于less的vue项目中使用less
vue-cli 支持在创建项目的时候选择 css 预处理器类型,但是我们创建项目的时候先不要添加,我们创建项目完成之后再来自己进行添加,帮助我们学习。
首先下载两个包: less 和 less-loader
npm install -D less-loader less
下载完成即可,无需任何配置
我们在任意一个vue文件中测试sass的使用,示例如下:
如果报错类似:Syntax Error: TypeError: this.getOptions is not a function,那么我们修改下less-loader的版本即可,换一个版本尝试一下;
注意,使用lang="less";
我们启动项目使用命令: npm run serve 即可访问;
参考官网说明:https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8
在创建的基于stylus的vue项目中使用stylus
vue-cli 支持在创建项目的时候选择 css 预处理器类型,但是我们创建项目的时候先不要添加,我们创建项目完成之后再来自己进行添加,帮助我们学习。
首先下载两个包: stylus 和 stylus-loader
npm install -D stylus-loader stylus
下载完成即可,无需任何配置
我们在任意一个vue文件中测试sass的使用,示例如下:
如果报错,那么我们修改下stylus-loader的版本即可,换一个版本尝试一下;
注意,使用lang="stylus";
我们启动项目使用命令: npm run serve 即可访问;
参考官网说明:https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8
#### react 版本
我们这里不考虑react 的版本问题,和vue类似,版本的变化并不会影响我们对 css 预处理器的测试使用,所以我们使用 create-react-app 进行项目的基本结构的搭建。这个 create-react-app 和 vue的cli类似,可以帮助我们创建一个简单的项目目录结构;
安装create-react-app: npm install -g create-react-app
(1) 创建基于 sass 的 react 项目
我们先进入到 react 目录下,使用命令:create-react-app react-sass 创建一个基于react的 sass /scss 测试项目,
安装完成按照提示进入 react-sass 目录中,按照提示使用 yarn start 命令(或者 npm run start 命令)进行项目的启动
启动之后,访问:http://localhost:3000 即可进入默认的首页
我们基于这个项目结构进行 sass/scss 的学习和测试;
我们在已经创建好的react 项目中,安装 node-sass 依赖:npm install node-sass -D 即可
我们把默认的 .css 文件后缀修改为 .scss 即可;
如果关于编译报错,可能需要修改 node-sass 版本,默认安装的node-sass 都是最新的版本,可能会导致问题,我们可以降低一下版本即可;
(2) 创建基于 less 的react项目
我们先进入到 react 目录下,使用命令:create-react-app react-less 创建一个基于react的less测试项目,
安装完成按照提示进入 react-less目录中,按照提示使用 yarn start 命令(或者 npm run start 命令)进行项目的启动
启动之后,访问:http://localhost:3000 即可进入默认的首页
我们基于这个项目结构进行 less 的学习和测试;
(3) 创建基于 stylus 的react项目
我们先进入到 react 目录下,使用命令:create-react-app react-stylus 创建一个基于react的stylus测试项目,
安装完成按照提示进入 react-stylus目录中,按照提示使用 yarn start 命令(或者 npm run start 命令)进行项目的启动
启动之后,访问:http://localhost:3000 即可进入默认的首页
我们基于这个项目结构进行 stylus 的学习和测试;
在创建的基于sass的 react 项目中使用sass
基于create-react-app 的项目默认配置了 sass 文件的解析设置,我们下载一下 node-sass 依赖即可;
相应的 css文件命名为 .scss文件即可;
在创建的基于less的 react 项目中使用less
使用命令 npm run eject 释放配置文件,在 webpack.config.js 中增加相应 less 的配置
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
{
test: lessRegex,
exclude: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
},
'less-loader'
),
sideEffects: true,
},
{
test: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
getLocalIdent: getCSSModuleLocalIdent,
},
},
'less-loader'
),
},
配置完成之后安装 less 和 less-loader 依赖,npm install less less-loader -D 即可;
css文件命名为 .less格式文件,启动项目即可;
在创建的基于stylus的 react 项目中使用stylus
使用命令 npm run eject 解放配置,设置 :
// add stylus support
{
test: /\.styl$/,
loaders: ['style-loader', 'css-loader', 'stylus-loader'],
},
{
loader: require.resolve('file-loader'),
// Exclude `js` files to keep "css" loader working as it injects
// its runtime that would otherwise be processed through "file" loader.
// Also exclude `html` and `json` extensions so they get processed
// by webpacks internal loaders.
exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/, /\.styl$/],
options: {
name: 'static/media/[name].[hash:8].[ext]',
},
},
安装依赖 : npm install stylus stylus-loader -D , 如果使用过程中报错,尝试降低 stylus-loader 版本即可
css文件命名为 .styl 格式文件即可;
#### 本级目录下的 vue 和 react 目录
我们创建了一个vue的目录(项目)用来测试 css 预处理器在 vue 下的使用;同时我们也创建了一个 react 目录,用来测试 css 预处理在 react 下的使用;实际上,我们在vue中和react中对css预处理器的使用是差不多的,没有什么区别;
#### Sass 使用说明
1. 特性
完全兼容 css3 这个特性很重要,使得我们不用担心兼容的问题,专注于开发即可
在 css 的基础上增加了变量,嵌套,混合,函数,控制指令等功能
自定义输出格式
2. 语法格式
sass 和 scss 都称之为 sass;
sass的前期版本就是 sass ,后面进化到 scss ;
sass 采用了缩进的方式替换了css的 { } , 并且省略了样式结尾的分号;
但是 scss 又恢复了 {} 和结尾分号的形式;
sass格式的文件以 .sass后缀为扩展名,scss格式的文件以 .scss 后缀为扩展名,所以一般情况下使用 scss 即可;
3. 变量
css是没有变量的概念和语法的,但是 sass 中提供了变量的支持;
变量的声明:$highlight-color: #F90;
sass 使用 $ 符号来标明变量;
更多详细的内容我们在vue和react的案例中进行详细的说明补充,请查看 /react/react-sass /vue/vue-sass
7. 函数
8. 混合
9. 继承
#### less 使用说明
1. 特性
和 sass 类似,兼容css;
2. 语法格式
less采用的是非缩进方式,即使用 {} 和 分号的形式来书写,和sass非缩进的方式类似
文件的格式以 .less 后缀为扩展名
3. 变量
css是没有变量的概念和语法的,但是 less 中提供了变量的支持;
变量的声明:@highlight-color: #F90;
less 使用 @ 符号来标明变量;
更多详细的内容我们在vue和react的案例中进行详细的说明补充,请查看 /react/react-less /vue/vue-less
4. 嵌套
5. 导入
6. 注释
7. 函数
8. 混合
9. 继承
#### stylus 使用说明
1. 特性
和 sass 类似,兼容css;
2. 语法格式
stylus 采用缩进和省略分号的形式书写,和sass缩进方式类似
文件的格式以 .styl 后缀为扩展名
3. 变量
css是没有变量的概念和语法的,但是 stylus 中提供了变量的支持;
变量的声明:highlight-color= #F90
stylus 变量直接声明即可,不需要像 sass 需要使用$ 标识,不需要像 less 需要使用 @ 标识
但是 stylus 也可以在变量前添加 $ 如:$highlight-color= #F90
更多详细的内容我们在vue和react的案例中进行详细的说明补充,请查看 /react/react-stylus /vue/vue-stylus
4. 嵌套
5. 导入
6. 注释
7. 函数
8. 混合
9. 继承