移动端App 4|学习笔记

简介: 快速学习移动端App 4

开发者学堂课程【高校精品课-上海交通大学 -互联网应用开发技术:移动端App 4】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/76/detail/15782


移动端App 4


目录

一、Touchable

二、页面跳转

三、如何通过网络抓取数据

四、复用


一、Touchable

上节课讲到了布局,后面就要去处理这个事件,因为手机比较特殊,屏幕是触屏的,要去处理所有的触动的动作触屏的动作有点击一下以及长的区别在处理触屏这个动作的时候常见的是点击一下

image.png

比如在这里定义了buttononPress就是按下去,不叫onClick因为在手机是用手指去摁要去调用我们定义的方法,这个就是我们自己定义的方法,它就会弹窗。所以这里看到的个按钮无论按哪一个,它都会弹窗去显示信息。

image.png

react- native里面除了按钮可以按的很多东西都可以摁这一类东西统称为touchable,就是可以按的东西它有能力去捕捉按下的姿势是什么比如短还是长

image.png

这里可以看到摁和长摁分别是什么,按照识别出来的姿势去显示相应的东西。这里面列了一些算touchable的东西,网上也有。

TouchableHighlight是说摁的时候高亮显示一下TouchableOpacity是会变得透明一点,

TouchableNativeFeedback 是说它按照操作系统,比如安卓或者是ios的本地的特征的表现方式去显示TouchableWithoutFeedback是说不带任何的反馈。

image.png

所以,后面有一个例子用到了这些不同的按钮统称为touchable的东西,们都会有被按下的时候要去调用什么方法这里的NativeFeedback就是按下会调用这个方法但它会把背景设置成比如它如果是安卓的,它就会把背景设置成安卓特有的背景,否则的话就是空什么都没有所以它只能在安卓手机上这个效果。也可以是像下面的放这种按钮,如果是安卓的,它显示只有安卓能跑,否则不显示。

TouchableOpacity点一下它会变暗,TouchableNativeFeedbackAndroid only) 是说它只能在安卓上跑,所以点它没有反应,Touchable with long press点一下就会出按下的这个按钮但是长按它,就会说你长按这个按钮。所以这个代码不复杂,它的意思就是在说已经提供了这些东西,你可以去用它在响应不同的事件,可以理解为就像按web上的按钮,只不过它的onClick在手机上变成了onPress和onlongpress就是有两种不同的动作。这些就是关于touchable的东西

 

二、页面跳转

接下来讲页面的之间的跳转。它的页面之间的跳转和之前看到的微信上的页面跳转是类似的采用的是一种堆叠的方式在那里跳转。

image.png

要注意的是要用到react-navigation react-navigation是自己的工程,有自己独立的页,在这个网页上看它的官方文档要有安装的过程因为装上才能用在使用的时候就要导入它才能去使用。

image.png

在整个通过React-navigation做页面导航的时候就要把所有的信息放到<NavigationContainer>里面实际上微信走地跟这个路线一样,只不过这个信息是放在了它的配置信息里面,就是那个Js文件里面。这里面它是按堆叠的方式放了,例如,假如做了两个页面一个叫Home对应的写了叫home的控件另外一个Profile,对应写的一个叫Profile的控件。那么堆叠的Navigator里面依次把它列出来列出来的同时要考虑们互相之间怎么跳因为现在只是把它列出来了,它跳转的时候比如说在home的控件里面当它在调用的时候,

image.png

这些信息可以传递进来。

image.png

就会说上面有一个按钮这个按钮一旦按下就把它导航到Profile那去。带进去的Profile,比如说它带参数,就是我们说的Profile的props,就把name给传递进去这就导航到了Profile。

当然这个工具不会这么简单只是简单提一下。接下来看一个稍微复杂一点的例子网上的例子。

image.png

