-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
postcss入门 #270
base: develop
Are you sure you want to change the base?
postcss入门 #270
Conversation
|
||
在PostCSS的官网上,我们可以看到对PostCSS的描述,A tool for transforming CSS with JavaScript。PostCSS只是一个用于提供使用JavaScript去转换CSS的工具,本身并没有实现对CSS的任何修改。PostCSS可以分析CSS文件,将所有的CSS规则转换成AST(抽象语法树),并提供了一系列的API对其可以进行遍历、修改,最终重新生成CSS文件。 | ||
|
||
首先根据官网的教程,我们可以发现一个简单的插件架子是这样的。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
整体读下来没有目录,也没有标题。一段开始是首先,下一段又是首先。读起来需要自己梳理思路,建议增加目录或小标题。
], | ||
source: { | ||
input: Input { | ||
css: '\nbody {\n margin: 0;\n}\n\n\n', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
建议把原始文件 body{margin:0} 补在 ast 对象之前,不然需要从 ast 文件反向思考这个是什么的 ast
|
||
在CSS中,有注释、CSS规则、规则中的声明以及媒体查询规则,分别对应PostCSS中的Comment、Rule、Declaration、AtRule对象。除此之外,还有Root对象可以用来表示整个CSS文件;Node对象是所有节点类型对象的祖先对象;Container对象是Root、Rule、AtRule的祖先对象;Result对象是PostCSS转换结果的对象,包含css、map等内容;Warning、CssSyntaxError等等。 | ||
|
||
PostCSS作为CSS的后处理器,我觉得插件实现的功能只应该在原语法上实现一些能力的增强,而不应该增加新的语法,或者是破坏CSS原意。比如用的最多的AutoPrefixer,只是增强了CSS的兼容性,没有增加额外语法,也没有破坏CSS原来要表达的意义。再比如我们可以实现一个插件,当同一规则中碰到多个`display: `的时候,或者`display: block`和`width: 100%`同时出现的时候,删除不必要的声明,对代码进行简化。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PostCSS 除了AutoPrefixer,还有啥其他的常用插件嘛~?有的话,也可以补充科普一下~~~
No description provided.