Jumony 2 核心改进

  1. 新的文档修改模型
    1. 取消IFreeNode体系,取而代之是更为强大的IHtmlFragment。Node必须附着于Fragment而不能单独游离。
    2. 新的 IHtmlFragmentManager 负责管理文档所有的碎片,现在文档所有的游离节点(碎片)均是可检索的(通过文档检索)。
    3. 新的 IHtmlDomModifier 取代了原有的IHtmlNodeFactory,现在可以直接往容器里面添加节点,无需借助 IFreeNode。
    4. 修改属性值现在会创建一个新的属性取而代之。
  2. 新的抽象结构
    1. 新的 IHtmlDomObject 是所有构成 HTML DOM 的对象的基础抽象,这包括文档(IHtmlDocument)、节点(IHtmlNode)以及属性(IHtmlAttribute)。
    2. IHtmlContainer 不再继承于 IHtmlNode,而是继承于 IHtmlDomObject,所以现在 IHtmlDocument 不再是一个 IHtmlNode。
    3. IHtmlAttribute 也继承于新的 IHtmlDomObject。
    4. IHtmlDocument 新增了 DocumentUri属性(可选)。
    5. SyncRoot 属性现在属于 IHtmlContainer,换言之只有容器才有锁定的必要。
  3. 命名空间调整
    1. Ivony.Web.Html 命名空间调整为 Ivony.Html(核心)和Ivony.Html.Web(ASP.NET)两个,程序集也同时分开。
    2. Ivony.Web.Html.Binding 命名空间调整为 Ivony.Html.Binding
    3. Ivony.Web.Html.Parser 命名空间调整为 Ivony.Html.Parser
  4. 修改文档的 API 调整
    1. 废除了与 IFreeNode 相关的 API,但 IFreeNode 和相关 API 将以兼容包的形式发布。
    2. IHtmlAttribute.AttributeValue 属性现在为只读,使用 SetAttribute 方法修改。
    3. Replece扩展方法更名为ReplaceWith。
    4. InnerHtml 和 InnerText 方法现在没有了安全绑定检查,会在 Ivony.Html.Binding 项目中提供 BindText 和 BindHtml 方法进行安全绑定检查。
    5. InnerHtml 和 InnerText 方法行为现在更符合人们的预期
    6. Remove方法现在可以针对元素集。
    7. SetAttribute方法废弃了额外的Value调用,即原有的SetAttribute( xxx ).Value( yyy, zzz, ... )统一修改为:SetAttribute( xxx, yyy, zzz, ... )
  5. 导航检索的 API 调整
    1. 新的 IHtmlFragment 继承于 IHtmlContainer,所以也可以使用 Find 等方法。
    2. 元素集现在也能Find。
    3. 支持自定义 CSS 伪类。
    4. 支持","选择符,但前后一定要有空白字符。
    5. 新增了 IsDescendantsOf 方法检查一个元素是否隶属于某容器。
    6. 新增了 HtmlCollection 类型搜集 HTML 节点,并进行搜寻查找。
    7. 新增 PathOf 方法获取节点的绝对或相对位置描述。
    8. 新增了一个可以比较节点在文档中出现位置顺序的比较器。
    9. IHtmlNode.Parent 属性更改为同名方法。
  6. 其他功能增强
    1. 支持编译文档 DOM 模型为一个方法或产生代码。
    2. 新的 Render 方法更为强大,允许使用 IHtmlAdapter 对象干预 HTML 渲染过程,实现自定义渲染。
    3. 核心和大部分子项目现在不依赖于 ASP.NET ,使用 .NET Framework 3.5 ClientProfile。
  7. Web方面改进
    1. Jumony Parser现在为默认的分析器。
    2. 默认有缓存策略
    3. 完美支持 ASP.NET MVC
    4. 可以自定义几乎所有策略(包括缓存,重写,分析文档,处理器获取)

Last edited Jul 13, 2011 at 5:40 AM by Ivony, version 3

Comments

No comments yet.