00:00
好,等你项目环境准备好之后呢,我们就可以正式编写我们的呃,构语言的插件了,那么我们这种方式呢,是在啊,是用构语言在telegraph框架的基础之上呢,来实现自己的插件,我们可以看一下它的项目结构啊,最外层一级目录底下有conig,是这是关于这个配置相关的,还有CMD啊,这个就是我们telegraph那个命令啊,它的一个入口程序啊,在接下来呢啊,还有什么脚本啊,还有什么啊test u做单元测试的一些工具啊,啊在最关键的就是我们所有的插件呢,都在这个目录底下,叫plugins,然后plugins底下呢,你可以看到这里面其实按我们插件的类别已经分好类了,而后我们的in inputs呢,全部就在这个目录底下。呃,底下之后呢,我们可以看到呢,这里面就是有很多我们之前啊,在那个文档上见过的啊,比如说你可以从这个click click house啊来抓取数据啊,CPU啊什么的,这个是我们经常用的是不是?然后呢,你可以看到,其实这些插件呢,它是按包啊来组织起来的,所以说呢,在这里面想创建一个我们自己的插件的啊,我们要去先创建一个包啊,那么这一节呢,我们带大家完成一个什么呢?完成一个可以生成随机数的啊,我们自定义的插件啊,首先呢,我们在这里面创建一个自己的包,那么包名呢,就可以叫做艾特硅谷下划线run down。
01:21
啊,我们自己一个生成啊,随机数的这个包就来了。然后呢,在这个包的基础之上呢,在这个包里面啊,去创建一个good,这个good呢,其实名字是。可以。那么我们最好还是呢和这个包的名字呢保持一致。啊,创建一个空文件。啊,那么我们现在呢,就像别的项目结构一样,我们也是有了一个自己的购文件,那么有这个购文件之后呢,我们里面怎么编写里面的程序呢?其实你看你是不知道的啊,那么这个时候呢,我们可以借助官网的这个read me的文档。啊,他告诉我们怎么做。你可以看到这里面有一个文档,说这个文档呢啊,你可以看,就是有一个input plug,你点这个。
02:08
啊,对吧,他这里面给了一个example是吧,给了一个事例啊,告诉你应该怎么样去实现一个input blog,这是啊他的一个手册,那么这呢是一个示例,那么这个例子就很好呢,这个例子就是我们可以直接哎复制粘贴进来,在他基础上改一改就行了。CTRLC,然后呢,直接CTRLVCV,工程师,诶这边没有复制上,重新来一遍。好了。哎,还是没有复制上,我看看是什么情况。那个温家V。好了粘贴上了啊,那么这里呢。这里呢,需要把我的把他的包名改一下。我们,我们的包叫这个。啊,这个地方也需要改一下啊,这个是之前我上一个文件的。好,那么这个报名呢,和我们现在的保持一致,叫艾特硅谷rundown,好,然后接下来呢,呃,好,那么这第一步呢,就算是完成了,呃,待会儿呢,给大家解释一下这个代码里面每一行都是什么意思。
03:12
好,首先呢,就是这个最顶上这一行叫go generate啊这个呢,其实是一个整个框架而言呢,它帮助生成帮助文档的一个啊工具,呃也可以看到它每一个包底下呢,都有一个red me文档,那么red me文档呢,它底下还有个是to的这个啊文本块,呃这个代码块,这代码块呢,还引了一个文件叫simple conig,你它底下的这个simple conig,呃那么它呢,呃引这个文件呢,它有什么好处呢?就是呃在这个整个框架里面呢,它有一个工具,这个工具呢,它会在编译的时候呢啊去读取到你这个read me里面的啊这个代码块,然后把它呢当做一个视例配置来使用啊这个呢可有可无啊,这个可做可不做,因为这个呢啊它最后呢,不会影响你编译不通,编译通不通过的问题。
04:06
然后还有这个package和import这两部分就就不说了啊,还有一个就是大家可以看到这里行注释说不要删除这两行,这是必须的啊,这是必须的,这是绑定他的这个数据呢,是必须的,那么它是怎么一个原理呢?就是啊这一行代码,它其实是把啊你这个包底下。我们可以先去创建一个。创建一个file叫simple com文件。好的,那么你可以看到这里面这个爆红呢,就接着就消失了,它里面什么意思呢?就是它会在编译阶段去读取你这个包底下的simple.com文件,然后把这个文件里面的文本内容当做一个文本,当做一个字符串赋值给simple com config这个变量,那么这个变量会在。
05:03
Simple conflict这个方法被调用时,返回这个字符块啊,说白了这个就是在那个命令行里面啊,给我们看示例配置的那个啊,所用的一个变量啊,所用的一个变量,所用的一个方,所用的一个这个方法啊,那么这样的话呢,就是我们可以去复制一份别人的配置啊,直接粘到我们这里来,然后把这里面的这个啊注释呢,就全部给它干掉,就不要了。哎,那么待会儿呢,这个配置项呢,我们自己自己重新再写啊,那么这个配置的名字呢,大家可以改一下,叫艾特硅谷rundown。好,那么接下来呢,再给大家说一下,呃,就是呢,我们这个地方你拉到最下面来,有一个in的这个函数,这个函数呢,其实意思就是在运行时呢,啊,把你这个插件的实例放到我们的这个telegraph的input列表里面,那么可以看到呢,这个IDE呢,它会自动给我们提示我们第一个参数的名字叫name啊,那么我们现在这个插件的名字呢,并不叫simple,我们叫艾特硅谷。
06:10
下划线转档,所以说把它改掉。啊,因为构语言呢,它不是一个面向对象的过程,所以说呢,啊右边呢,这个传进来的函数呢,它其实是在它想完成一个什么目的呢?它其实是想完成一个啊simple这个结构体的构造啊那么这里呢,我们直接是返回了一个空的结构体,由框架呢来帮我们完成一个啊解析的操作,那么这个结构体里面应该放什么呢?这个结构体里面其实应该放我们的配置项。啊,应该放网络配置项啊,比如说我这里面有一个,我这里面有一个值。叫S啊,S等于五。那么我们这边呢,就应该在这个结构体里面,应该有一个,呃,应该有一个这个in特类型的就是成员,就是结构的成员,结构体的成员跟它去保持跟这个我们的配置文件保持一个映射关系,那么后面这个注解呢,这个叫标签啊,这个标注这个标签,标签呢,你可以这样,Tom然后表示它在这个配置文件里面,我们这个属于Tom风格的配置文件,表示它在配置文件里面映射哪一个键,然后让淘淘宝映射什么呢?映射size。
07:30
那么等到这个运行时呢,啊,它会读取我们的这个配置文件,然后呢,根据这个结构体里面的映射关系来把这个配置文件里面的值。拿给我们的结构体里面给它复制过来。好,那么现在呢,我们尝试去这个,呃,先编译一把,我们刚才呢,有一个这个设定里面给的OK配置项,这个我们用不到,我们就把它删掉,然后底下这个函,底下这个函数呢,它会依赖于刚才那个结构体里的OK成员,那么先把它注释掉,那么如果说不标红的话呢,你现在可以尝试去编译,但在编译之前呢,我们需要做一步,就是你可以看到这个inputs里面呢,它有一个or这个包在or这个包里面呢,其实没有任何逻辑啊,只有一个import语法,你port这个语句你点开之后呢。
08:19
哎,它是所有,它是当前你POS这个底下的啊,所有包的一个列表啊,那么在这个开发规范里面呢,你如果实现一个自己的插件,你想被这个呃。Telegraph得知你必须要在这里面把自己的啊报名给打进来。那么我们我们的包是什么呢?我们的包就是github k,然后in Fla。然后我们是plugs底下的。Input底下的。
09:00
艾特硅谷,Run down。啊,这个地方呢,你看现在标红它其实是因为没有索引到,那么等一会儿呢,它就不标红了,你看它现在恢复正常了啊,也就我们有是有这个包的,前面这个getthub.com呢啊,一直到这个telegraph,其实是我们整个啊项目的名字,现在呢,其实它其实这个地方叫moo啊,就这个模块的名字,我们可以看这个。啊,它的构点model mode文件,我们可以看到自己现在这个Mo具的名字啊,这取这这个这一项呢,就会影响我们将来这个在引port的时候怎么去啊,写这个包名啊。然后二里面加上这个之后呢,啊,我们现在就可以尝试去编译一下我们整个,呃,现在的telegraph了,我们点这个MAKE2。我们可以看到呢,我们这个程序呢,现在报异常了啊,他说我们啊,找不到read me.MD啊,找不到这个read me的这个文件在我们的这个包里面啊,所以说呢,我们还是需要一个read me文件啊,防止它报错。
10:09
你read.mdok,创建完之后呢,你可以写点东西呢,你也可以打算什么都不写。到这一步呢,我们直接再去执行一下编译啊,就是我们这个read me创建完之后。再去执行R编译。我们可以看到我们的这个编译呢,它就顺利通过了啊,可以看到它会先去下载依赖,但是之前的我们的依赖都下载过了,所以说呢,这里它就不用再下载了啊,然后去设了一下这个环境之后呢,它是有这个go generate,它去生成read me的一个啊文件。接下来就是我们的正式的编译过程,可以看到就是我们现在呢,呃是卡在这个地方,等他编译完之后啊,我们再给大家讲一下,就是怎么样去看我们的这个插件有没有被成功的给加载进来。
11:01
好,现在呢,我们的这个telegraph呢,是编译完了,我们可以看一下啊,就是我现在目录底下呢,会多出来这么一个呃,叫tele的命令,这个其实就是我们可以执行的二进制程序了啊。接下来呢,我们尝试去用它看一下我们有没有这个艾特硅谷rundown这个input插件,你可以这样敲点杠,然后telegraph。之后呢,我们用这个input list。你就可以看到这里面所有的一个插件列表,然后呢,你可以用这个管道符。给它过滤一下。管道服grape,然后艾特硅谷。可以看到啊,我们的这个艾硅谷rundown啊,它这个插件呢,其实已经成功的进入到我们编译后的啊telegraph程序里面去了,呃,接下来呢,我们继续看一下啊,这个里面它能不能看到我们的视例配置文件。
12:08
我们只用input filter。啊,使用这个过滤器,然后找艾特硅谷。Rundown啊,后面后面呢,加上一个config。哎,可以看到呢,现在这个telegraph的这个命令呢,也成功的把我们的配置文件,我们参考的这个simple。Simple comfort这个文件给打印出来了啊,这也就是说啊,我们这个执行这个input filter comfort命令的时候呢,啊,其实调用的是。这个方法,这个方法,这个simple simple这个方法,它会直接返回这个字符串,而这个字符串呢。它是在编译器被我们的这个啊,编译器把这个文件里面的内容当做字符串赋值给啊simple变量的啊,它是这样一个过程。
13:01
啊,所以说呢,你如果执行到这一步,能够成功看到我们的配置文件打印出来,哎,说明呢,你的这个啊,基本上的架构呢,就整个我们的插件的框架已经搭好了啊接下来呢,就是完善我们里面的逻辑。
我来说两句