apolloxlua include关键字

  1. 云栖社区>
  2. 博客>
  3. 正文

apolloxlua include关键字

钟元大老爷 2018-08-28 12:28:00 浏览9045
展开阅读全文

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。

输入图片说明

网友评论

登录后评论
0/500
评论
钟元大老爷
+ 关注