网站首页 > 知识剖析 正文
前面几篇文章我们聊了如何解析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工具,就可以考虑使用这个模块。
喜欢我的文章就关注我吧,有问题可以发表评论,我们一起学习,共同成长!
- 上一篇: markdown语法大全
- 下一篇: oeasy教您玩转vim - 17 - # 向上向下
猜你喜欢
- 2024-11-18 WPS办公软件使用指南:从基础到高级功能全解析
- 2024-11-18 CSS解析器——css模块使用详解,用更优雅的方式转换css内容
- 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文档中实现精准换行技巧
- 最近发表
-
- 测试进阶:实现跨请求地保持登录的神器session你get了么?
- Python 爬虫入门五之 Cookie 的使用
- 在Node应用中实施Web认证的四大方法
- PHP防火墙代码,防火墙,网站防火墙,WAF防火墙,PHP防火墙大全
- 程序员和IT人都应该懂的知识:HTTP入门图解
- 如何请求一个需要登陆才能访问的接口(基于cookie)——apipost
- 提高 PHP 代码质量的 36 计(如何提高php技术)
- 彻底搞懂Token、Session和Cookie(token和cookie sessions什么区别)
- 一文详解Python Flask模块设置Cookie和Session
- 超详细的网络抓包神器 tcpdump 使用指南
- 标签列表
-
- 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)