小言_互联网的博客

Vue Vue介绍、Vue基础语法、Vue生命周期、axios的使用

289人阅读  评论(0)

Vue介绍

Vue是一套构建用户界面的渐进式JavaScript框架和MVVM双向数据绑定编程模型。

MVVM

MVVM:页面输入改变数据,数据改变影响页面数据展示与渲染

M(model):普通的javascript数据对象

V(view):前端展示页面

VM(ViewModel):用于双向绑定数据与页面,也是vue的实例

MVC强调的是: 单向数据绑定,M数据 --》 视图

MVVM强调的是:双向数据绑定,M数据 《–》 视图, 最核心就是ViewModel通过DOM监听实现

Vue基础语法

1、v-html和v-text文本插值

<body>
    <div id="div">
	    <!--示例:使用3种方式设置span标签体的内容-->
        <div>方式1:<span>{
  {msg}}</span></div>
        <div>方式2:<span v-text="msg"></span></div>
        <div>方式3:<span v-html="msg"></span></div>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    //目标:给视图标签体绑定数据
    //方式1:{
    {变量名}} 插入值表达式,标签体绑定文本字符串,类似于innerText的功能
    //方式2:v-text="变量名",与{
    {变量名}}功能一样
    //方式3:v-html="变量名",标签体绑定html代码字符串,类似于innerHTML的功能
    //       v-html 或 v-text 都是设置在视图标签的属性位置
    new Vue({
    
        el:"#div",
        data:{
    
            msg:"<h1>Hello Vue</h1>"
        }
    });
</script>

2、v-bind绑定属性

<body>
    <div id="div">
        <!--
            注意:插件表达式不能写在属性中,。例如: <标签 属性名="{
   {变量名}}"> 
			示例1:使用插入值表达式设置a标签的href属性绑定模型数据url,测试插入值表达式在属性值中是否有效
        -->
        <a href="{
    {url}}">百度一下</a>

        <br>
        <!--
            示例2:使用完整模式(<标签 v-bind:属性名="变量名">)给href属性绑定模型数据url
        -->
        <a v-bind:href="url">百度一下</a>
        <br>
        <!--
            示例3:使用简化模式(<标签 :属性名="变量名">)给href属性绑定模型数据url
        -->
        <a :href="url">百度一下</a>
        <br>
        <!--
            示例4:使用简化模式给class属性绑定模型数据cls
        -->
        <div :class="cls">我是div</div>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    /*
    * 目标:使用vue中指令v-bind给标签属性绑定数据
    * 语法1:完整模式
    *       <标签 v-bind:属性名="变量名">
    * 语法2:简化模式
    *       <标签 :属性名="变量名">   //v-bind可以省略
    * 注意: <标签 属性名="{
    {变量名}}"> 这是不可以的,插入值表达式{
    {变量名}} 只能放在标签体内
    * */
    new Vue({
    
        el:"#div",
        data:{
    
            url:"https://www.baidu.com",
            cls:"my"
        }
    });
</script>

3、v-if条件渲染

<body>
    <div id="div">
        <!--
		示例1:使用v-if控制div标签是否显示
		    判断num的值,对3取余
            余数为0显示div1
            余数为1显示div2
            余数为2显示div3 -->
        <div v-if="num%3==0">div1</div>
        <div v-else-if="num%3==1">div2</div>
        <div v-else>div3</div>

        <!--
        示例2:使用v-show控制div显示与隐藏
        -->
        <div v-show="flag">div4</div>

    </div>