这个例子是说我有一个叫HomeScreen的东西在创建的时候Navigation的信息会进来然后我有个View,这个View是居中的以下布局上的东西上节课提到过,不详细说再往下看,里面有叫做HomeScreen的text就显示了一行文本然后有一个button,这个button按下的时候,用传递进来的navigation去导航到details上。这个信息就在下面的app这里可以看到它在定义NavigationContainer里面有个Stack.Navigator,就是堆叠式的,这个navigator里面就会写Home对应的就是HomeScreen这个componentdetails对应就是DetailsScreen这个component。

所以它的意思就是你按下这个按钮之后,它就跳转到了这个页面。跳转到这边,

image.png

再看这边

image.png

这边也要接受navigation,那就是说这边路由的信息会传递过来上面就会有一行字,有几个按钮,其中第一个按钮是说go to details again就是往前再走一次,再次走到detail就注意它的navigation.push details),就是它自己的页面就在这,它往里面像堆栈一样再加一层还是它这个页面就是details的页面details对应的还是DetailsScreen就相当于它又加进这一层。

如果按了这个按钮,就相当于在这个页面先是有HomeScreenDetailsScreen,然后又有一个DetailsScreen。

为什么要这么做?原因是底下有这东西

image.png

先看Go back就是navigation.goBack往前回退格,回退一个页面。刚说有三个页面,一个home两个details。现第二个details,go back就回到了第一个details然后Go back to first screen instack,是说要一直pop到顶端为止,那就直接回到了home这个是相当于要通过navigation就是导航的信息直接跳到home对应的页面上所以它是几种不同的情况,可以看到它跑起来的样子。

image.png

image.png

image.png

image.png

可以看到这是home的页面,因为在这里面一启动的时候就会跑到Home里面来。

在这里,它是initialRouteName,所以就跑到这个home页面home,只有HomeScreen,是go to details这个按钮点一下就会到Details

image.png

Details就会有刚才看到这四个按钮。再点一下,它又进到Details可以按回退的按钮看一下回退一下,还在第一层的Details再回退一次,才到Home然后再进去进一层这个go back就回退到前一层Go to home直接回到home。在这里可以可以进很多层多点几次直接一个页面它就直接跳转过来了。

它跟home的区别就是这个地方是要让它跳到具体的某一页面上,

这个是说跳到一个开始。

image.png

这个是往前跳一

所以就是这样来的,可以看到也不是很复杂,就是用的navigation的各种各样的导航的方法的navigate有go back pop to pop等等。手机上的验证的导航其实跟Web上的差异并不大而且它还看起来更容易一些因为它主要用到回退这样的功能。这是它有关导航的,详细的要看具体的工程。

image.png

底下会有它动画的效果这个比较简单,就是如果要使用这个动画的效果它会持续多长时间,每一次就开始去把颜色变暗。

image.png

就是做这样的动作这个按钮一旦按下它会就不断地越变暗。 除了点击这个按钮点一下和长按之外可能还有别的。

image.png

也就是说你的手势上来之后要去想一想谁在那里响应

image.png

比如说在这里点这个按钮这个按钮当然可以响应,但是这个按钮是在View里,这个View本身要不要去响应比如说最简单的道理这是一个页面进去经常做这个动作什么比如说你想回到前面,就拿手在这划了一下但拿手划的时候也未必非要放到空白地方去划,也可以在按钮上面直接点住以后来回滑当然我们没有做这个动作没有这个事件,就是想象一下,如果是你手放在这里来回做滑动并不是这个按钮在响应,而是这个按钮在这个View里面的这个View整体在做响应。所以这里问题,关于这个手势到底谁在响应它这个意思。可以根据这个手势的动作去决定到底要谁响应以及怎么响应滑动上下滑还是左右滑),还是确实是在小工具上去做了一次点击的动作

image.png

就是有这些东西,

image.png

它甚至还可以是多个同时的触点,比如两个手指同时一滑它就放大或者缩小去响应这样的东西那响应这些东西,就要有相应的一些代码要去控制

image.png

