postCss基本介绍

🌟什么是postCss?

        我个人的理解postCss就是css界的babel,它提供一个过程,而在这个过程中,去干什么就是你自己的事情,所以很多人写插件,去做代码转换,或者兼容等等。

babel 提供过程 @babel/preset-env  es6-es5
`JavaScript`
AST -> transform -> generate(生成)
postCss提供过程 
`css`
AST -> transform -> generate(生成)

两者都是提供一个过程,只是一个是处理javaScript,一个是处理css。

过程介绍

这个过程中AST指的是AST抽象语法树,这是一种概念(思想),举个例子:es6箭头函数的AST如下:

可以访问这个网站来将代码转换为抽象语法树https://astexplorer.net/

根据这其中的节点(标记),去执行转换等操作,这一步就是transform,比如将上图const 转换为 var。

转换完成后就是generate(生成),输出:

var a = function () {
    return 123
}

 以上就是一个完整过程的粗略说明。

🌟使用

安装

 npm i postcss

不知道大家有没有见过这个插件:autoprefixer,这个东西是帮助实现兼容各个浏览器加前缀的,并且是基于postCss实现的。没见过也不奇怪,因为我们平时使用的脚手架中其实都已经配好了。

下面我们也来用一用(我们这里是单独使用,postCss可以结合vite和webpack使用,vite中自带了postCss,webpack需要postcss-loader,下篇文章会结合vite写一个实现页面适配的插件):

npm i autoprefixer

 index.css:

.flex{
    display: flex;
}

index.ts: 

import postcss from "postcss";
import autoprefixer from "autoprefixer";
import fs from 'node:fs'
const css = fs.readFileSync('./index.css', 'utf-8')
postcss([autoprefixer()]).process(css).then(result => {
  console.log(result.css)
})

postcss是一个函数,参数是一个插件数组,并且多个插件执行顺序就是按数组顺序依次执行,process()接收的就是css文件,终端输入ts-node .\index.ts启动:

可以看到这里就是把我们的css文件内容输出,并无变化,这是因为autoprefixer()需要传入需兼容浏览器规则,然后动态去兼容各个浏览器版本:

import postcss from "postcss";
import autoprefixer from "autoprefixer";
import fs from 'node:fs'
const css = fs.readFileSync('./index.css', 'utf-8')
//browserList
const browserList: string[] = [
  'ie >=8',
  'chrome >= 31',
  'firefox >= 31',
  'safari >= 7',
  'opera >= 23',
];
postcss([autoprefixer(browserList)]).process(css).then(result => {
  console.log(result.css)
})

此时输出结果如下:

🌟总结

如前文所说,postCss就是为我们提供了一个过程,在这个过程中我们可以去进行需要的操作,这里就简单介绍一下,下篇结合vue3 + vite 实现移动端适配插件,原理就是将项目中所有的px单位转换成vw单位。

相关推荐

  1. PostCSS详细介绍

    2024-04-23 08:46:01       13 阅读
  2. PostCSS详细介绍

    2024-04-23 08:46:01       10 阅读
  3. Vue PostCSS的使用介绍

    2024-04-23 08:46:01       14 阅读
  4. PostCSS安装与基本使用

    2024-04-23 08:46:01       19 阅读
  5. postcss

    2024-04-23 08:46:01       16 阅读
  6. PostCSS及其常用插件介绍

    2024-04-23 08:46:01       12 阅读
  7. PotCSS

    2024-04-23 08:46:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 08:46:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 08:46:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 08:46:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 08:46:01       20 阅读

热门阅读

  1. uniapp读取(获取)缓存中的对象值(微信小程序)

    2024-04-23 08:46:01       11 阅读
  2. open-webui与ollama的部署最后完整之命令

    2024-04-23 08:46:01       16 阅读
  3. 详解QString类的使用和注意事项

    2024-04-23 08:46:01       21 阅读
  4. Phpstorm环境配置与应用

    2024-04-23 08:46:01       16 阅读
  5. GEE:直方图匹配

    2024-04-23 08:46:01       14 阅读
  6. 游戏帧数低怎么解决?

    2024-04-23 08:46:01       43 阅读
  7. uniApp设置和清除定时器

    2024-04-23 08:46:01       19 阅读
  8. NTP授时服务器(GPS授时器)在DCS系统应用

    2024-04-23 08:46:01       39 阅读
  9. 话是开心锁

    2024-04-23 08:46:01       15 阅读
  10. nginx中的哈夫曼编码算法

    2024-04-23 08:46:01       16 阅读
  11. 压力与平衡

    2024-04-23 08:46:01       16 阅读
  12. 随便记录点

    2024-04-23 08:46:01       14 阅读
  13. PAT 1097 Deduplication on a Linked List(25分)

    2024-04-23 08:46:01       17 阅读