</body>
<script src="js/vue.js"></script>
<script>
    /*
    * 目标:讲解if条件表达式
    * if语法:
    *   <标签名 v-if="条件">标签体</标签名>  条件成立标签存在,否则整个标签会被删除
    *   <标签名 v-else-if="条件">标签体</标签名>  条件成立标签存在,否则整个标签会被删除
    *   <标签名 v-else="条件">标签体</标签名>  上面的条件都不成立就会这个成立,这个标签就会存在,否则整个标签会被删除
	* show语法:      
	*	<标签名 v-show="true">标签体</标签名>  设置标签显示
    *    <标签名 v-show="false">标签体</标签名> 设置标签不显示
	*	
    * v-if与v-show区别:
	*	相同点:都是控制元素是否显示
	*	不同点:底层原理不一样
	*		v-if 如果条件为false,页面中根本没有这个元素
	*		v-show如果条件为false,页面中有这个元素只不过它的display属性值为none
    * */
    new Vue({
    
        el:"#div",
        data:{
    
            num:1,
           flag:true
        }
    });
</script>

4、v-for列表渲染

<div id="div">
    <ul>
         <!--
          v-for:列表渲染,遍历容器的元素或者对象的属性。
          【环展现数据方式1:遍历数组】
          语法:<标签名 v-for="element in 数组">{
   {element}}</标签名>
               element含义:遍历的数组中每个元素对象
          含义:控制当前标签进行循环展现数据

          示例:遍历的数组:names:["张三","李四","王五"],输出打印格式:姓名:xxx
         -->
        <li v-for="name in names">
            元素:{
  {name}}
        </li>
		
		<hr>

        <!--
        【环展现数据方式2:遍历普通对象的属性值】
          语法:<标签名 v-for="element in 对象">{
   {element}}</标签名>
               element含义:遍历对象中每个属性的对应值
          示例:遍历的对象:student:{name:"张三", age:23},输出打印格式:属性值:张三等
        -->
        <li v-for="element in student">
            元素:{
  {element}}
        </li>
		<hr>

        <!--
         【环展现数据方式3:遍历数组带有循环索引】
         语法:<标签名 v-for="(element,i) in 数组">{
   {element}}</标签名>
              element含义:遍历的数组中每个元素对象
              i含义:循环的索引
         示例:遍历的数组:names:["张三","李四","王五"],输出打印格式:姓名0:张三等
        -->
        <li v-for="(name,i) in names">
            元素{
  {i}}:{
  {name}}
        </li>
		 <hr>

        <!--
        【环展现数据方式4:使用slice遍历数组部分元素循环】
        语法:<标签名 v-for="element in 数组.slice(索引开始值,索引结束值)">{
   {element}}</标签名>
             element含义:遍历的数组中每个元素对象
        遍历的数组:names:["张三","李四","王五"]
        示例:遍历数组从第0个位置开始,到索引结束值(不包含索引结束值)
       -->
        <li v-for="name in names.slice(0,2)">
            元素:{
  {name}}
        </li>
	    <hr>


        <!--
       【环展现数据方式5:使用if遍历数组部分元素循环】
       语法:<标签名 v-for="(element,i) in 数组" v-if="控制i的值表达式">{
   {element}}</标签名>
       遍历的数组:names:["张三","李四","王五"]
       示例:遍历数组前2个元素
      -->
        <li v-for="(name,i) in names" v-if="i<2">
            元素{
  {i}}:{
  {name}}
        </li>
	   <hr>

        <!--
         【环展现数据方式6:控制次数循环】
       语法:<标签名 v-for="num in count">{
   {num}}</标签名>
       示例:输出5遍hello world
      -->
	  <span v-for="num in 5">
          hello
      </span>
	  <hr>
    </ul>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
    
        el:"#div",
        data:{
    
            names:["张三","李四","王五"],
            student:{
    
                name:"张三",
                age:23
            }
        }
    });
</script>

5、v-on事件绑定