它就会在View上面们的属性里就会去说你要不要去作为这个事件响应的对象去启动这样的事件这个有很多例子,不展开讲解了也不讲这个问题了因为在模拟器上显示可能大多数还是通过鼠标去展示的

image.png

大概意思就是你可以通过在每一个View上面的属性里去开启相应的东西就来告诉这个View要不要去对一些事件做响应,或者是拒绝响应,就是给它关掉它的时机可以是在它被加载的时候或者上面确实有东西在做移动的时候就是你想去移动它的时候再去响应。

image.png

这里面无论哪个方法,响应的这个事件里面包含了底下的信息包含到底在动哪个东西这个东西的ID是什么,它的位置在哪里它在哪一页上等等,实际上就是在告诉你,它点的这一个动作到底在哪里发生的。

 

三、如何通过网络抓取数据

接下来看怎样通过网络抓取数据。

image.png

这个抓取数据的方式实际上是用的是fetch的api其实它不是React-native自己带东西,就用的fetch的api之前给大家专门讲过fetch api

image.png

这里面也是一样先是uil 接着是什么方法,然后请求头,最后请求体。

同样的道理跟react一样使用的是fetch,所以在跑的时候后台要支持跨域操作,但好在我们后台就一个,所以它实际上可以支持跨域你就拿到你的数据所以在网络通信的时候,要用到fetch然后fetch回来的东西就是这个response如果你前端请求了发的请求说这是一个json,它返一个json,就直接取出来里面的内容拿到它的内容去做其处理这个就和react是一样的。

当然有同学说要用ViewAxios行不行,老师没试过所以不知道行不行大家可以试一试。

拿到fetch之后就可以去做处理,但是我们这种处理都是异步的,也就是说fetch完了之后,大家不要忘记它背后发生的是Ajax请求实际上是说发走之后如果响应回来了,在这里去做这样的处理那也可以让在这里等就是在没有回来之前我也可以让一直下面fetch一个具体例子。

image.png

就在往抓一个json数据回来的这里去显示。

它有两种写法,一种是写成一个函数

一种是写成一个

写成类的时候,要在ComponentDidMount就是说这个对象被创建出来之后,马上去抓取。如果是写成函数,要用useEffect来进行抓取这个动作ComponentDidMount和这个useEffect的效果是一样的所以写类或者写函数都可以,它两种写法都支持。这是在抓取这个数据

本质上它仍然是用的fetch的api。那如果不用fetch,用原生的可以

image.png

用原生的XMLHttpRequest,这个写法就跟之前在讲Ajax的时候讲的原生的写法是一模一样的这也可以去抓取你想要的东西。所以React Native的东西很多尤其是除了React Native还有前面讲的navigator。image.png

所以助教给了例子,再把这个页面呈现出来。把助教的例子放到网上,可以去下载。有一句话放的例子里面没有加,但是演示的时候那句话是加了的,就是密码怎么样让它是以密文去显示的


四、复用

接下来谈一谈复用的故事。我们以故事的方式来讲谈一谈怎么复用,整个我们的专业都在讲这个东西是什么意思了两个版本,一个版本是比较详细的,有比较多的技术内容,但有很多内容可能现在还没有学所以现在讲的是一个非专业版的,但是大家也能听懂它的意思

这个故事就叫两个屌丝的成长史借用一下李雷和韩梅梅这两个名人来讲。这是中学英语课本里面的名人我们用俩来讲一讲所谓的复用是怎么回事

image.png

假设时间是从2003年开始们是交大软件学院的新生一进来就学C++编程交大软件学院C++编程一开始就讲的是类,没有讲结构化编程。于是们俩就知道怎么按对象来思考这个问题所谓类什么类就是我们刚才讲的抽象的一个过程。无论是hello kitty加菲猫还是哆啦a梦,们都是猫,它们有一些共性的东西,提取出来就是猫。们有一些个性化的东西实例化一下就出来了具体东西,比如猫都有头有胡须具体到们三个猫的颜色分别是白色黄色蓝色把它共同的属性提取出来就变成了一个类类的目的是什么就是无论是Hello kitty加菲猫还是哆啦A梦都可以用猫的类的代码去实现它里面的功能只不过具体属性不一样但是一些功能比如吃饭,睡觉,玩都可以去复用。这是第一次接触到软件复用这个概念。

