首页 > 其他分享 >vuE初探[230704]

vuE初探[230704]

时间:2023-07-04 22:25:47浏览次数:45  
标签:Vue createApp data mount vuE template 初探 230704 root

vue语法初探

课前须知

知识储备:html、JavaScript、css(node、npm、webpack)

课程介绍
进阶式:
  1. 基础:生命周期函数 条件循环渲染指令、页面样式修饰语法···
  2. 组件:全局&局部、数据传递、插槽基础···
  3. 动画:单组件元素、列表&状态动画、CSS和JS动画···
  4. 高级扩展语法:Mixin混入、Vue的自定义指令、Teleport传送门···
  5. Composition API:产生背景、setup函数、响应式引用···
  6. 生态全家桶:vueCLI脚手架、大型工程、vue-Router、vue-X···
课程收获
  • 理解运用vue3 原理 代码设计能力
  • 移动端开发能力
  • 公司级别项目

以 Visual Studio Code为例,

hello world
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>hello world</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>                            
</body>
<script>
    Vue.createApp({                         #我要创建一个vue实例
        template: '<div>hello world</div>'  #在root这个元素里展示模板
    }).mount('#root');                      #让实例作用于root这个元素
</script>
</html>
倒计时(修改后半)
<body>
    <div id="root"></div>                            
</body>
<script>
    Vue.createApp({
        data(){
            return{
                content:1
            }
        },
        mounted(){
            setInterval(()=>{
                this.content += 1;
            },1000)
        },
        template: '<div>{{content}}</div>'
    }).mount('#root');
</script>
</html>
字符串反转和内容隐藏
  Vue.createApp({
        data(){
            return{
                content:'hello world'
            }
        },
        methods:{
          handleBtnClick() {
            this.content = this.content.split('').reverse().join('');
          }
},
        template: `
        <div>
            {{content}}
            <button v-on:click="handleBtnClick">反转</button>               
            </div>
        `
    }).mount('#root');
</script>
</html>

vue指令 “v-on” 其 “绑定(click)事件” 并 定义在 methods 里

Vue.createApp({
        data(){
            return{
                show : true
            }
        },
        methods:{
          handleBtnClick() {
            this.show = !this.show ;
          }
},
        template: `
        <div>
            <span v-if="show">你看见我啦</span>
            <button v-on:click="handleBtnClick">你看不见我!</button>               
            </div>
        `
    }).mount('#root');
</script>
</html>

操作效果如下

image-20230704210250901

介绍 “v-if”指令 ,定义 show 变量用以控制显示与否

span标签到底存不存在取决于 show 值

todolist 小功能——循环和双向绑定
Vue.createApp({
        data(){
            return{
                list:['hello','world','dell','lee']
            }
        },
        
        template: `
          <ul>
           <li>hello</li>
           <li>world</li>
           <li>dell</li>
           <li>lee</li>
          </ul>
        `
    }).mount('#root');
</script>
</html>

    内的部分替换为:

    `template: ``

    <ul>

    <li v-for="item of list">{{item}} test </li>

    </ul>

    ​ ```

显示效果(除“test”字样)一致。

若:

