Vue學習第三天(axios和動畫效果)

Vue學習第三天(axios和動畫效果)
在學習視頻中,老師演示使用vue-resource,但是由於vue-resource已經停止升級,我們使用axios完成ajax操作,官方文檔的一堆介紹可以自行百度,下面我們介紹它的簡單使用,使用方法可以使用以下兩種方式
第一種

  1. npm install axios //使用npm安裝axios
  2. import axios from ‘axios’ //在js文件中引用模塊
    第二種
    直接在頁面上引用js
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

第二種方法是我測試過可以成功的,接下來,我們就可以在我們的js中使用ajax,下面分別介紹get和post這兩種請求
get請求:

axios.get('/test/delCar?Id='+id).then(function () {
                    console.log("you have success add a record!")
                }).catch(function (error) {
                    console.log("there are some error in the program")
                })

不難看出,原來ajax的success事件變成了.then(),原來的fail事件變成了.catch(),對於後臺,我們使用springboot,構建一個controller,對應get請求,後臺使用@RequestParam接受參數

@GetMapping("delCar")
    @ResponseBody
    public Msg delCustomer(@RequestParam("Id") Integer Id){
        testService.delCustomer(Id);
        return Msg.success();
    }

而如果要進行post請求的發送,我們則需要做出調整,普通的adaj,post請求後臺接受採用@RequestParam,但是這樣操作的前提是,我們的請求參數在請求頭中,但是如果使用axios我們的請求參數位於請求體中,我們在使用@RequestParam就會報錯,我們必須使用@RequestBody獲取到的數據是一個字符串,它本身是一個json,我們可以藉助json工具解析內容
Post請求

axios.post('/test/addCar', {
                    username:this.name
                }).then(function (data) {
                    console.log("you have success add a record!")
                }).catch(function (error) {
                    console.log("there are some error in the program")
                })

後臺代碼(Controller):

@PostMapping("/addCar")
    @ResponseBody
    public Msg addCar(@RequestBody LcleCustomer lcleCustomer){
        System.out.println("-->"+lcleCustomer);
        Integer result = testService.addCustomer(lcleCustomer);
        if(result != null){
            return Msg.success();
        }
        else {
            return Msg.fail();
        }
    }

後臺代碼(Service):

public Integer addCustomer(LcleCustomer lcleCustomer){
        lcleCustomer.setAddTime(LocalDateTime.now());
        lcleCustomer.setUpdateTime(LocalDateTime.now());
        lcleCustomer.setDeleted(0);
        Integer result = lcleCustomerMapper.insert(lcleCustomer);
        return result;
    }

接下來,我們介紹axios中的一些動畫效果

  1. 使用v-enter效果
  2. 自定義前綴
  3. 引用animate.css
    如果使用vue自身的樣式我們只需要定義一個樣式即:
<style>
			.v-enter,
			.v-leave-to{
				opacity: 0;
				transform: translateX(80px);
			}
			.v-enter-active,
			.v-leave-active{
				transition: all 0.4s ease;
			}
		</style>

值得一提的是,我們的樣式前綴是v-,不難聯想到v-for,v-if,沒錯,這個就是vue提供的樣式前綴,但是如果我們想要定義自己的樣式前綴,我們需要改變transition的name,這樣操作以後,我們的前綴就變成餓了.name-()要把使用樣式的html元素用包裹起來

<div>
<div>
				<button v-on:click="toggle1">戳我</button>
				<transition name="h">
					<h2 v-show="flag1">你的酒館對我打了樣</h2>
				</transition>
			</div>

除了自定義的樣式以外,我們還能使用第三方的css進行樣式的控制,首先,要在頁面上引用我們下載過的css

<link href="css/animate.css" rel="stylesheet"/>

然後我們需要給包裹標籤加上一些相當的類名

<div>
				<button v-on:click="toggle">點我</button>
				<!--需要動畫控制的元素,用transition包裹起來-->
				<!--如果這個標籤沒有name,那麼控制其動畫效果的前綴是v--->
				<!---->
				<transition enter-active-class="animated fadeInRight" leave-active-class="animated fadeInRight">
					<h2 v-show="flag">我的一個道姑朋友</h2>
				</transition>
			</div>

除了上面的介紹,我們仍然後可以用半場動畫,這裏不再贅述,需要可以自行學習,下面是代碼
半場動畫頁面源代碼

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>半場小球</title>
		<script src="js/vue.js" type="text/javascript"></script>
		<link href="css/animate.css" rel="stylesheet" />
	</head>
	<style>
		.ball{
			width: 15px;
			height: 15px;
			border-radius: 50%;
			background-color: blue;
		}
	</style>
	<body>
		<div id="app2">
			<button v-on:click="exchange">點我</button>
			<transition v-on:before-enter="before" v-on:enter="enter" v-on:after-enter="after">
				<div class="ball" v-show="flag"></div>
			</transition>
		</div>
		<script>
			var vue = new Vue({
				el:'#app2',
				data:{
					flag:true
				},
				methods:{
					exchange:function(){
						this.flag = !this.flag
					},
					//規定小球的初始位置
					before:function(el){
						el.style.transform = "translate(0, 0)"
					},
					//規定小球的最終定的位置
					enter:function(el, done){
						el.offsetWidth
						el.style.transform = "translate(150px, 450px)"
						el.style.transition = "all 1s ease"
						//使用done函數,可以立即結束小球的運動,即直接執行after中的內容
						done()
					},
					after:function(el){
						this.flag = !this.flag
					},
				}
			})
		</script>
	</body>
</html>

發佈了57 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章