到了大二学软件工程概论当然现在推到大三了,就说以前的学生在学软件工程概论在学面向对象的分析和设计要学习基于构建的开发。所谓基于构建的开发什么意思?假如要做login这个动作会发现前端要有个login的controller,要有login的service然后要有login的DAO,要去读用户名和密码要有userEntoty接着会发现把这些东西打包在一起无论哪一个系统,它做login的时候都可以去复用这块代码。所以它就类似于盖房子的时候,砖头就相当于是类,如果你盖的房子是一扇墙的预制板盖出来的,每一块预制板都是若干块砖头拼起来的那它就是构建。所谓构建就是若干个类合作完成了一个复杂的功能,这个功能可以被复用。这时候复用的就不是单个类,是整个构件。

所以未来的系统就像这里看到它是靠构建以拼积木的方式拼出来的。现在实际上在做web开发时候,走的就是这条路径这个就是更大力度的服用现在复用这个思想就已经深深地植入他们俩的脑海里。从第三方去找React框架没有框架或者是后排的Spring这样的东西本身就是在复用代码是在把它们的代码在各种各样不同的应用复用

image.png

到大三要学习操作系统,网络还有企业金融系统开发这时候就会发现要去复用更多的构建和框架比如在开发web系统的时候面临大量的数据,就会用到spark就会用到Hadoop等等。这时候可以知道了,在更大力度上复用因为学校原来大三的暑期是有实习的,到企业里面实习就是做暑期大作业他们俩受到这种互联网奇迹的那种鼓舞,就决定以后要从事这方面的行业所以到大四的时候就去了著名的IT企业实习。最后他们在2007年毕业了,毕业之后两个人选择的路不一样李雷创业了,假设说开发了一个社交网站这社交网站的域名是acme.com,一般大家喜欢用顶峰点这样的随便举个例子女孩子保守一点韩梅梅加入了一个叫someone的IT大厂俩就开始工作了。

image.png

所以在2007年的时候,俩就利用在大学里的学习到知识捞到了人生第一桶金。李雷通过快速构建网站马上就有了大量注册用户。为什么能快速地构建出来?原因是用到了一些现成的东西比如说买过来SOMEONE公司开发的一些构建,比如地图,导航这样的构建然后快速在自己的系统里搭建了一下这个网站就有了。韩梅梅也赚钱了,因为她SOMEONE这个公司开发了比如地图导航的构建OneX这个OneX是个商业构建就会有大量的人去买买了以后,比如就给你这个jar包,它组装到你的应用里面就可以去用了,它的销量非常的惊人,所以也捞到了第一笔的奖金。所以他俩都挺高兴。这是第一年。

image.png

一年以后再来看幸福总是伴随着烦恼从李雷的角度来看要去维护SOMEONE公司的构建因为的应用是买来的SOMEONE买了一些东西构建他自己的网站结果发现SOMEONE有些构建不太可靠经常导致的系统出问题。系统一出问题就要给SOMEONE打电话SOMEONE就会更新一个包发给去重新部署一下。所以对来说,这个过程很痛苦,像噩梦一般也就是说觉得陷入了系统维护的沼泽里面,因为只要这个东西有bug,就必须得汇报SOMEONE,SOMEONE就debug之后再把新的包给再去部署,才能用它,就觉得很累所以受不了。韩梅梅一样碰到一个问题,OneX一方面市场饱和了,卖不动了,就捞不到更多的钱了。第二OneX它本身就像别人说,如果有问题了,要去debug它的维护升级也很吓人。别人一报debug,她就去debug掉要通知所有的买家现在系统有升级了,就像windows一样,经常不断地打补丁在升级所以她觉得这对来说也是个噩梦也受不了。