<ul>

  • {{item}} {{index}}
  • </ul>

    则可如图示打印出下标

    image-20230704212129655

    image-20230704212857587 image-20230704212923533
     Vue.createApp({
            data(){
                return{
                    inputValue:'',                                     定义一个空值
                    list:[]
                }
            },
            methods:{
                handleAddItem(){
    this.list.push("hello");
                }
            },
            template: `
            <div>
                <input v-model="inputValue" />                          双向绑定,此处的inputvalue变化引起data里同名的变化
                <button v-on:click="handleAddItem">增加</button>
              <ul>
                <li v-for="(item, index) of list">{{item}} {{index}}</li>
              </ul>
            </div>
              `
        }).mount('#root');
    
    组件概念——对todolist拆解
    Vue.createApp({
            data(){
                return{
                    inputValue:'',
                    list:[]
                }
            },
            methods:{
                handleAddItem(){
                   
                this.list.push(this.inputValue);
                this.inputValue = '';
                }
            },
            template: `
            <div>
                <input v-model="inputValue" />
                <button v-on:click="handleAddItem"
                v-on:click="handleAddItem"
                v-bind:title="inputValue"                                  bind指令:希望title属性和某数据绑定
                >
                增加</button>
              <ul>
                <li v-for="(item, index) of list">{{item}} {{index}}</li>
              </ul>
            </div>
              `
        }).mount('#root');
    

    鼠标放在button上会展示输入框的内容:image-20230704214836217

    “前端要拆组件”,组件就是页面上的一部分,可以是input框,可以是button···

     const app = Vue.createApp({
            data(){
                return{
                    inputValue:'',
                    list:[]
                }
            },
            methods:{
                handleAddItem(){
                   
                this.list.push(this.inputValue);
                this.inputValue = '';
                }
            },
            template: `
            <div>
                <input v-model="inputValue" />
                <button 
                v-on:click="handleAddItem"
                v-bind:title="inputValue"
                >
                增加</button>
              <ul>
                <todo-item v-for="(item, index) of list"/>
                        </ul>
            </div>
              `
        });
        app.component('todo-item',
        {
            template:'<div>hello world</div>'
        }
        );
        app.mount('#root');
    </script>
    </html>
    

    标签:Vue,createApp,data,mount,vuE,template,初探,230704,root
    From: https://www.cnblogs.com/yansz001216/p/17527170.html

    相关文章

    • Vue02
      1.Vue计算属性和watch监听1.1.计算属性<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><!--引入vue.js--><scriptsrc="node_modules/vue/dist/vue......
    • vue项目中锚点定位bug无效和替代方式
      在vue项目中,使用锚点定位会和router的规则冲突,在项目中的表现就是第一次点击url改变了,但是没有跳转到锚点位置,再次点击才会跳转。所以在vue项目中定义一个方法不适用锚点定位:scrollToSection(id){letsection=document.getElementById(id)if(section){......
    • 解决vue 不是内部或外部命令
      1.输入命令找到npm的配置路径npmconfiglist2.查看此路径下有没有vue.cmd3.如果有vue.cmd,将当前路径复制添加到path环境变量步骤:桌面右击“我的电脑”-属性-高级系统设置-环境变量环境变量两种添加方式:①直接新建-规范取一个变量名-将vue.cmd所在路径复制到变量值......
    • Vue内置缓存组件keep-alive
      <el-tab-panelabel="周边配套":disabled=!gardenIdname="five"><keep-alive><Surrour:gardenId="gardenId"v-if="activeName==='five'"/></keep-alive>......
    • java、vue基于hutool的aes指定秘钥加密(前后端aes加解密)
       后端代码//加密data对称AESKeybyte[]key=getBytes("._^BV67nW6ck8fwg",16);//秘钥长度最好是16位SymmetricCryptoaes=newSymmetricCrypto(SymmetricAlgorithm.AES,key);Stringjsondata=aes.encryptHex("中国test");System.out.println(jsondata);//......
    • vue 基于 CountUp.js,可用于创建显示数字数据的动画。
      地址:https://github.com/xlsdg/vue-countup-v2Installation$npminstall--savecountup.jsvue-countup-v2Usage<template><divclass="iCountUp"><ICountUp:delay="delay":endVal="endVal"......
    • vue-cropper cdn vue3 打包后提示找不到
      vue-croppercdnvue3打包后bug vue3项目tscdn引入  vue-cropper官网推荐引入方式   dev环境报错运行不了后面发现打包后找不到  VueCropper,原来是名称问题, 修改如下:main.ts直接引入 再添加脚本到html文件window.VueCropper=window['vue-cropper'......
    • vue3+tiff.js展示tif文件
      vue3+tiff.js展示tif文件场景:tif格式的文件需要在页面上预览(预览的tif文件较小)组件:tiff.jsnpminstalltiff.js组件引入:import'tiff.js';注意:网络上的信息引入使用importTifffrom'tiff.js'  但是实际测试这样会报错: 看源码发现只需要直接import即可获......
    • Vue-CoreVideoPlayer使用
      介绍Vue-CoreVideoPlayer一款基于vue.js的轻量级的视频播放器插件。采用AdobdXD进行UI设计,支持移动端适配,不仅功能强大,颜值也是超一流!Vue-CoreVideoPlayer的说明文档和sample都很完善,上手十分容易。该组件也保持了和原生HTMLVideo属性配置的对接,可定制性很高。播放器......
    • 20230704赛后复盘
      复盘时间安排8:00~8:30写&调T1,过样例8:30~9:10胡T2,过样例9:10~9:40研究T3,写了个错误的DP,FALSE9:40~9:45看了眼T4,骗了点分9:45~10:00摸T3正解,摸了一大半然后(就没有然后了)部分分正解(100/100)正解(0/100)无骗无解情况(10/?)失误T2没写freopen,寄…题解T1选择一个数替......