Avalonia Css
Source CodeEnglish
  • Documentation
    • 🎆欢迎
    • 🏌️‍♂️从这里开始
      • 关于 Acss
      • 过程和概念
      • 安全性
      • 性能评估
      • 配置开发环境
      • 调试
      • 源码结构介绍
      • FAQ
    • ❓主题帮助
      • 如何使用 Acss
        • 类型解析
        • 配置参数
        • 代码源
        • 扩展资源
      • 如何使用 Acss.Controls
      • 如何使用 Acss.Fluent
      • 如何使用 MessageBox
      • 如何使用 Senior
      • 如何使用 Acss.Behaviors
    • 📏Acss 语法
      • 注释
      • 资源
      • 样式
      • 动画
      • 行为
    • 💎最佳实践
      • 如何定义良好的控件模板
由 GitBook 提供支持
在本页
  • AcssContext
  • TypeResolver
  • Acss Source
  • AcssTokens
  • Avalonia Object

这有帮助吗?

在GitHub上编辑
  1. Documentation
  2. 从这里开始

过程和概念

上一页关于 Acss下一页安全性

最后更新于1年前

这有帮助吗?

Acss 的原理比较简单。其运行过程如下图所示。

AcssContext

使用 Acss 时,需要构建一个 Acss 的上下文环境,我们称之为 AcssContext。这个上下文环境负责提供 Acss 运行过程中所需要的所有服务,包括语法分析服务、语法解释服务、类型解析服务、资源等各类工厂、Acss 加载服务、文件监控服务、Acss 配置服务、Rider 配置服务等。这些服务当中,大部分在 Acss 类库当中内置了。部分服务需要用户参与组建,例如类型解析服务。

同时,Acss 还在运行时提供了所有动态资源的访问功能,包括 Acss 文件、Acss Tokens 等。

TypeResolver

Acss Source

AcssTokens

当你使用 Acss 加载器加载一个代码源时,代码源首先被读取解析到内存中,形成原始的模型结构 AcssTokens。

注意,Acss 是支持继承和重用的,AcssTokens 也是可重用的。针对一个特定的源,AcssTokens 只会被加载一次。

Avalonia Object

Acss 加载器加载过程中,AcssTokens 创建后,会继续被解析为具体的 Avalonia 对象,例如 Style、Resource、Animation、其他 Object 等。这些对象会按照一定的规则被加载到 Avalonia 的 UI 当中。

TypeResolver 是一个类型解析服务,部署在 AcssContext 中。用户在构建 AcssContext 时,需要将自己的想要使用 Acss 的类型注册到 TypeResolver 当中。没有被注册的类型出现在 Acss 代码中时,会无法被解析而跳过,并且会输出调试信息,关于调试请查看。

Acss Source 是 Acss 代码的定义,在 Acss 中表现为一个名为 ISource 的接口。我们目前内置了两种代码源,本地文件(File Source)和内嵌资源(EmbeddedSource)。具体请参考。

🏌️‍♂️
这里
代码源