接下来两人就要去解决问题他们就走了面向服务的架构。注意,刚才老师说的是李雷买了SOMEONE些构件把它集成到了的系统里,就像你现在拿着SpringGPA去跑你的系统如果说SpringGPA发现有漏洞你是把SpringGPA的jar包拿下来打到了自己的应用里如果别人告诉你是有漏洞的,你怎么办?要下载新的jar包,把东西全部替换掉重新部署才行。这种方式看起来就比较弱。

image.png

SOA的架构是什么意思,但举一个例。你要盖你们家的房子怎么盖?所谓基于构建的方式是说不会盖厕所,买一个整体厕所回来不会盖厨房,买个整体厨房回来当然这里就要求比如厨房和厕所都必须是3米高,如果一个3.5米高,一个3米高盖不到一起去,于是就出现了相当于软件里面的到底是donet的架构还是java的架构不一样的东西是没法集成的。如果买了个整体厕所买了个整体厨房,但是客厅你觉得可以自己搞,而且它要体现家里的个性,所以你自己盖了个客厅 于是你就把你家快速构建起来了,缺点这个整体厕所有点问题马桶经常堵了之后家里很麻烦于是生产整体厨房的这一方就相当于韩梅梅这一端说,要debug里面要换个配件于是要到所有的买这个整体厕所的家去把这个配件换掉。它的问题在刚才讲的维护问题其次盖这个家要买整体厕所要买整体厨房价格也是比较高的。

换个思维就说不买这个厕所家里就盖客厅卧室能睡觉就行。以服务的方式去处理这个厨房和厕所就是上厕所到公厕去上。当然,公厕人家会处理得比较好比较卫生不是我们一般意义上公厕。于是公厕的打扫,漏不漏水,这些问题我一概不考虑。对于厨房,可以到食堂去吃不是拿一个厨房一个厕所过来到我本地。换到软件系统里面就是说你不要把那个jar包拿过来打到你的系统里去跑而是你要通过一个URL去访问到这个服务,把你东西给了它,它返一个结果。这是面向服务的一个场景

image.png

于是可以看到有了面向服务的架构。李雷就说我不需要把SOMEONE的构件拿来绑定或者集成到我的系统里而是我去调用这个服务,也就说我要有导航的服务,比如说oneX是导航的,我不需要拿到这个jar包,打到我的系统里面一起去部署而是我去到oneX的某一个url每一次传递给它经度、纬度,它就直接把地图给我或者导航的路线给我这样做的好处是导航功能是否完备,由SOMEONE来负责我就不用管了。只要把对应的url后面实现更新掉了我就能调用就能享受到它已经更新过,质量提高过之后的服务。所以服务的质量完全靠SOMEONE去搞去让保证就不用我每一次自己去拿到jar包,绑定它现在只是租这个服务而不是买租总比买要便宜比如调用一次一块钱要买的话可能就要1万块钱买一套,那我十万次才会跟它一样,但是我还可以去省掉维护的代价,总的来说划得来。所以李雷觉得这方案不错。

从韩梅梅的角度来说,oneX的升级变得简单了不用自己debug之后给所有的用户都要发就在自己服务器这块部署一个服务所有需要调用它都来调用如果要改,就改我这机器上的一个就可以。所以oneX就部署成为一个外部服务只有一个实例,大家都来访问我的维护也很简单,更重要的是我本来就卖不动了但是按租金的方式就是细水长流就一直有钱。所以俩的事业可以继续彼此之间都觉得省事。这就是所谓的面向服务的架构从这里可以看到它又在提高复用的级别,原来是说这个构件可以去卖很多的应用都有一个,其实还是重复,现在是所有的应用都到这来调用你们不要有自己的jar包这就是在高度地复所以俩又很高兴皆大欢喜。

image.png

