网站首页 > 知识剖析 正文
前面几篇文章我们聊了如何解析HTML标签,这篇文章我们聊一下解析CSS的模块——css。
安装
npm install css
parse方法使用
css模块提供了一个解析css内容的方法parse,它返回css内容的抽象语法树(AST)。
图1执行结果如下:
parse方法还可以传入第二个参数,这个参数是个对象,它有两个属性,其中一个属性是source,代表css文件的路径,如果参数中存在source属性,在parse方法返回的抽象语法树结果中或者在解析报错时的信息中都会带上文件的路径。另外一个属性是silent,如果设置了这个属性,即使在解析中出错,parse方法也不会抛出错误。
stringify方法使用
stringify方法的第一个参数是css内容的抽象语法树对象,返回的结果是css内容,此方法的作用和parse正好相反,如下图所示。
stringify方法的第二个参数也是一个对象,对象属性有indent、compress、sourcemap、inputSourcemaps。
indent代表输出的css内容的缩进,默认是两个空格。利用这个属性就可以做一个css格式化工具。
compress表示css的内容是否需要被压缩,压缩时会移除所有的空格和注释。
sourcemap用于生成css的sourceMap。
图7红色区域中sourceMap的json串的原理是什么?不了解的同学可以参考作者之前的一篇文章《深度解析前端代码打包过程中是如何生成sourceMap的?》,我相信一定难不倒聪明的你,这里就不再熬述了。
inputSourcemaps表示在生成sourcemap时可以读取已存在的sourcemap引用,默认是true。因为有些打包好的css文件中已经存在了sourcemap的引用,所以在解析时这个模块会自动读取map信息。
抽象语法树AST
在作者看来,AST是前端皇冠上的明珠,就像发动机之于飞机,石油之于工业。有了AST,前端的页面可以在浏览器上渲染出来,有了AST,就可以自由的开发自己的框架。它即很重要,却也很难掌握,所以这个知识点放在以后讲。
总结
本文主要分享了一个css的解析模块,那它到底有什么用呢?我们平常用的语法校验、格式校验、sourcemap等都和它相关,所以如果需要开发一个和css相关的node工具,就可以考虑使用这个模块。
喜欢我的文章就关注我吧,有问题可以发表评论,我们一起学习,共同成长!
猜你喜欢
- 2024-11-18 WPS办公软件使用指南:从基础到高级功能全解析
- 2024-11-18 如何在Vue中使用Ueditor富文本编辑器,详情介绍如下
- 2024-11-18 增强自动插入,开源编辑器Notepad++ 6.7.0下载
- 2024-11-18 如何遍历DOM?
- 2024-11-18 解决GitHub Issue能力登顶,字节豆包MarsCode团队分享工程实践
- 2024-11-18 提高开发效率的 9 个工具
- 2024-11-18 如何在 Mac 上轻松制作好看的文本长图?
- 2024-11-18 Css字体间距的设置方法
- 2024-11-18 如何在Word文档中实现精准换行技巧
- 2024-11-18 Web开发学习笔记(19)——CSS(6)常用样式
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)