<body>
    <div id="div">
        <div>{
  {name}}</div>
		<!--老方式绑定事件【了解】-->
        <button onclick="demo()">单击_改变div的内容</button>
        <!--
            v-on:为 HTML 标签绑定事件
            完整语法:<标签名 v-on:事件名="vue中methods里面的函数名()"></标签>
            简写语法:<标签名 @事件名="vue中methods里面的函数名()"></标签>
        -->
        <button v-on:click="change">单击_改变div的内容</button>
        <button v-on:dblclick="change()">双击_改变div的内容</button>

        <button @click="change">简写单击_改变div的内容</button>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
    
        el:"#div",
        data:{
    
            name:"halulu"
        },
        methods:{
    
            change(){
    
                this.name = "halulu加强版"
            }
        }
    });
	
	function demo(){
    
        alert("demo");
        //在vue的外部调用模型数据:vm.name
    }
</script>

6、v-model表单绑定

<body>
    <div id="div">
        <form autocomplete="off">
			<!--
                单向绑定: model数据改变了  ==》 视图的数据也会变
                         视图的数据改变了,Model不会被影响
            -->
            姓名_单向绑定:<input type="text" name="username" :value="username">
            <br>
			<!--
                双向绑定:model数据改变了 《==》 视图的数据也会变
                        视图的数据改变了,Model会被影响
            -->
            姓名_双向绑定:<input type="text" name="username" v-model="username">
			<br>

        </form>
		
        <hr>
		<h3>{
  {username}}</h3>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    /*
    * 目标:使用v-model实现MVVM双向数据绑定
    *      注意:不用v-model就是单向,使用就是双向
    * */
    new Vue({
    
        el:"#div",
        data:{
    
            username:"张三",

        }
    });
</script>

Vue的生命周期

axios的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>异步操作</title>
    <script src="js/vue.js"></script>
    <!--
        引入axios核心js文件
    -->
    <script src="js/axios-0.18.0.js"></script>
</head>
<body>
<div id="div">
    姓名:{
  {name}},年龄:{
  {age}}
</div>
</body>
<script>
    new Vue({
    
        el:"#div",
        data:{
    
            name:"",
            age:""
        },
        methods:{
    
            //发送异步请求获取后端数据
            send(){
    

                /*
                * axios异步请求语法:
                *
                  1.get请求语法
                      axios.get(url,params)
                          .then(resp=>{ //成功回调函数代码 })
                          .catch(error=>{//错误回调函数})
                      参数url: 设置请求的后端资源地址
                      参数params: 请求传递的数据,支持2种格式
                           格式1:原始格式,"key1=value1&key2=value2"
                           格式2:json对象, {key1:value1,key2:value2,...} ,传输底层是json字符串给后端
                      .then(resp=>{ //成功回调函数代码 }) 含义:异步请求处理成功的回调函数
                           resp=>{}:ES6新的方式箭头函数,类似与java的lambda表达式的->
                                     与function(resp){} 匿名函数功能一样,推荐使用ES6箭头函数
                           resp:变量名任意,代表的是服务器返回的响应对象,resp.data 获取服务器返回的数据
                      .catch(error=>{//错误回调函数}) 含义:失败的回调函数

                  2.post请求语法
                      axios.post(url,params)
                          .then(resp=>{ //成功回调函数代码 })
                          .catch(error=>{//错误回调函数})
                  3.put请求语法
                      axios.put(url,params)
                          .then(resp=>{ //成功回调函数代码 })
                          .catch(error=>{//错误回调函数})
                  4.delete请求语法
                      axios.delete(url,params)
                          .then(resp=>{ //成功回调函数代码 })
                          .catch(error=>{//错误回调函数})
                * */

                //发送异步请求
                let url = "/DemoServlet"; //访问项目根路径下面的资源
                let params = "name=123";
                axios.post(url,params).then(response=>{
    
                    //获取服务器返回的数据
                    let user = response.data;  //返回的数据格式:{name:xx,age:xx}
                    this.name = user.name;
                    this.age = user.age;
                }).catch(error=>{
    
                    alert(error);
                    console.log(error);
                })
            }
        },
        created(){
    
            this.send();
        }
    });
</script>
</html>

转载:https://blog.csdn.net/weixin_44504809/article/details/117061549
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场