在themes/目录下存放当前网站的主题样式框架。使用不同的主题,简单说,同样的页面标签也会具备不同的样式。主题支持切换,切换后网站的整体样式都会被改变。主题本身也是一个模块,定义方式与模块定义是一致的。例如自定义主题my_themethemes/目录 - 图1my_theme:自定义主题。
    my_theme.info.yml:声明该目录为模块,并且文件内属性type赋值为theme,声明为该模块为主题模块。其次还有需要定义主题布局regions、三方库libraries、主题基本信息等。
    my_theme.libraries.yml:声明该模快的依赖列表,并不是声明的列表都可以使用,需要在代码或者主题定义中指定依赖的库。
    libs:自定义目录,由info.yml指定的libraries引入。
    js/css:自定义目录,由libraries.yml指定的集合引入。
    templates:默认目录,存放twig文件。

    关于主题定义:主题是网站的全局配置、全局样式,因此主题的更改是全局的。

    关于三方库的加载顺序:libraries可以info文件加载、libraries文件加载、twig文件加载,也就是说可以在任意文件中加载,但区别在于先后关系。一般情况下是这个顺序:
    info.yml > php > libraries.yml > twig

    可以理解为,主题本身就是一个独立网站,有独立的依赖、独立的界面、独立的配置。而业务模块modules/只是给主题虎上添翼。因此有时候自定义my_themes/目录下有一个node_modules/目录,在php出现了NPM的包处理工具,并不奇怪,themes本身就是一个网站,因此依赖包可以通过NPM来处理。