QuickLook是MacOS下的特性,允许在
Finder中快速浏览多种不同类型文件。不需要打开文件,只需要点击空格即可快速预览文件。
架构
凡事我们都先聊聊架构,毕竟一听这个词就有点逼格!
QuickLook采用的是可扩展架,大部分工作都是由插件来完成。插件后缀名为.qlgenerator,是不是很好记!ql是QuickLook的缩写。generator创造者,直白翻译过来就是QuickLook实现插件!
插件路径位于系统System路径下的Libraray文件夹
/System/Library/QuickLook
这些插件其实都是一些bundle,看下图那个可爱的组件图片。你就会明白我为什么称其为bundle
关于
bundle的详细知识我会在之后的文章中大篇幅介绍。现在你只需要知道它是固定结构的目录层次即可!
插件是一个独立编译好的程序,但不是一个可独立执行的程序。插件程序没有传统的main入口,而是实现了QuickLookGeneratorPliginFactory入口点(乍看起来模式跟iOS的extension有些异曲同工之妙)。另外还有一个配置文件将插件和对应的类型关联起来。类型是苹果的UTI(其实就是逆DNS)表示。
// 逆DNS = UTI
com.sogou.pinyin.ssf
➜ ~ cat /System/Library/QuickLook/EPS.qlgenerator
cat: /System/Library/QuickLook/EPS.qlgenerator: Is a directory
如何查看QuickLook已安装插件
使用qlmanage -m即可
➜ ~ qlmanage -m
server: living for 0s (0 requests handled) - instant off: yes - arch: X86_64 - user id: 501
memory used: 0 MB (513088 bytes) - used descriptors: 19/256
plugins:
com.sogou.pinyin.ssf -> /Library/QuickLook/SogouSkinFileQuickLook.qlgenerator (1.1)
org.openxmlformats.presentationml.slideshow -> /System/Library/QuickLook/Office.qlgenerator (40)
com.adobe.pdf -> /System/Library/QuickLook/PDF.qlgenerator (906.2)
com.apple.localized-pdf-bundle -> /System/Library/QuickLook/LocPDF.qlgenerator (906.2)
com.apple.iwork.keynote.key -> /System/Library/QuickLook/iWork.qlgenerator (209)
com.apple.application -> /System/Library/QuickLook/StandardBundles.qlgenerator (906.2)
com.apple.ical.bookmark -> /System/Library/QuickLook/iCal.qlgenerator (906.2)
com.microsoft.word.doc -> /System/Library/QuickLook/Office.qlgenerator (40)
com.microsoft.powerpoint.pot -> /System/Library/QuickLook/Office.qlgenerator (40)
org.openxmlformats.wordprocessingml.template.macroenabled -> /System/Library/QuickLook/Office.qlgenerator (40)
com.apple.iwork.keynote.sffkey -> /System/Library/QuickLook/iWork.qlgenerator (209)
com.apple.ichat.ichat -> /System/Library/QuickLook/iChat.qlgenerator (5500)
com.microsoft.word.dot -> /System/Library/QuickLook/Office.qlgenerator (40)
com.apple.iwork.keynote.sffkth -> /System/Library/QuickLook/iWork.qlgenerator (209)
org.openxmlformats.presentationml.template.macroenabled -> /System/Library/QuickLook/Office.qlgenerator (40)
com.apple.keynote.key -> /System/Library/QuickLook/iWork.qlgenerator (209)