再过去两年。李雷的acme.com已经变成中国顶尖网站之一SOMEONE也出现了像OneX这样的可能有超过一万个服务暴露在web上去给用户用它有大量租金的收入。但是新的障碍又出现了。从李雷的角度来说我有很多的数据,顶级网站有很多数据,这些数据造成了很大的负担这是一个问题,就存储的负担处理的负担我需要买大量的服务器去存下它另外一方面有大量的注册用户这个带来的压力导致系统负载受不了了没有那么多服务器处理它,要买的话,价格很高,也就是说计算资源严重的不够难以承受这个压力

从韩梅梅的角度,所有的服务都放到了SOMEONE的大的集群里面每开发一个服务就买了一些机器扔进去时间长了发现这些服务满负荷运转的时候计算资源是足够的,如果所有的服务不是都满负荷运转就显得资源有点浪费就是杀鸡在用牛刀。一个是资源不够,一个是资源过剩,显得浪费。

image.png

于是就出现了云计算。云计算是说会把所有的资源包括硬件的软件的全部通过互联网的方式暴露出来给用户去用。这里举的几个例子是在不同的几个著名的文章或者是组织发布的文件里面写的cloud的意义

image.png

所谓的云计算,就是有一个实际上云不是个虚拟东西,就是有很大的机房也没有大量的硬件和部署在上面的软件。 们可以以互联网的方式被访问到以服务的方式访问,这就是我们看到的有专门租存储的云盘有租虚拟机的里云有租虚拟机之上的包含了数据库和其中间件的PaaS层的,比如说谷歌应用引擎或者百度应用引擎,还有直接服务的比如说有很多的app天气或者地图这样的服务的那它们是说所有东西都在云里部署云这个词有两个含义,第一个含义它比较远,它确实离你很远阿里云就在杭州第二含义是你看不穿里面也就是说它里面你说我要一个虚拟机,这个虚拟机是在哪个物理机上这个虚拟机崩了之后是怎么迁移到哪个物理机上来保证我一直能用的这些信息全部对你屏蔽掉由云的提供商来处理也就说你使用的时候会非常省事。所以云会带来一些好处细节不谈了。

所以毕业N年之后他俩有一次重要的会见李雷说把我的网站部署到SOMEONE的云里面去这样我的计算资源就不用自己去买,只是租价格会下来,而且到底这个服务器会不会崩如果计算能力不够,怎么去扩展这些复杂性问题全部扔给SOMEONE。而韩梅梅代表SOMEONE,她想的是既然我们计算资源过剩,为什么不把它租出去别人还能赚租金比把它放闲置去耗电要划得来。所以两人一拍即合。

现在这个应用就部署到了云里面去。两个人的目的都可以看到们都是在最大化自己的利润。从李雷的角度来说我现在就是租不是买,我就不用自己买一大堆的服务器去存那些数据或者是应对而且的复杂性比买要小得多,因为买我还要自己建机房,自己维护。如果租,就把一系列的复杂的维护的工作全部丢给了云。韩梅梅就会去想把这个资源租给他,就不让在这白耗电,可以挣钱。但她还需要考虑一个问题,怎么样以比较合理的方式去租。比如要根据所有的租户的负载情况,决定开多少个物理机,让多少去睡眠多少活跃。为了去满足们的可靠性比如说李雷的这个应用就需要在杭州的机房有一个虚拟机,在北京的机房有个虚拟机,在上海机房有个虚拟机这样,碰上停电,地震,甚至打仗这样的事情这个服务都可以提供不间断的服务。当然这些东西都要换算成钱去管李雷去收。不管如何俩都实现了利润的最大化,从这个角度去看们俩又再次合作了一番所以大家都赚到钱。

image.png

