摘要:回調(diào)說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)和,下面的方法請(qǐng)求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時(shí)任務(wù)為例子說(shuō)明,但具體的原理我還是不太
回調(diào)
說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)
例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)success和error,下面的promise.then(success,error)方法請(qǐng)求成功執(zhí)行success,失敗執(zhí)行error
異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時(shí)任務(wù)setTimeout, setInterval為例子說(shuō)明,但具體的原理我還是不太明白,我只知道js異步的執(zhí)行順序和c/c++的不同
例如,我把上面的success方法中的$scope.teachers = response.data寫(xiě)到外面,即:
按照c/c++的順序,當(dāng)上面promise.then()語(yǔ)句執(zhí)行完之后,才執(zhí)行下面的賦值語(yǔ)句,可js的異步處理會(huì)直接執(zhí)行下面的賦值語(yǔ)句,如果在控制臺(tái)輸出teachers,會(huì)顯示undefined
跨域CROS在前后臺(tái)對(duì)接時(shí)會(huì)發(fā)生跨域問(wèn)題
在spring官方文檔有詳細(xì)的解決方案,如下圖
按照需求進(jìn)行改寫(xiě)就行了
建立數(shù)據(jù)表(后臺(tái))在thinkphp中,我們通過(guò)navicatMysql數(shù)據(jù)庫(kù)工具建立數(shù)據(jù)表,而在spring中,則是通過(guò)新建類(lèi)來(lái)建立數(shù)據(jù)表,對(duì)應(yīng)關(guān)系如下
teacher類(lèi)對(duì)應(yīng)表名,私有屬性對(duì)應(yīng)表的各個(gè)字段
然后建立接口來(lái)訪(fǎng)問(wèn)和操作數(shù)據(jù)
這里遇到一個(gè)小問(wèn)題,在定義Teacher類(lèi)時(shí),設(shè)置主鍵自增
官方推薦使用AUTO,但是由于我們的數(shù)據(jù)庫(kù)存在一些問(wèn)題,只能使用IDENTITY來(lái)暫時(shí)解決
通過(guò)ui-router定制路由(前臺(tái))ui-router的出現(xiàn)使得路由定制非常簡(jiǎn)單易用,在安裝完ui-router后,改寫(xiě)app.js
接著,在V層添加ui-view標(biāo)簽就可以實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)了
功能性開(kāi)發(fā)(前臺(tái))1.定義路由對(duì)應(yīng)的控制器(ui-router)
2.初始化控制器->yoman命令->yo angular.controller user 生成位置app/scripts/controller/user.js
3.數(shù)據(jù)綁定至V層(雙向綁定)
4.功能開(kāi)發(fā)
后臺(tái)
1.增加路由注解
(1)指明方法(get,post,delete,put,patch)
(2)指明地址(例如127.0.0.1:8080/Teacher)
2.有cros設(shè)置的,增加cros設(shè)置
關(guān)于第一步,按照下面的寫(xiě)法改寫(xiě)就行
@Autowired 自動(dòng)裝置接口實(shí)例化的對(duì)象
@GetMapping使用的方法
1.第一次接觸angularjs與springMVC前后臺(tái)分離開(kāi)發(fā)的模式,感受到了它比thinkphp強(qiáng)大的原因,非常方便團(tuán)隊(duì)分工開(kāi)發(fā)
2.使用注解的方式寫(xiě)程序,就好像給程序注釋一樣,非常方便,而且易讀
3.yoman的自動(dòng)刷新機(jī)制解放了每次寫(xiě)前臺(tái)F5刷新,在寫(xiě)原型時(shí)相當(dāng)方便,有了angularJs的雙向綁定,就再也不會(huì)出現(xiàn)thinkphp里十幾行長(zhǎng)的$this->assign()
4.idea編譯器強(qiáng)大的功能省下很多用在程序規(guī)范的精力,alt+insert生成模板相當(dāng)方便,出了錯(cuò)打斷點(diǎn)debug可以很快可以發(fā)現(xiàn)問(wèn)題
5.總之,相比于thinkphp,angularJs+springMVC的開(kāi)發(fā)更加規(guī)范,很容易做到代碼風(fēng)格的統(tǒng)一和程序的易讀,可以將更多的精力投放到功能的設(shè)計(jì)和實(shí)現(xiàn)上來(lái)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77122.html
摘要:回調(diào)說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)和,下面的方法請(qǐng)求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時(shí)任務(wù)為例子說(shuō)明,但具體的原理我還是不太 回調(diào) 說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)success和error,下...
摘要:怎么做前后端的分離我目前的做法是將作為一種服務(wù)存在,僅需要提供接口即可,前端目前采用,調(diào)用后端,解析數(shù)據(jù),靜態(tài)頁(yè)面。采用,充當(dāng)層,前后端實(shí)現(xiàn)了真正的分離,但還是有點(diǎn)問(wèn)題的。 什么是前后端分離 對(duì)于這個(gè)問(wèn)題,其實(shí)可以看看我的學(xué)習(xí)歷程,我覺(jué)得很好的體現(xiàn)了Web開(kāi)發(fā)模式的演化。 石器時(shí)代:那正是本人剛學(xué)JSP的時(shí)候,寫(xiě)了一個(gè)簡(jiǎn)單的商城DEMO,所有的業(yè)務(wù)邏輯,數(shù)據(jù)庫(kù)的交互以及Javascri...
摘要:筆記這周學(xué)習(xí)安裝和配置和,為測(cè)試做準(zhǔn)備。該軟件由創(chuàng)建,并于年首次公開(kāi)發(fā)布。同名公司成立于年,以提供支持。從年月開(kāi)始,的開(kāi)發(fā)由贊助,而年月至年月期間,其開(kāi)發(fā)由贊助。最后發(fā)現(xiàn)是因?yàn)橹械闹械膽?yīng)該為大寫(xiě)將其改為及解決了此問(wèn)題。 筆記 這周學(xué)習(xí)安裝和配置nginx和redis,為測(cè)試做準(zhǔn)備。showImg(https://segmentfault.com/img/bVbpdYF?w=660&h=...
摘要:初次寫(xiě)文章,請(qǐng)多多包涵我最近正在根據(jù)這本書(shū)從頭開(kāi)始實(shí)現(xiàn)了一遍的框架。筆記目錄鏈接個(gè)人認(rèn)為本書(shū)對(duì)于想了解框架源碼的讀者來(lái)說(shuō)相當(dāng)有用,完全值得去購(gòu)買(mǎi)這本書(shū)書(shū)本主頁(yè)。因?yàn)槭浅鯇W(xué)者,筆記里可能有一些錯(cuò)誤,我也會(huì)繼續(xù)修改。 (初次寫(xiě)文章,請(qǐng)多多包涵) 我最近正在根據(jù)《Build your own angularJS》這本書(shū)從頭開(kāi)始實(shí)現(xiàn)了一遍AngularJS的框架。我把相關(guān)的源碼和我的個(gè)人學(xué)習(xí)筆...
閱讀 2026·2021-11-24 09:39
閱讀 1172·2021-09-10 11:25
閱讀 1800·2021-09-08 10:42
閱讀 3769·2021-09-06 15:00
閱讀 2517·2019-08-30 15:54
閱讀 3129·2019-08-29 17:08
閱讀 3290·2019-08-29 11:26
閱讀 2856·2019-08-28 18:27