apolloxlua include关键字

简介: include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。 因为include是单独处理流, 所以不会在主处理流程中有所表示。

include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。

因为include是单独处理流, 所以不会在主处理流程中有所表示。

include 对应的是 AOP 切面编程的模式。我们可以把切面的代码,组织在后缀为.apo的文档里, 并且使用include在多个文档里共享。其他后缀格式目前不支持。当然你也可以把你的切面代码组织在你的主文档里,这个是没有差别的, 但是在交织的时候切面的代码并不会对著文档代码产生影响, 可能影响到的是你的文档的可维护性, 所以我们需要把切面的代码独立到一个实体文件中,这其实是切面模型和其他模型相互组合的一点。

目前apolloxlua可以直接交织和注解切面代码,因为对源代码的理解,所以在交织的时候我们只需要关注我们的切面过程和业务是否契合,其余的一切apolloxlua自动处理。

如果你使用的开发模型,并不需要类似切面的方式,那么你不需要关心这个处理。 正常导入其他模块或者包的使用方式是使用 require 方式。

使用方式:

include ("aop文件");

使用示例
`

include ("./build/test.aop");

var m = require ("module");

function a () {
    var c =  0;
    ;[BREAKPOINT("Circubreaker", c,2,3)]
    var d =  1;
}

;[BREAKPOINT("Circubreaker", 2,3,4)]

;[BREAKPOINT("Noted", 2,3)]

;[BREAKPOINT("Circubreaker", 2,3,4)]

test.aop


;[AOP("breakpoint", "Circubreaker" , function (eax,ebx,ecx) {
    console.log("break...point..1")        
    console.log("break...point..2")    
    console.log("break...point..3")    
    console.log("break...point..4")    
})]


;[AOP("breakpoint", "Noted", function (a,v) {
    console.log("I am a Noted.")
})]

在web模式, 有一个标准库的map和vfs的map提供给交叉编译使用, 如果我们在打包的时候并没有为web模式生成需要包含的代码, web模式会自动加文件。如果你的资源在cdn或者oss等其他的资源服务器上, 需要设置vfs的path, 默认为本地。

在tool模式下使用的是操作系统的文件系统,所以支持相对和绝对路径, 不需要特殊设置。

和require最本质的区别在于, require是动态加载行为, 加载后会在模块的内注册,并返回模块。 include处理阶段在apolloxlua的预编译阶段,并不会存在和引入代码, 只是在交叉的时候按照我们定义的规则,生成code。

输入图片说明

相关文章
EVE-NG的Windows客户端安装
EVE-NG提供Windows的客户端,集成了Wireshark、VNC、putty等软件,主要为完成配套EVE-NG的WEB浏览中的数据抓包等功能。 我的EVE-NG的Windows客户端安装包为EVE-NG-Win-Client-Pack.exe。
|
6月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
186 0
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
238 1
|
10月前
|
存储 弹性计算 调度
基于Knative的LLM推理场景弹性伸缩方案
Knative的基于请求弹性配置与大语言模型(LLM)的推理场景高度契合。此外,它的资源降配特性可以显著帮助用户降低成本。本文详细介绍基于 Knative 的 LLM 推理场景弹性伸缩方案。
|
7月前
|
人工智能 安全 Anolis
|
6月前
|
缓存 监控 NoSQL
Redis设计与实现——分布式Redis
Redis Sentinel 和 Cluster 是 Redis 高可用与分布式架构的核心组件。Sentinel 提供主从故障检测与自动切换,通过主观/客观下线判断及 Raft 算法选举领导者完成故障转移,但存在数据一致性和复杂度问题。Cluster 支持数据分片和水平扩展,基于哈希槽分配数据,具备自动故障转移和节点发现机制,适合大规模高并发场景。复制机制包括全量同步和部分同步,通过复制积压缓冲区优化同步效率,但仍面临延迟和资源消耗挑战。两者各有优劣,需根据业务需求选择合适方案。
|
消息中间件 Linux
RabbitMQ最大连接数
RabbitMQ最大连接数
1006 0
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
364 0
|
域名解析 监控 Linux
排查网络-几个步骤 几款工具
先抛个问题,如果哪天突然发现IDC机房 和 公有云 之间的服务无法访问了(排除服务本身的问题之外,可能是网络不通,也可能是网络变的很慢使得资源无法及时下载,从而导致服务无法访问)。