一直演化到后来,李雷和韩梅梅就变成了高富帅白富美。但是这个问题还没完新的问题会出现。比如说云天上的云就一朵一朵的,谁也没说一定要用SOMEONE天上到处都是云什么一定要部署到SOMEONE我为什么不在亚马逊里部署一个,里云里部署一个,在华为云里部署一个,我不跟具体的提供商绑定,将来也不能去绑架我说价格谈不拢,就停掉我的服务。所以,就有个问题,我应该怎么去部署,我的系统会显得更好我要提我的系统的可靠性考虑到我对提供的独立性我怎么去部署会显得更合理。从韩梅梅的角度,会想虽然我有大量的资源,我可以租出去,但是租户太多了我的资源如果消耗完了怎么办?我的服务的质量会不会下来,有没有可能跟其的云去协作共同提供这种服务。所以两个人还在想这个事情这个故事就没完,于是就会看到有多个云之间的部署问题以及云和云之间的协作问题。从这里可以看到一旦讲到云,它还是在复用只不过现在复用的已经不纯粹是代码它复用的是硬件以及在硬件上部署的那些系统级的软件也就是说我在这里面有几台服务器上面可以跑若干个虚拟机,只要你付钱,我就把这虚拟机给你你钱如果不够你不付了,我就把资源收回,可以给别人用。这个机器如果崩了我可以在另外空闲的机器上马上重启两个虚拟机去把你的虚机迁移过来。不管怎么说它仍然是在复用。所以从头贯穿到他们从大一进来学习C++程序设计一直到现在 可以看到他们从学习到事业发展过程当中始终离不开复用这个词。

当然说的这个故事是瞎编的,但是我只是想说明一下整个复用为什么在我们专业里面这么可靠

最后想说这个故事的精髓是说教给你的知识大概有一半是错的,这个不稀奇,因为老师有自己的理解技术也在进步这是网上很有可能哈佛医学院的主任的杜撰声明,它的这个话的意思就是说老师教你的知识有一半错了问题是我们不知道哪一半错

image.png

意思就是说即便我滔滔不绝讲这么多,你也别全盘接受,你也可以去辩证地去看,也许我讲的有一些是不对的,就是你在实践的过程当中发现可能会有一些问题就是千万不要教条。有个笑话说雷和韩梅梅有一天开车结果碰上了车祸就是出了个事故,这车翻到山底下去了严重受伤一个人路过,看到了这个车就喊(中学课文里的经典对话):How are you韩梅梅就条件反射式回答I am fine thank you and you这个人一听,还很好就走了。

就是你在学习东西的时候,千万不要太教条你自己的脑袋接受这些知识之后,你要去分析。

属于教条式的机械式的反应最后导致了不良的结果。所以讲这么多谈了这么多的基本原则,这原则本身不能教条的去应用,还是要去灵活运用。

相关文章
|
6月前
|
监控 安全 数据可视化
java基于微服务的智慧工地管理云平台SaaS源码 数据大屏端 APP移动端
围绕施工现场人、机、料、法、环、各个环节,“智慧工地”将传统建筑施工与大数据物联网无缝结合集成多个智慧应用子系统,施工数据云端整合分析,提供专业、先进、安全的智慧工地解决方案。
163 1
|
13天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
51 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
11天前
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
32 1
|
1月前
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
96 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
5月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
219 60
|
4月前
|
JSON 前端开发 API
移动端---------app开发03----apicloud必须掌握的代码
移动端---------app开发03----apicloud必须掌握的代码
|
4月前
|
前端开发 开发者
移动端-------app开发02,了解apicloud功能和使用,真机测试
移动端-------app开发02,了解apicloud功能和使用,真机测试
|
6月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
正如优秀的软件设计一样,uni-app把一些移动端常用的功能做成了独立的服务或者插件,我们在使用的时候只需要选择使用即可。但是在使用这些服务或者插件时一定要区分其提供的各种服务和插件的使用场景,例如其提供的【uni-starter快速开发项目模版】几乎集成了移动端所需的所有基础功能,使用非常方便,但是其许可协议只允许对接其uniCloud的JS开发服务端,不允许对接自己的php、java等其他后台系统。
309 61
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
498 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
584 1

热门文章

最新文章

下一篇
无影云桌面