vue相关

作者: 幻如常 | 来源:发表于2021-04-07 18:33 被阅读0次

    vue相关

    vue入门

    • 下载vue.js
    • 创建静态web项目
    • 将vue.js导入项目
    • 编写hello页面,引入vue.js查看效果
        <head>
     <meta charset="UTF-8">
     <title>hello-vue</title>
     <script src="/js/vue/vue.js"></script>
    </head>
    <body>
    <div id="app">
        {{ message }}
    </div>
    
    <script>
        var app = new Vue({
        el: '#app',
        data: {
        message: 'Hello Vue!'
            }
        })
    </script>
    </body>
    </html>
    

    常见指令

    • {{属性}}:常规的取值方式,只在和vue关联的标签中有效,对应上面绑定了id='app'的div标签中才有效
    • v-bind:表示通知vue在渲染的DOM标签时,将bind绑定的属性和Vue实例data中同名属性值保持一致(也就是绑定数据),可以简写成(:)
        <div id="app">
     <!--v-bind-->
     <span v-bind:title="testTitle">看这里,看这里</span>
     <!--下面这种写法是一个意思-->
     <span :title="testTitle">看这里,看这里</span>
    </div>
    <script>
        var vue = new Vue({
        el:"#app",
        data:{
            testTitle:"瞅啥瞅~"
        }
        })
    </script>
    
    • v-model:双向数据绑定和单向数据绑定:使用 v-model 进行双向数据绑定
      功能与v-bind类似,不过数据可同步改动,即修改标签中的元素数,对应的Vue实例对象中data对应的数据也会发生变化
    • v-html:按照html的格式进行取值
          <div id="app" >
          <!--这种直接取出来的数据是带有span标签的-->
      {{content}}
      </div>
          <!--v-html(这种取出来是不带标签的):将html格式数据渲染出来-->
          <div id="app" v-html="content">
      </div>
      <script>
          var vue = new Vue({
          el:"#app",
          data:{
              content:"<span style='color: red;'>这是内容</span>"
              }
          })
      </script>
      
    • v-if判断指令
          <!--age是否大于18,等于18,小于18-->
          <div id="app">
          <span v-if="age > 18">成年了</span>
          <span v-else-if="age < 18">未成年</span>
          <span v-else="age == 18">踩线了</span>
          </div>
          <script>
              var vue = new Vue({
              el:"#app",
              data:{
                  age:18
              }
              })
          </script>
      
    • v-for:循环指令
          <body>
              <ul id="app">
                  <!--<li>a</li>
                  <li>b</li>
                  <li>c</li>-->
                  <li v-for="item in arrs">{{item}}</li>
              </ul>
              <script>
              var app = new Vue({
                  el:'#app',
                  data:{
                      arrs:['aa','bb','cc']
                  }
              })
          </script>
          </body>
      
    • 对象集合
          <body>
          <ul id="app">
              <!--(item,index)前面的是元素,后面的是元素顺序,这是固定的位置,不能更改-->
              <li v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>
          </ul>
      
          <script>
          var app = new Vue({
          el:'#app',
          data:{
              arrs:[
                  {id:1,name:'zs',age:18},
                  {id:2,name:'ls',age:19},
                  {id:3,name:'ww',age:20}
              ]
          }
          })
          </script>
          </body>
      
    • v-on:事件绑定,可简写成@,如v-on:click //绑定点击事件-->(@click注意了,这里的@后面是没有冒号的)
          <body>
          <ul id="app">
          <!--(item,index)前面的是元素,后面的是元素顺序,这是固定的位置,不能更改-->
          <!--$event:表示事件信息封装对象,写法是固定的,这里表示的就是z整个事件对象,-->
          <li v-on:click="choseClick($event)" v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>
          <!--以下写法与上面的效果一样-->
          <!--<li @click="choseClick" v-for="(item,index) in arrs">{{index}}-{{item.name}}</li>-->
          </ul>
      
          <script>
              var app = new Vue({
                  el:'#app',
                  data:{
                      arrs:[
                          {id:1,name:'zs',age:18},
                          {id:2,name:'ls',age:19},
                          {id:3,name:'ww',age:20}
                      ]
                  },
                  methods:{
                      //这个就是事件函数
                      choseClick:function (ev) {
                          //拿到事件对象
                         console.log(ev);
                         //获取当前的事件元素(也就是当前项目中的li元素)
                         console.log(ev.currentTarget);
                          alert(11);
                      }
                  }
              })
          </script>
          </body>
      
    • 事件传参
          <ul>
          <li v-for="u in list" v-on:click="choseClick($event,u.id,u.name)">
          {{u.id}}-{{u.name}}-{{u.age}}-{{u.sex==1?'男':'女'}}
          </li>
          </ul>
          methods:{
              choseClick:function (e, id, name) {
              console.log(e.currentTarget, id, name);
              }
          }
      

    属性

    • el:用来指定编译器从什么地方开始解析语法(可以简单理解为将Vue实例对象绑定在页面的那个标签上的)
    • data:用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在data中
    • methods:放置页面中的业务逻辑,js函数一般都放置在methods中(可以简单理解为存放自定义方法的方法区)
    • filters:过滤器集合,专门存放过滤器的
          <body>
          <ul id="app">
              <li v-for="(item,index) in arrs">
                  {{index}}-{{item.name}}-{{item.sex | sexFilter}}</li>
          </ul>
          <script>
              var app = new Vue({
                  el:'#app',
                  data:{
                      arrs:[
                          {id:1,name:'zs',age:18,sex:1},
                          {id:2,name:'ls',age:19,sex:0},
                          {id:3,name:'ww',age:20,sex:-1}
                      ]
                  },
                  filters:{
                      dataFormat:function () {
                          //多用来做数据格式转换
                      },
                      sexFilter:function (sex) {
                          if (sex == 0){
                              return '女'
                          }else if(sex == 1){
                              return '男'
                          }else {
                              return '保密'
                          }
                      }
                  }
              })
          </script>
          </body>
      
    • mounted:是一个函数,在Vue实例对象创建时调用,也就是data之前,常用来初始化data中的数据
          <body>
      <ul id="app">
          <li v-for="(item,index) in arrs">
              {{index}}-{{item.name}}-{{item.sex}}</li>
      </ul>
      
      <script>
          var app = new Vue({
              el:'#app',
              data:{
                  arrs:[
                      /*{id:1,name:'zs',age:18,sex:1},
                      {id:2,name:'ls',age:19,sex:0},
                      {id:3,name:'ww',age:20,sex:-1}*/
                  ]
              },
              mounted:function () {
                  console.log('先执行了吧');
                  let _this = this;
                  //模拟请求获取数据
                  $.get('/data/employ-data.json',function (data) {
                      console.log(data);
                      _this.arrs = data;
                  })
              }
          })
      </script>
      </body>
      

    前后端项目分离相关问题

    • 在后端服务器配置类里面配置跨域的Bean,解决跨域问题
          //跨域访问时要配置这里
          @Bean
          public WebMvcConfigurer corsConfigurer() {
              return new WebMvcConfigurer() {
                  @Override
                  //重写父类提供的跨域请求处理的接口
                  public void addCorsMappings(CorsRegistry registry) {
                      //添加映射路径
                      registry.addMapping("/**")
                              //放行哪些原始域
                              //.allowedOrigins("*")
                              /*这里要配置下新版版的,上面这个allowedOrigins是老版本的,会报错*/
                              .allowedOriginPatterns("*")
                              //是否发送Cookie信息
                              .allowCredentials(true)
                              //放行哪些原始域(请求方式)
                              .allowedMethods("GET", "POST", "PUT", "DELETE","OPTIONS")
                              //放行哪些原始域(头部信息)
                              .allowedHeaders("*")
                              //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
                              .exposedHeaders("Header1", "Header2");
                  }
              };
          }
      
    • 在html页面获取url上的参数
      <script>
          //获取url上的请求参数
          function getParams() {
          //获取问号及问号后面的内容
          var url = window.location.search;
          var params = new Object();
          if (url.indexOf("?") != -1) {
              //截取问号后面的内容,再使用&分割多个属性
              //从第1个开始截取,因为第0个是?
              var arr = url.substr(1).split("&");
              for (var i = 0; i < arr.length; i++) {
                  //使用=分割为keyvalue
                  var keyValue = arr[i].split("=");
                  params[keyValue[0]] = keyValue[1];
                  }
              }
              return params;
          }
      </script>
      

    相关文章

      网友评论

          本文标题:vue相关

          本文链接:https://www.haomeiwen.com/subject/wlgukltx.html