布局引擎与文件插值器:原理、实现与应用
布局引擎相关内容
在布局引擎的测试中,有一系列关于包裹块的测试用例,如包裹单个单元块、大的块、一行两个能适配的块、一列两个块、行列网格且都能适配所在行的块、一行两个不能适配一行的块以及多个不能适配一行的块等,这些测试都成功通过,用时 10 毫秒。
这得益于里氏替换原则(Liskov Substitution Principle),该原则指出在程序中可以用派生类的对象替换基类的对象,而不会破坏程序的正常运行。新代码需要处理与旧代码相同的输入集合,其输出必须是旧代码输出的子集,以避免对下游产生意外影响。基于此原则衍生出的方法是契约式设计(design by contract)。
接下来探讨支持的 CSS 子集,要对包含文本的页面进行样式设计。HTML 的子集包含行、列和文本块,文本块的高度由行数决定,宽度由最长行的长度决定。行和列可以有属性,且每个属性必须有一个带引号的单值,行不再采用固定宽度,而是通过自定义的 CSS 子集来指定。
以下是相关的类定义:
export class DomBlock extends WrappedBlock {
constructor (lines) {
super(
Math.max(... lines.split('\n ').map(line => line.length )),
lines.length
)
this.lines = lines
this.tag = 'te
超级会员免费看
订阅专栏 解锁全文
699

被折叠的 条评论
为什么被折叠?



