Js和Css的引入与顺序以及合并的问题 1.JS和CSS的引入问题。
传统界面开发,程序员需要在页面配置引入js和css的路径,既麻烦又容易出错。TinyUI采用组件封装了JS和CSS,这份工作统一交给组件设计者处理,程序员开发页面时根本不用关心需要引入哪些JS和CSS,只要知道要用哪些宏接口就行了。
2.JS和CSS的顺序问题。
这个问题也是传统界面开发之间的难点,JS和CSS之间的顺序搞错,通常会导致页面出现乱七八糟的问题,定位问题也是异常复杂。TinyUI将顺序问题交给组件管理器处理,它会依次检查组件的依赖关系,如果有UI组件的依赖关系配置错误,组件管理器会记录异常日志,这些不正常组件不会被加载到正常组件列表。组件间的依赖关系理顺后,组件内部包含的JS和CSS的关系也就理顺了。TinyUI按如下顺序加载JS和CSS:
a. 父组件的资源比子组件优先加载。比如组件A依赖组件B,那么框架先加载组件B资源,再加载组件A资源。
b. 同一组件的资源,顺序靠前的优先加载。组件的js和css路径都可以配置多个,同一组件框架按配置顺序依次加载资源。
3.JS和CSS的合并问题。
在传统界面开发,性能调优往往涉及到js和css的合并,页面的IO少了,性能自然能提高,但是对程序员来说这就很困难,改动js和css意味着很多相关页面都要修改。TinyUI从框架层面支持js和css的合并,程序员无需手工调整,框架提供了UiEngineTinyProcessor这个适配器处理上述合并问题。
UiEngineTinyProcessor合并JS
a. 适配器通过组件管理器获得全部正常的UI组件,并依次遍历每个组件
b. 调用组件的getComponentJsArray方法,获得该组件引用的全部js路径,并依次遍历每个路径
c. 根据路径通过VFS获得js的内容,合并到outputStream
d. 合并完每个组件的引入JS内容,最后合并该组件需要调用JS代码
UiEngineTinyProcessor合并CSS
a. 适配器通过组件管理器获得全部正常的UI组件,并依次遍历每个组件
b. 调用组件的getComponentCssArray方法,获得该组件引用的全部css路径,并依次遍历每个路径
c. 根据路径通过VFS获得css的内容,合并到outputStream
d. 合并完每个组件的引入css内容,最后合并该组件需要调用CSS代码