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。

输入图片说明

相关文章
|
26天前
|
安全 程序员 编译器
【C/C++ 常用关键字使用指南】C++ 关键字 在头文件和源文件中函数声明与定义使用上的差异
【C/C++ 常用关键字使用指南】C++ 关键字 在头文件和源文件中函数声明与定义使用上的差异
78 0
|
1月前
|
存储
include函数
【2月更文挑战第15天】include函数。
17 2
|
2月前
|
编译器 C语言 C++
define与const关键字的多种用法
define与const关键字的多种用法
32 0
|
3月前
|
编译器
头文件ifndef用法及意义#pragma once
头文件ifndef用法及意义#pragma once
18 0
|
4月前
|
编译器 C++
[C++] include头文件双引号““与尖括号<>的区别
[C++] include头文件双引号““与尖括号<>的区别
24 0
|
10月前
|
编译器 C语言
宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用
宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用
|
11月前
|
C++
C++ 你会使用cmath库里的宏常量吗?(π、e、ln2、√2、(2/√π) 等等)
C++ 你会使用cmath库里的宏常量吗?(π、e、ln2、√2、(2/√π) 等等)
125 0
|
12月前
|
存储 C语言
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
80 0
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
条件编译 #if #endif #if #elif #else #endif #ifdef #if define 的使用方法 引头文件#include<> 和#include““的区别
条件编译 #if #endif #if #elif #else #endif #ifdef #if define 的使用方法 引头文件#include<> 和#include““的区别
96 0