// 1. 可以添加属性前缀,适应所有的浏览器 const autoprefixe首都博物馆观后感r = require('autoprefixer'); // 2. 将所有的import 导入进来的模块全部合并为一个文件 const atimport = require('postcss-import'); // 3. 实现代码的压缩优化 开学第一节课 const cssnano = require('postcss-cssnano'); // 4. cssnext提前使用css的高级语法 const cssnext = require('postcss-cssnext'); 魏晨是哪里人 // 5. precss 类似于sass的语法处理 cons湖北科技学院官网t precss = require('precss')
3.import实现模块的合并(模块分开,提前合并)
4.css语法检查,兼容性检查
5.压缩文件
[!note]
postcss是一个通过js插件转换样式表的工具,它本身并不是一门新的css语言,而是一个平台或者是生态心态,提供插件扩展服务即js api,开发者可以根据这些接口,定制开发插件,
目前比较流行的插件工具如:autoprefixer 、stylelint 、cssnano。
source string → tokenizer → parr → ast → processor → stringifier
[!note]
将源css字符串进行分词
举个例子:
.classname { color: #fff; }
通过tokenizer后结果如下:
[ ["word", ".classname", 1, 1, 1, 10] ["space", " "] ["{", "{", 1, 12] ["space", " "] ["word", "color", 1, 14, 1, 18] [":", ":", 1, 19] ["space", " "] ["word", "#fff" , 1, 21, 1, 23] [";", ";", 1, 24] ["space", " "] ["}", "}", 1, 26]]
以word类型为例,参数如下:
const token = [ // token 的类型,如word、space、comment 'word', // 匹配到的词名称 '.classname', // 代表该词开始位置的row以及column,但像 type为`space`的属性没有该值 1, 1, // 代表该词结束位置的row以及column, 1, 10]
[!note]
经过tokenizer之后,需要parr将结果初始化为ast
this.root = { type: 'root', source: { input: {css: ".classname { color: #fff; }", hasbom: fal, id: "<input css 1>"}, start: { line: 1, column: 1 } , end: { line: 1, column: 27 } }, raws:{after: "", micolon: fal} nodes // 子元素}
经过ast之后,postcss提供了大量js api给插件用
插件处理后,比如加浏览器前缀,会被重新stringifier.stringify为一般css。
参考博客:
本文发布于:2023-04-07 06:55:21,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/62d9df045d95c273780459f89715f8a6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:【前端知识体系.doc
本文 PDF 下载地址:【前端知识体系.pdf
留言与评论(共有 0 条评论) |