00:00
能够参加这次首次的腾讯技术开放的分享,下午呢,我会给大家介绍一下我们整个啊整个产品,以及我们会用一个小时的嗯时间啊会给大家介绍一下怎么样于啊来开发云端的va的应用,我本次是一个动手实验室,我会领大家啊手把手的通过从啊登录开始,然后到最终啊开发出一款啊非常经典的啊宠物医院的啊一个开放的API啊从这样的一个生命周期,嗯,大家介绍一下怎么样能让开发变得更简单。是一非常嗯,非常这个产品体验,以及是一个让嗯复杂的应用变得简单的一款产品,它面向的是呃开发者,它是一款呃,一个云端的一个IDE,他期望能做到了一个嗯呃,一个未来的我们的初衷,以及我们的未来想要达到的一个目标,也就是四个字,化繁为简,能让更多的人能够直接开发云端开发。
01:17
呃,本次的实验我们会去介绍一下整个整个的开发的云端的这个呃实例,同时会把整个宠物医院的开发过程都为大家呃详细的介绍一下。同时我会在这过程当中去把一些这个产品的主要的一些功能和它的方案进行一些介绍。然后同时也会介绍一下大致的实验流程,然后在这个实验说明之前,呃,我特别想要介绍一下,就是在群里面呃有我们的呃高级研发工程师杨素博同学会给大家做一个一些呃在过程当中一些答疑,同时我也会呃通过呃亲亲自动手的方式能让大家去理解。然后就是。
02:03
呃,操控,然后整个就从云端到底怎么样做好一款产品的开发,以及呃,怎么样从端到端能够在上面直接做开发,然后让整个的云端的从本地的开发能真正意义上的搬到了云端。呃,本次实验的目目标是我们能希望能把这个Java BOO的一个宠物医院的事例能够搬到这个云端的I。同时呃,我也会给大家介绍一下这个我们自己自研的一些能力,譬如说有些本地预览,然后也会有些端口发现啊。呃,第三个呢,我也会给大家讲解一下啊,这个宠物医院这个应用本身的一些经典的设计模式,以及啊一些架构思考啊同啊以及同时会带领大家去实现,因为开发基本上都会碰到的,经常会碰到的一个点就是调试,怎么样去调试,怎么样去学好单元测试。
03:04
嗯,第四步的话会给大家去介绍。怎么样能够快速的开发并增加一些微服务的调用接口啊,我也做一个非常简单的一个事例啊,最后我会介绍一下我们的自定义的模板能力,那你可以啊,尝试去把你的一些作品啊作为自定义模板分享给大家。呃,在呃,实验之前呢,我还是讲一下我们的整个产品理念和用户价值。和很多的共创用户去沟通,其呃大家也是开发者,我也是开发者,然后我们其实呃碰到一个很大的一个问题,实我们每次拉下的一个环境,特别是spring BOO啊这样这样的一个大的那种呃框架,它其实需要拉拉下来很多的这种依赖包,然后这个每个依赖包其实都是呃非常的,而且都是可能是在或者是么样,然后的网络会非常慢,同时完你可能还要一下对吧,你的里。
04:03
然后这里面可能会需要大概最快五到十分钟,你翻个墙也要这么点时间,所以的速度是非常的慢,然后拉也非常慢。第二点就是云上资源还是比较复杂的,学习成本比较高,当你去找到一些代码的时候,其实你发现这个代码其实是非常苍白的,你无法很快速的让这个代码能够跑起来,那么它跑起来有相关不同的因素了,就是你可能要配置一些东西,那配置过程当中你要去学,诶为什么要加这个配置,你的云上资源的理解有没有这个知识点对吧,你还要去理解它,所以这个东西太太复杂,小白用户不能以应用为最终的产物来学习,这个在学习成本上是非常高的。第三点其实是一些推送命令行的方式,然后code review,比如说在小团队里面去做code review的时候,可能也都不是很方便,那这些其实都是在点当中,我们寻找了一个产品定位,那这个定位在于我们能不能让小白的用户真正意义上的急速的开发体验。
05:03
其实很多的开发群体,他们真的就就是想去写代码,但是很多的复杂的前置和后置的一些因素会导致他们对这个开发上面的门槛过高。那么我们希望能够通过。私有化的一些技术,或者开箱寄存,就是这个是我们的理念啊,就是我们希望就是通过浏览器,通过云端。能够直接打开浏览器,并且啊自动就能够,呃,启动你的环境,然后就能够看到你的预览啊,这个是我们要达到的一个开箱存,开箱即用,然后用完即丢的这样的一种理念。同时我们有一个的一个开发环境啊,我们把那个所有的语言包都把它放进来,放进来的好处是在于,嗯。呃,你可能一开始写开发代代码的时候,并不一定知道它是一定要用哪种语言的,还有或者说你这个项目可能是混合的,有可能是构语言,有可能是Java语言,它是一种混合的服务的这样的一个架构,所以这个O的开发环境还是挺有必要的。
06:03
呃,同时我们也预计了更多的模板啊,就比如说呃,我刚才一直在聊的go啊,还有Java,包括今天的实验室,其实都面向于后端,那其实还有前端,我们也拥有了非常丰富的前端的框架模板,比如说new v,还有nes JS等这些非常主流的,国外非常主流的,然后国内也一直在用到的这样的一些,呃,前端的啊,这样的一个模板啊。这个你能够快速的帮你去实现,呃,前端的应用,并且发布到一些腾讯云上的一些云数啊,或者是其他的一些服务器上。呃,最终我们希望的是说,我们真的能让我们的理念啊,除了是开存开以外,其实最终的基因就是真的是any anywhere,我们望让在动上够的去整个啊个是我发这样的一个衷。
07:01
后面一个就是也会在实验室里面会给大家,嗯介绍的就是发布自定义模,当你做完的,呃,代码我一直称之为代码就是一种啊创作,你做完了一个创作呢,会有两种方式,一种创作可以提交到你的代码库。啊,代码库呢,会有一个问题,就是刚才说到了,就它只是作一个代码的啊存储,那其实还有一种方式是你可以把你这个作品作为一种模板进行一些分享,能让更多的人能够直接进来你的模板啊,直接就能按照你的环境啊,就直接能够跑起来啊,这个是我们想传达出的另外一种理念啊,以应用为视角。的一种传播与分享。好的,接下来的话,我会稍微讲一讲这个分布教学,就怎么样开发一个spring的一个微微。我会通过这个五大步骤啊,通过先让整个同学们去理解啊,去熟悉这个产品以及它的模板。
08:02
啊,同时呃,我们会打开对应的spring BOO的宠物医院。进行一些调试啊,同时我们会对里面的一些啊开发过程啊,单元测试,以及整个整个的架构啊做一些大致的梳理。啊,最后我们也会给大家去看一看这个preview这个能力啊,以及它的端口自动啊预览发现的这个能力啊,最终就是我们来看一下整个发布的模板,差不多整个的流程下来在20分钟啊左右,但是在这过程当中,我还会给大家观察,就是说我看看能不能做一个新的一个,就是新的一个A,然后这个A是能够实现这样的一个新的一个,比如说我有有个业务对吧,想要拿到我的API,这时候的话我写一个新的这样的API,看可以在这个实验室里面完成。
09:00
好的,然后接下来就直接进入到我们的整个产品演示环节,整个产品演示环节里面会包含着这个刚才说到的几大步骤,这几个步骤应该都会看不到。然后下面的一个链接是我们的这个部署在腾讯云上面的一个一个一个最终的一个版本,大家可以通过这个网址啊,直接啊进打开你的浏览器啊。嗯,最好是用,因为很多的情况,Chome的交互做的还是比那个更好一些啊,然后你通过这样的一个网,然后去访问,好,然后下来我来给大家做一个。嗯。OK,呃,首次进来的时候呢,就是大家,嗯。大家应该是没有登录太,但首先是大家在这个腾讯云的登录的注册过了吧,如果注册过的话,就一定要务必要注意就是一定实名,实名我个带容容所个,然后我们你可以问cloud com,然后进入你的注册通过。
10:18
I第一点这个网址,然后进来,但是如果没有进来,会跳到这个页面。然后登录。好的。好的,然后嗯,这里面就会进到我们整个的个面,开始是什么都有,是把我现在内容都掉就进来,应该就是这。接下来的话,呃,用户呃,同学们都可以进到全部模板,然后点到全部板里面,会发现我们这里面有非常多的呃模板的类型啊,有常用的模板,这个常用模板我们可以称之为是叫做你的环境啊,有可能是你的Ubuntu啊啊等。
11:03
然后接下来就是你的框架模板,我我刚才说到了这个面上后端,因为后端的框架本来就不是很多,但大部分都是在前端上面,前端上面是非常有名的几个前端包含的每一个的事例我们都有,就是我们为了让更多的人去理解这个框架,我们做了很多的sample啊,未来我们的sample还会越来越多。然后最后是一个的一些啊,腾讯的这个数这样的一种实例啊,我们今天就讲的是一个,所以我们可以直接去点这个啊spring这个,然后我们会配套的会加载好你的BOO的宠物医院,然后宠物医院本来如果你在本地去安装的话,然后基本上到五到十分钟,但是在我们这里我们都都已经构建好,其实你会发现我们的速度基本上是在。十秒以内,然后会就会打开你的最终的效果,然后甚至十秒都没有,可能是五秒左右大家就可以看到起来了,同时通过我们的视力库啊拉取最新的代码。
12:00
同时开始编译,然后并且去跑那个本啊,就是你仓库,然去跑出你的啊。然后这个就是我们会把物医院的的效果啊都放到右边,右边就是我们的预览窗口。然后呃,你可以通过嗯,看一下,如果你是想要是H5的话,你可以通过这个扫那个二维码,直接通过手机就可以直接进行访问啊,你也可以直接点开这个,那这个话就打开一个新的啊。这样的话,我们可以看到更全貌的一个样子,那么spring包含的是什么?包含的是一个非常经典的一个设计模式啊,就的一个设计模式I这样的一个概念。帮你把所有的啊信息通过C念你装起来么?实体所在这个物各种的实体,比如说是。每个owner上面,它其实是有更多的啊,Pets就是宠物和你这个每个宠物的visit啊,你可以去你的宠物啊。
13:06
你也可以去啊,ADD一个visit啊。就是相当于宠物医院,你每次的啊去记录。你也可以去。你的这个。啊,比如说我要把这个改成。然后。然后这样的话,我就完成了整个的操作,就是最经典的就CD以及三个实例,Owner与pet pet visit之间的关系,那我们称之为是就是entity,它们之间的关系是一对一或者一对多啊。然后最终我们会把这些相关的数据存在数据库里面,然后显示出来,然后加载更新,都是在这个上面去搞定。好,这个是我们大致的一个物的一个效果啊,然后我们呢,通过这个效果,我们来看一下这个整个代码,首先我先把这个先。当掉,当掉之后,我们来看一下这个整个代码结构,我把这个开始页面关掉。
14:06
我把这关了好,我们回到一个最最初的一个看代码的一个环节,然后呢,刚才提到的那个spring。Spring它本身是一个刚才到是IC的一个设计模式,所以它所有的东西都通过这个main函啊进行启动,那呃,刚才也说到的,这里面会有各种的这样的一个实体啊,就可以通过这个这个这个窗口。就可以啊,直接的直接能直接就能看到啊,刚才说到的啊,呃,NBC就是model and controller啊,从在这里面我们可以看到,譬如说每一个实体啊,这里定出了好多实体owner。Owner,它里面会有各种的,然后发现这里面其实是被我高亮啊,这个高亮的意思是啊,是一些语法啊,语法高亮,然后如果你要去做一些编辑的话,那么这里面是很容易的,会有一个智能的下拉菜单啊,这个后面会有演示。
15:02
啊owner pet是它的entity也是它的model层,然后VE是这个,然后visit是这个,接下来的话就是你的持久层。19层,那我在讲19层之前呢,其实呃。这里面其实已经在编译了,就是我这个代码其实已经在编译,所以编译完之后,这个project into啊,我就已经导入进来,所以导入进来之后呢,其实你会发现这个Java就在这个里面出现。大家如果习惯用eclips者IDE家该package pack命导览器文件的这种方式,那么我可以用另外一种视角啊,我们把这个收起来,我们可以看这个叫,然后呢,Class本身已经拥有了最新的内核,所以这个内核呃,能支持什么呢?支持就是我可以拖拽,比如说我在这里面看起来很不舒服的时候,我可以自己去定义这个左右的格式。那我们可以自己做一次调整,然后终身有效。
16:00
啊,我可以把Java按住鼠标不放,然后拖拽。啊,拖拽到顶部啊,这个是我比较喜欢的这样的一个布局方式啊,当然这个是因人而异。然后呢,接下来接接下来的话,我也比较喜欢有个大纲模式啊,我不知道多少人知道大纲就是大纲,所谓的大纲就是说在你的。在你的那个。在你的类里面啊,会有很多的这种函数,特别是in class,或者是一些别的啊,这种东西一些啊,语法啊,语法的这些东西啊,它其实在你代码里面看起来很不舒服的,呃,很很难找到东西的,特别是代码很多的情况下,你通过这种outline。啊,这样的模式呢,看起来更清楚,定位起来非常方便,特别是你去看一些源码啊,为什么这么说呢?就是呃,我们可以按长按command,如果大家是苹果键的话是command,如果是啊Windows的话直接按,然后呢,它会有一个这个链接,它可以一直往下去点啊,比如说我要去。的话是Java IO里面的一个一个一个啊,然后这个它这个里面的代码呢,其实其实是一般情况是看不到,但是我们是帮你把那个源码的都拉进来,所以你可以直接点那个civil啊。
17:10
其实没什么东西啊,我们看这个没有意义,我们来看一个,比如说。呃,就是in的话,那他基本上就是可以看到所有东西,那么如果你有大纲模式的话,这边开会更加清清楚,对你整个理解码也是非常有帮助。OK,好,然后接下来的话,你会发现其实我们继续说刚才的reporty啊,就是通过这里来进来,就是它一个main函数,然后你发现刚刚我把Java项目给加载进来的时候,这边就会多出来一个和debug,你可以它会自动去识别你的main函数,能让你帮助你快速的启动啊debug的模式。可以直接点debug,它就会启动,点run,它就会直接run,就不用回debug。好,然后接下来的话,我们刚才说到的一些Y的一个模式。然后我们来看那个,然后我们到Java JA的话,其实你会发现啊,他帮你做了一个package的分类,非常清楚啊,我们可以看它的那个。
18:02
呃,Repository,比如说这里的posy,一看就知道前面是个接口,这是个类啊。然后你也可以看那个petpo,那么为什么要讲那个po,就是所有的GPA啊,就是Java的持久化的那个框架里面,它都会继承reporty这个东西,那这reporty其实呃帮助你去定义,然后怎么样去把数据存储在你的数据库里。这个里面定义了每个实体都定义了对应的poy。接下来的话,我们来看一看这个数据库是什么。那数据库在这个里面的话,它在database里面分成了呃三种结构,一个是h two h two内存型数据库HQ啊,还有MYCQ啊。每一个都定义了一个STEM和。那么它怎么定的呢?为什么会有一个HQ或者是MY,它切换怎么切换呢?这里就讲到了,就是呃,Spring里叫做application。啊,这个就是J出来的,就是你要那个spring持or自。
19:06
就是DL,就是那个数据这个DL,如果你需要做DL,那么会帮你去调用这个S,那S是什么呢?就是去创建啊,他们他们就是去创建这个对应的这个。这个表结构啊,然后同时往表结构会帮你去填充对应的数据啊,这就是现在比较经典的这个事例嘛,就是你的sample啊,这sample是怎么进来的啊,为什么它会起来这里会有sample啊,都是通过这个啊or mapping以及是这个application properties里面的东西啊进行。进行弄。好呃,接下来的话就是怎么样看到它的前端页面呢?前端页面在哪里啊。简单页面就是在这里,就是它都是一个静态的地方,那它里面就是temp,那所谓temp它其实非常简单,它不是任何的一个前端的框架,但是他做的一个逻辑,比如说我要看一个list。On the list,那么这里面其实是一个表单,以及是一个循环去拿到这个nc controller,调用controller拿到所有的数据,然后在model层里面,View里面去展示啊,所有的数据通啊,从而显示啊,渲染前端通过后端的方式去渲染到这个后端,后端通过模型,然后通过控控制器,然后呃,调用触发拿到返回出的结果,然后由前端自动去渲染。
20:24
基本上这个逻辑啊,这个这个就是呃,Spring的大致的一个结构。接下来的话,我们可以做一个简单的一个。大家可以在这里设置一个断点。啊,咱们在这里是个断点,嗯,意义不是很大,然后我们可以在这个,比如说owner,咱们今天就看一个owner。Owner里面的owner,刚才刚才说到的,其实背后都会有对应的controller,那么我们可以在这个整个controller里面进行一个设置,一个。设置一个断点。这个其实就是说我要展示一个的一个数据。
21:00
这时候的话呢,我还是回到了加va clinic application,点这个。也可以直接点。Spring里面的这个扩展的插件里面的这个啊。都是可以的,那我今天就在这里,我们就在这里。了之后呢,然后他就开始去做一件事情,就是啊去你的,然后同时底部就开始啊变成黄色。他其实在做一件事情,就是把一些相关的bug的相关的数据。呃,以及这里面的相关的对战啊,都会在左边以及在右边啊,以及是在当前都会。体现出来啊。然后呢,我现在还没有出发到,是因为还没有出发到刚才那地方,刚才是做了一个,那么这时候我可以在这里面选一个find一个owner,然后选择这个。那么这个时候呢,它会触发到刚才的那个识别出来的这个。S的那个啊,这个这个get maps,这个get maps是啊spring里面的一个no啊,它这个里面定义出来就是说在什么情况下。
22:08
在什么情况下,它会被触发的这样的一个URL链接,那么这个的链接是会在啊model层啊定义之后,然后呢,它在启动的时候由spring注入进来,然后spring注入进来之后呢,他就知道当我访问到这个地方的时候,哎,我就被触发到。然后修时候,当你把鼠标放上去的时候,你会知道owner是等于一,当然右边也会显示了。然后呢,我可以通过上面顶部的这个条啊,这个条是可以脱带。啊,里面会有几个,呃,属性这个就非常常规的debug了,然后我们可以一步步走啊,Model and view,就定义成那个model view层,然后拿到了那个通过调那个find版ID啊,调用那个owner的reposory,然后拿到的owner entity,然后呢,我可以去查看owner entity是什么。它里面有什么的,我都可以直接看得到,当然你也可以在这里面也可以直接看到,里面可以看到这个S是什。然后我可以继续往下走。
23:01
啊,然后我就我在这直接。完之后就可以拿到modelc的里面的model and这个object里面对应的东西是什么?啊,这就是个简单的一个DEMO的一个一个事例。当。好的,然后接下来的话再给大家演示一个也比较经典的一个开发的过程,就是到刚所例都是面向于页面。那么我们想要做一情,就是向况做一做一些事情啊,这些事情是希望能够帮助用户用直接去调用。
24:05
然后呢,我然后呢,我可以直接在这个Java里面呢,我可以建一个类啊,我现在来演示一下,我们来开发开发一个应用的这个。然后在这里面呢,我们可以有一个,呃,大家看到这都是package,所以package上去之后呢,前面会有个加号。OK,然后我们现在想要做一做一件事情,就是我想要返啊,我想要做一个的A啊,通过输入的一个参数啊,我能够返回啊,一个的一个格式啊,帮助其他的调用方能够方便的调用我的开放接口。那我这那我在这里直接一个。然后这时候点回车之后,你会发现这个controller已经被我创建出来,同时命名了这个package。然后呃,为了这个时间的关系呢,我这边呢,做了我已经写好了一些代码,然后把这个代码先来。
25:03
我跟大家再讲一讲这个里面的逻辑。其实呃,一开始贴进来的时候,你会发现我故意没有把它的import给贴进啊,是因为当我输入一些东西的时候,我一般情况下是不会有import,那这时候怎么办呢?那在这整个ID里面会帮你去自动去有一个小呃小的那个灯号,然后他会告诉你是不是要去import这个owner posty,我点个yes之后,它会帮你把那个东西给import,当然也有快捷键。一个捷键,快捷键就是上去之后看一灯泡看是什么啊,然后我来告诉大家那个什么,就是你放上去之后,然后点个command加个点。然后它会换出这个东西,然后它会告诉你是不是要一个spring的spring.web点啊点no这个库啊。OK。就把它了。
26:03
然后我们一个一个的import。好,直到我们这边就全部完成了,那么我们可以save一下。呃,当然你也可以不用点C,因为我们每写一个代码,我们自动是C。这个大家不用太担心这个啊,接下来的话,我们写完了,写完怎么办呢?我们得要做一个。我可以在这里设一个断点。
27:01
然接下来的话,我这里可以啊去这个东西,然后呢,首先我先说一下这个类啊,这个类是干嘛用的呢?首先是刚才说的所有的东西都是有controller在的,那么这个controller呢,其实是被我。嗯。这里其实还漏了一个啊,这里刚才说到那个controller前面是要有一个这个。嗯。注入的,不然的话,你的spring是无法去识别你的这个是一个是一个ler。然后我们快速修复里面。接下的话我们这边就非常清楚就知道了,首先这是一个controller,然后这个controller是有个request map斜杠先出一个版。接下来的话,我通过后面的maps,我就可以直接拼出这个URL,这个UR能帮我返回,通过这是一个get的一个请求,返回出一个类似于Jason的格式,我通过调用owner的find ID这个方法的postery,然后拿到对应的,然后通过序列化的方式啊,呈现成一个杰森的这样的一个格式。
28:03
就是一个整体的一个open API的一个效果,接下来的话我就可以用啊,我们用这个。然后我们点。大家看到,当我起来的时候,它会自动会开启这个东西。好的,然后我们把这个呃拿出来之后呢,我直在这里直接去问。傻逼。接下来的话,V杠一之后点之后你发现我这个点进来。进来之后你以一个去调啊,看我是个接。这样的一个结算的这样的一个格式。然后呢,呃,这种方式可能并不优雅啊,那我们也可以找一些啊,第三方的一些展的这样的一个能力啊,比如说我们在这里面找。
29:08
啊,这个是一个一个别人就是一个开源的一个rest的API,它可以直接进行一个安装,进行一个轻量级的A的一个啊可以啊。这个也是非常方便的,那你可以在这个上面去装一下,装一下之后呢,其实不需要做任何的刷新,你就发现这边已经出现了,接下来的话我可以点一个。然后我把刚才的这个。复制一下。然后呢,Send一下之后呢,你会发现诶,我的断点又进来了,因为我断电并没有消失掉,我可以继续走走完。啊,走完之后呢,我会发现其实啊,它会给你一个最终的一个response的这样的一个son的这样的一个格式啊,它是一种高的可以看得非常清楚,然后告诉你是,然后你的response是。就通过这种方式呢,就告诉大家,其实是一款非常开放的一个软件的一个开放平台,它可以有更多的人去开发你的扩展,扩展点你也可以去到啊,非常优秀的扩展点啊,扩展的应用啊进行开发,你也可以开发企业级的扩展啊,这样做你自己的这种啊开发场景啊,这都是没有问题。
30:22
好的,然后我这里再停一下。好,接下来的话,我给大家再最后演示一下我们的这个功能测试。在所有的开发里面呢,一般况下就是测环节里面,其实这个事例里面已经内置了很多的这样的一个例库啊,以及它的单元测试,然后我们可以通过这个访问,然后啊定一个单元测试,然后呢,我可以通过这个全部去执行。可以直接进行一些啊。
31:00
它可以进行运行你的单元测试,然后这个单元测试是大概有30几个,那他会帮你先你现在的当前的一个环境啊,以及你的spring的一个开发的这个容器,然后同时呃,在右下角,在这个下面会告诉你现在已经通过多少个。然后发现现在到底有多少个百分之多少通过率。就是我们现在的单元测试,当然你也可以直接啊,比如说我比如说我这个挂了。比如说我这个挂了,然后可以点这个。可以直接跳到对应的这个代码里面进行一些啊。啊,代码里面进行一些查看,看我的单元测试是个什么样的情况,然后呢,你也可以呢,对于你这个单元测试呢,进行啊重新啊这些都是没有问题,然后呢,他也会在整个的左边都会告诉你这边的勾,告诉你这个的测试是正确的。它是错误的啊。比如说呃,我们这边可以故意做错。错一个之后呢,然后我们在这里一。
32:10
OK,好,这里出这里出了错,然后我知道现在出错率,现在是嗯,就是通过率是90%。啊,应该要看看,应该是97.4%,然后呢,我可以点开双击这个对应的出错的地方会告诉你啊,你其实希望是这个人,但实际上你的这个东西是这个。啊,你期望是这个,但实际上是这个,所以导致你运行出错。然后可以进行一些修复。进行一些修复,然后呢去fix这个问题。然后呢,你再去就可以了啊,整个的流程是给大家刚演示的那个链,就是通过启动一个VI出来的一个东西,然后我可以运行我的整个的物医院,同时我可以进行一些非常快速的调试啊,去理解整个的框架。
33:04
然后接下来的话,我能够很快速进行开发,能够通过spring的这个插件,以及我们的整个的可视化的这个界面,能让你快速的创建对应的类以及controller,能实现一个新的业务开发。同时也可以帮助用户保证质量的单元测试。当你全部写完之后,你想把你的作品分享给大家的时候,可以通过点击文件啊。呃,件文件之后点击发布啊,自定义模板,然后这时候的话,你可以就有一个叫二这个版本,我们是面向应用的,然后这时候你可以把这个东西分享出去。然后分享也是非常快的,然后分享出来之后会有个链接啊,这个链接你会down。呃,也可以提到你的,呃,知识库里面很多知识是支持这个down这个语法。你可以写完你的对的一个创作代码的一些识的内容,接下来的话,你可以用down的方式去写,写完之后呢,可以贴一段这个东西,那么这样表达效果就非常的表达非常有意思,就是当你完个作品之后,你可以去写点文章,近一些知识的传播,然后同时附带了你的这个标,那么这样的话,读者可以看到你的知识的分享之后,可以快速的体验你的作品。
34:16
这个是非常有帮助的,不需要让呃知识知识分享的同学,呃知识分享的作者去思考怎么样去传播你的应用,传播你的分享。然后我们来这做一个例啊,这里面因为我是一个账号登进去,所以我启动了一个隐私模式。点击这个之后呢。呃,需要用户进行一个第二次的扫码啊,第二次扫码就比如说这个人是另外一个人,那另外一个人你也需要去一下。啊,扫一下之后呢,就比如说我是另外一个人,另外一个人拿到了这个链接之后。他就会进到这个里面来,就是是谁分享了一个模板啊,比如说spring v啊,这个时候呢,他就可以直接去建了这个的工作空间啊,就是基于他的模板创建对应的工作空间进行进行啊进一步的一个创作的分享,然后这里面是因为我另外一个人的工作空间已经达到了一个上限,接下来我把它。
35:14
删了。删了之后呢,我重新再来一次,因为刚才已经有登录态。接下来的话就是相当于说我现在一个用户啊,拿到了你的,呃,拿到了通过你的作品的传播,知识的传播,然后我拿到了我想体验一下你的东西之后啊,我就点了你那个链接,就点了你的小button,就是你的出来的一个button。然或者说享接出来个果然,你可以个建工根据。你的当就是他会把你当前的这个分享出来的所有内容,所有的变更啊,都会拉到你自己这边来了一份就是复制了一份啊,然后你就可以基于你就快速能够体验并且跑跑完整个的呃实例,然后你也可以出来这个里面代码是什么样子的,你也知道这个整个的启动的呃效果是什么样子的,就是面向于作品。
36:06
作品。OK,然后我们来看一下,其实在这个里面已经也有一个多了一个啊,刚才刚才出来这个rest controller对吧,这个rest controller,其实这个rest controller其实在我本地,我也就是我把我的作品对吧,包括我新的代码都可以通过自定义模板分享出去啊。这就是自定模板的功能。然后刚才为什么是我们一起来的,一启动那个模板的时候呢,它可以直接就跑呢,就是因为我们有个这个,这里面就是打开的预览文件,我们来理解一下这个pre有什这个pro就告诉你,首先我的应用端口会不断去监听8080端口,同时我们会有一个run这个能力,就当我启动完之后,我会有个run,就直接帮你去跑你的那个pre这样的一个效果啊,跑出来的效果,这样这样的话,你定义完了这个pre点压,那么它就可以在你启动的过程当中。启动完了,它就会自动打开preview的这个插件,右边就会启,就是会呃,会会打开对应的这个右边的一个preview的一个窗口啊。
37:02
我们这个是自己做的,实现这个整个开发,左边开发右边就能看到整个的效果,特别是符合偏前端的。同学的应用的一个场景,就是我写完左边的代码,右边马上就能看到,看到那个效果,这一点是非常有帮助。呃,大致的,呃呃,流程是这样的,然后。呃,我然后我来看一下这个这里面。的讲解。呃,这次的讲解差不多是到这里为主。我看也可以,可以对把刚刚关键的一些点啊,再和那个这个小伙伴们再讲一下,好的,没问题,没问题到这边,嗯,好的,然后首先第一个关键点啊,就是大家可以看到,就是通过全部加载完了之后,最重要的一个点就是我们可以有一个这两块啊,第一个就是预览文件点啊,你也可以通过快捷键也好,还是通过这个菜单,通过菜单最直接,然后点开这个东西,然后如果你没有帮你创建,如果有你就会在这里会出现。
38:17
然后呢,我们这里面会有几个参数,然后边上也备注了这个内容啊。非常容易,就是你这个东西,如果你把它停掉之后,你也可以通过你本地的这个。你也可以通过我的命令行对吧,Spring杠冒号它可以自动去启动啊。起到你的那个环境啊,这个应该已经过。我们可以直接去启动这个,我们可以把这个controller。我们可以把这个整个的。
39:00
Controller对吧?Controller其实不需要的话,我们可以删除。哦,删掉之后呢,我迎到原来的状态。然后的spring的为什么我刚才说是因为我没有在,因为我只是做了个实例,所以没有在这个整个application这个,因为刚才说到了spring其实是一个注入,所以我需要在整个注入的地方也要引入,所以我就为了简单,我就把那个文件删了啊。可以,就是我想说的是,你可以在整个命令行里面。进行一个啊,进行一个就是呃输入啊,你也可以进行嗯,更多的呃帮助,或者你有更多的命令,都可以在命令里面去输,我们支持所有的这样的操作,你可以非常容易的把这个当成是一个的IDE,但是我们本地IDE是需要你环境的,需要做多的前置的准备工作,但是不需要会在你云端的上面帮帮你持久化的构建你所有需要的东西,当然如果你真的还需要其他的依赖包,那这个也没有问题啊,但是你也不用担心,你关了浏览器这个东西就没有了,我会帮你下来。
40:06
我们来举一个例子。呃,OK,这个例子就先不讲了,因为我觉得在这里面还是给大家讲一些重点啊,就是已经有的一些功能的重点。然后我这里。嗯。OK,好,第二个例子就是,嗯。就是我如果要去做一个啊实例的来看的话,那么这里面可以建议大家啊,去把这个整个里面的这个插件啊,啊就是用好这整个的Java的project这个这个扩展,以及这个整个spring的这个扩展,那为什么说这个这个做的做的好呢,就好用呢。就是啊,在这里面你可以一键起来啊,一键起来是比较容易就帮你,就是你连命令都不用打,都帮你开发住了啊,你也可以直接就停掉啊。
41:01
最关键的一点是刚才说到的,你要去理解spring啊,Spring是什么?Spring是一堆的S和一堆的mapping定义出来的,这样的依赖注入。它其实都是一些notation,但是如果你去在这个,所以为什么说,呃,我这边不太想想给大家通过这个视图来看,因为这个视图太难以呃找到对应的annotation,那spring呢,这个扩展帮你找到很多an,什么叫notation呢?就是我在每一个地方。比如说我的controller。这controller里面定义了什么?我定义了是controller,对不对?只有它annotation的一个controller,那这个controller做什么事呢?它关联了一个vey OK,那差,呃,Better report里面就很简单,它就是告诉你这里面会有一些呃,智能的引导,告诉你这其实是来自于。啊被VE controller调用的,但是它是又受这个GPA的model,这个mappings啊,这个里面就概念就比较就比较复杂了,这这个属于spring的概念啊,这个里面就相当于告诉你,就是这个better是做是做个G的啊,他做的这件事情就是这个东西。
42:08
呃,以及它的,呃,你会发现这个beams里面定义了它所有的东西,包括它的一些con啊,还有controller,以及是一个spring的启动application都能在这里找到,所以你就不需要去找类,你只要找。在spring里面,它的入口永远是一个S定义出来的东西啊。这个是很关键,接下来的话就是我所谓的啊,Controller出来的这个endpoint的mappings,这个是很关键的,刚才说到了NC的模式里面,你的controller定义出来的这个mapping是要被model层给啊消费掉的,然后这个model层的view,它说错了,是view层给消费掉的,所以view层里面定义出来的所有的流转都必须在你的spring的PA clinic clinic里面进行一个一定定义的映射,这样的话你可以在任何的地方,换句话说,你在这个里面。设置任何断点,你在你的view里面,只要被触发到这个地址,它就会被啊到啊,这个是非常棒的,你不需要去找这个,这个函数到底在哪里,这个函数在处在哪个CTRL里啊,这个就是。
43:13
不需要知道它是一种,它是一种,呃,你可以认为它是一种,呃,IC的一种设计模式,它通过依赖的方式让更多的函啊,方法啊,不需要这个前后依赖的关系去调用啊,它其实是一种注入啊,不需要是一种非常强耦合的,像原来这种最传统的软件,它需要A,呃,就是客户,就是customer和orders之间的关系,必须是一个强耦合的关系,它并不需要它是customer就是customer order就是orders,他们通过依赖注入的方式。让整个环境啊,这是一种设计模式哈,这个这个大家可以解一个I整个开发件。啊,这里面只是讲的是已经完全支持了对于整个的Java以及Java spring的这种开发,调试,测试啊,写代码啊,发布以及。
44:03
呃,作品分享啊,都能支持,而且非常稳定,非常快,而且也有很好的效果。也通过这种可拖拽的方式,能让你重新布局想要的这种效果。这个是特别想实验室里大家一种念这种理念的端开发。变得简单。我们的人群是希望开。更加容易,而不是开发变得更复杂。那么我们希望能够做出一些不一样的产品,能帮助大家能,嗯提高效率,嗯,降本增效,然后化繁为简,这个是整个实验室传播出来一种新理念。好的啊,然后嗯。其他的我觉得应该没有太多。大家线上同学。嗯,有什么问题吗?
45:06
啊,这里我可以再强调一下,就是这个的报告里面的几个功能哈,第一个就是呃,暂停就是不用讲,就这个是单步,然后这个就是进到你的函数里面进行调试,然后这个就是调,调试之后我跳出去,跳到跳到外层。这个就是,然后这个就是停止,那这个地方又多了一个功能,停止还有更多的地方,它有个叫断开链接,什么意思,就是当我的时候,比如说eclipse的时候,然后你突然停掉。那你真的意义上真的是停掉停了断停了,同时你会把你当前的那个启动的那个进程给杀了,那这个情况下就是只要接不需要停。这是非常有意义。另外一个点就是这个这个闪,那个那个闪电,这个闪电的作用就相当于是说啊,大家知道那个启动Java其实是很慢的,它需要一个前置的编译,然后到那个二进制包之后,然后发你的上面,然后你才能启动,那这件事,其实说我变更的量的情况下啊,比如说。
46:05
嗯,我想想看。这里比如说我要做一个。你会发现其实他都在hot,就是hot吧,你看他其实每次都在跑,就是我当我做任何的操作的时候,他其实是会有一个这个,呃,就是hot code replace这个能力啊,让你去直接。完了上就生效,不需要重新,这个其实很耗费时间。这个这个他会把你的增量啊做一个啊,做一个替换啊,这个这个就是另外一种维度,但常规情况下是不太会去点这个的,然后但你如果你真的需要的话,一般情况做大型项目的时候就有用。这个再。
47:00
差不多是这样的一个逻辑。然后接下来的话是你也可以,当如果你有任何变化的时候,这边其实如果你是个原代码,你也可以直接啊,通过原代码的方式去克隆下来,然后通过一些变化,然后推送到你的代码仓库啊,这些都是可以,然后最后最终发整个C。这些都是可以。接下来的话就是如果我要对一个东西进行搜索啊,这个也是非常简单。非常他就面到任何方去,包括是它的文件名,还是它的这个文件名的内容,以及你也可以有更高级的这个格式啊。啊,或者是说你直接或者你直接啊说哎,我太多了,这关关切不关切不方便啊,我直接可以在我的编辑器里面打开啊。编辑器没打开,那这个为什么编器打开呢?是因为我每次可能要看文件的时候在这里看,但我看搜索在这里看,每次切换非常非常麻烦,那这种情况下呢,我可以通过啊直接啊打开到这个在编辑中打开啊,这里面就非常快的能找到。
48:11
啊,也是非常的有意义。比如说我要查一个X,然后呢,会把整个X这个东西都会进去,如果我要去查一个一个文件啊,比如说这个文件是。嗯,然后这里面会发现我有个welcome哦,原来我有个welcome的这个controller啊,定义出来这个welcome的这个内容,然后我就叫双击,然后我就进到我就直接进到这里来了,右边是它的整个的这个内容啊。然后我可以一键就能看到,然后你也可以直接进行一个,嗯,点开直接进到这个welcome。这个也是非常方便。让整个的开发的体验啊,感觉更好,然后接下来的话就是整个的快捷方式啊command p,其实就是你直接去查这个文件啊,我就直接他都把你索引好了,那我可以直接查1Y。
49:00
那我会把所有带有repository。的文件都会列出来,然后它会有根据你最近打开文件结果的排序啊,直接打开。同时呢,你也可以,你也可以啊。你们可以去直接打开一个文件,就是这里面会有很多的快捷键啊,一个是command o啊command p,然后command shift p啊,然后可以做一些啊简单的操作,你也可以把去了然打意。出个意思代表了什么意思,就刚才说到了那个spring里面啊。它有很多的这个东西,它在这个里。但是你每次都要通过鼠标点啊,那现在最经典的一个逻辑就是我们可以更快。然后直接加一个号。然后会把你所有的这个。Controller相关的东西啊。啊,都会列出来,就是它的所有no的东西,就是就是这个icon的这个东西,Noation的东西都会把你列出来,那所有no东西所对应的,比如说我要看这个是什么东西的时候,都非常容易的就能知道啊。
50:05
我就能知道,而且这个东西它,而且它的搜索的效果是。啊,它其实是一个快捷键,就是你你可以找任何的东西在这个上面。非常容易,也不会有任何的卡顿。然后你会发现整体的东西开发的时间再久,它不是个线性的内存增长,它是不增长,这个就是内核的,内核的好处就是让整个的内存的呃占比的效率永远是停留在这个可控的范围之内的啊,不像就是一些桌面端的话,它有可能会让你的内存会越来越多,越来越多导致你的电脑会很慢,如果你觉得很慢,没关系,关了浏览器再打开一次。这都没有问题,或者是说你你你你觉得今天做完了,然后你就直接把浏览器关了,下次明天再打开,还是你昨天关掉浏览器的最终的样子,即使你的文件没有保存,我们也会帮你。那个自动的保存下来啊,我们都会帮你做到这一啊,就是你做完东西。
51:04
做完东西你没有发布之前,或者你发布,反正任何时候都可以进行。呃,用完用完寄存,然后用完,呃用完寄存,然后用完了,你就可以丢,你就可以关啊这都不会有任何影响。说大家还有什么问题吗?嗯,好,王老师,没关系,呃,会后可以把这个回放啊,我们发到群里面,包括在这个各个平台也会上架给到这个所有的。开发者的。大家也可以体验一下,之后不是va项目的别的用的一些例,我们每一个模板都有了非常非常的。
52:07
大家都可以进去以去体验,所以我们期望是多向开发的时候,是面向应用开发。让多人的开发变得简。好,那谢谢两位老师,我们今天这场直播就可以到这里。好,谢谢大家,拜拜。
我来说两句