00:00
好,同学们,这节课我们开始进入NG2次开发,呃,在我们前面的课程呢,我们给大家讲解了大量的NG的功能,还有第三方的这些模块插件。那么在实际的企业应用当中呢,很有可能这些并没有办法去呃完全去满足我们实际的需求,那么这会儿呢,就需要我们在呃这个原有的基础上呢啊做一些改动了。N这个词二次开发呢,主要分成两种,第一种呢,就是对于原有模块的这种呃,C语言上的呃这种编译开发,呃这个难度对于一些程序来说是比较大的。第二种呢,是基于lua对于N这的一些呃基础功能去做扩展,那这个在呃实施的时候呢,就会比较简单一些。那么他们两者对比起来,可能大家最关心的就是性能问题。呃,很明显C语言去开发,它在执行效率的时候呢,呃,肯定是在系统上跑是最高的,那么如果要用lua语言去做开发的话呢,呃,它会略的这个略微的。
01:04
嗯,比C语言要低一些,但要明显的高于一些其他的语言,比如说在NG格上呢,我们还可以用一些其他的编程语言,像PHP啊,呃,或者一些其他的这种脚本语言去做额外的扩展,比如pero啊,或者什么其他的,呃。Luva语言呢,在NG上去跑的话呢,性能是远高于他们的啊,包括现在嗯,大家认为性能之王的这个note JS啊,它在执行的时候呢,也是远远不及于这个路爱语言在N上跑,那么我们就可以略微的去牺牲一些这个呃性能,然后呢呃,提高一些我们的这个开发上的便捷,那也这这也是为什么现在这个有很多的项目,开源项目啊,使用这个撸啊去做这种二次开发,比较知名的呢,有一些高性能的开源网关,像空啊,像这个呃,API six。
02:00
啊,或者一些其他的这种对呃性能要求比较高的这种服务,还呃像这个呃AAWF就是这种呃软防火墙啊都都这个选择的,用这个NGS加Lu去做开发,所以说明了它现在在使用的时候,稳定性和可靠性还是呃比较好的,另外就是开发上来说呢,难度比较低啊,一般的程学呢,通过半天左右的学习的时间。呃,也就能快速的上手了啊,这是呃lur语言,我们在这套课里边呢,用它来做这个二次开发的,呃,这个主要语言,然后再有就是卢瓦。是一门这个脚本语言啊,他是巴西人开发的啊,里约热对读啊,天主教大学的一个呃小组开发出来的一个脚本语言,什么叫脚本语言呢?就像Python,像呃这个JS啊,这都属于脚本语言在执行的过程当中呢去解释。
03:02
啊,然后嗯,广泛的应用在这个客户端去运行,因为它比较小啊,而且在运行的时候轻量是轻量级的,你像JS这些呢,都是运行在我们的客户端,包括手机内能运行对吧?呃,它的功能呢,一定没有那么强大,所以它的执行效率啊才会比较高。然后呃,这个撸啊记,这是对原有的解析器,就是对于lur语言的解析的,呃,一层加强,这是额外的一个解析器。撸啊撸R这一门,嗯编程语言撸R记的呢,呃对比起来它就相当于是呃Java对于JDK,它不只是有解析器,还有一些嗯额外的一些基础的这些功能包啊,这是拉记T,我们呢,呃用的也是用这个记T。那么这个NG格呢,是可以去呃内嵌这个Lu记来执行呃Lu的脚本语言的,这三者是这个关系啊,它相当于是一个承载的容器啊,然后open re,嗯,相当于这个呃把额外的一些扩展包同时集成到了NG森里,那么如果嗯,我们用Java语言去做这种关键的类比的话呢,这lur呢,就相当于是最基础的Java语言。
04:20
呢相当于就是JDK,那NG呢,是运行的这个平台。然后open re呢,相当于我们现在用的spring的全家桶里边有很多的这种基础使用的脚手架,比如说对于HTV请求的这种处理,比如说对一些嗯,通常呃,我们会使用的一些对字符串的处理,还有很多的现成的这种呃工具功能包,比如说模板引擎等等等等啊,都在open rest的这个扩展的包里边都能找得到啊,所以它在Java原理呢,就像spring啊,它什么都有啊,把这个基础的语言呢做得更加完善,并且有很多可以拿出来使用的脚手架。
05:03
啊,这个op呢,我们也非常骄傲,就是一个呃,国人开发的,并且。呃,开源出来在全世界呢,都非常有影响力的这么一个,呃,这这这么一个这个中间舰啊。外语言,呃在开发的时候啊,本质上它并不是像呃面向这个web开发发明出来的语言。有很多的这种游戏啊,会选择撸亚语言啊,这个你像这最知名的魔兽世界,在十几年前我在玩游戏的时候呢,就看到了他在目录下边有好多这个点撸啊的这个文件,打开一看的全是铭文啊,就是这些源码我们全都能看得见,但是当时不懂,也不知道这是啥。啊,现在呢,呃,大大伙在如果再打开这个魔兽世界它的这个呃,一些一些一些客户端里边的一些目录的话,你还是能看到很多的点撸啊,这就是呃客户端去执行的一些脚本程序,呃完成一些基础的逻辑开发,用这个撸啊语言只是是再好不过的,不只是魔兽世界啊,还有很多其他的游戏,包括手游都会用这个撸啊去做这种内嵌式的编程,选择它呢,呃主要也是因为它一是小巧,第二就是解析起来呢,呃速度比较快。
06:20
啊,它比较适合应用在这种呃空间狭小的环境,然后还能完成一些逻辑上的那种判断啊,执行效率比较高啊,就像是呃,我们买circleq数据库,对比到这个circle light,呃,如果内嵌的手机的APP里,可能有很多人就会选择这个用circle light更轻量级。呃,那在开发撸啊的时候,呃,如果要是针对于我们的外部环境的话。我们在开发的时候也都是一些基础的,或者说是一些比较简单的功能,R语言并不适合这种大量的功能模块的开发,他在开发的时候呢。
07:00
由于它是脚本语言,在团队配合的时候,呃就会显得比较这个捉襟见肘,呃代码量一大了之后呢,就非常难以维护,当然我们也不期望在NG格上去做这种应用级的特别重量级的开发,你比如说你把一个ERP系统写在NG格里,这显然它不合理啊,但是如果想要做一些功能,就是屏蔽一些用户的请求,然后做反向代理的时候呢,呃,我让他更加灵活,想要想让他按照我自定义的,呃,人群的逻辑啊,或者是一些算法啊,我让他去执行,那我可以用鲁瓦在里边写这么一个模块,它像go语言一样,它比较适合用用这种语言的去开发一些这种,呃高性能的这种组件化的这种开发。那在开发的时候啊,有这么几个工具我们可以用,首先第一个呢是这个,呃一米啊doa这个是支持,呃这个it t呃这个idea的。
08:08
如果你用这个idea的idea的话呢,你可以用这个插件把它内嵌在你的这个idea里,它主要起到的功能也就是代码补全啊,帮我们去。呃,跑调用这个路记,让他去执行你写好的程序啊,这是第一个,呃,然后他有中文版啊,这是这个。呃。基于这个idea idea的这个插件,然后第二个呢,就是如果你习惯使用eclipse,这也有一个选择,叫ltd,在这个eclips的官网里你就能下载得到。我们在课上呢用这个啊,因为它比较完整,不需要装这个idea,直接下载下来就可以了。呃,这是完整版的LPD,它相当于集成了ecl的基础功能,再加上这个Lu的编译解析器,而且带代码补全功能啊,下载这这是下载位置,支持Mac Windows,如果你现在已经有了这种像sts或者其他的ecls eclipse版本的话,这还可以插件化的方式呢,给它给装进去啊。
09:19
这是插件化的安装。呃。这是基于idea IDE的这种开发模式啊呃,咱们作为这个web开发,或者基于N开发,其实用这个,嗯。IDE的机会并不是特别多,因为我们写的代码最多也就是几百行,少则几十行。啊,你在。IDE里开发的话呢,想能用到的也就是一些这种代码补全的功能,这里面的这个语法呢,其实很简单。一会我们学完之后,你会发现有很多时候其实我们用不上这个IDE,这个IDE主要是给写稍微复杂一点的业务逻辑,呃,时候我们在跑的时候,在本地做一下测试,这个倒还好,就是撸亚呢,嗯,它自身的语言啊,啊,因为比较小巧啊,所以它就会带来很多的缺陷,包括在开发上,我们在我们在开发的时候呢,也会比较麻烦。
10:16
呃,所有的这个调试工作呢,也都基于我们的web环境,就是NG,它应在NG里去跑,我们才能够去测试,所以在开发测试这个环节,至今为止啊,还是相对来说比较麻烦的一件事,呃,这些IDE呢,更多的是给写一些本地脚本,像游戏客户端啊,这这会可能会用到这个IDE,因为它在调试的时候面向于CS这种程序呢,它在本机上就能运行。啊,这是呃Lu语言啊,Open re,它集成的Lu记和很多第三方的这个包,并且呃把它有机的整合到一起,这是非常非常呃伟大非常用的这么一个相当于外部容器平台了啊,而且什么功能都有。
11:07
现在的社区呢,也比较活跃,我们期望呢,通过这这个这个阶段的学习,给大家打开一个新的大门,就是对于NG的二次开发,这个大门走进去之后,你会发现每一个点和我们在之前学习NGS的开源版本一样,打开之后呢,都会呃,变成一个非常庞大的世界,每一个点都值得去深入学习,那我们在剩下的时间里就在呃。本次授课的这个呃过程当中,在剩下的时间里,主要给大家去讲解open的使用,带大家呃进入这扇大门。
我来说两句