vue学习之hello world

依赖引入

复制代码
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>

Hello world 实现

复制代码
<html>
    <head>
        <style>

        </style>
    </head>


    <body>
        <script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>

        <div id = "app">{{msg}}</div>
        <script>
            new Vue({
                el: '#app',
                data() {
                    return {
                        msg: "hello geek!"
                    }
                }
            })
        </script>
    </body>

</html>
  • 给节点定义id,这样组件可以和指定节点进行绑定
  • Vue对象中的data节点,是对此实例数据的说明
  • 其中div中获取对象实例中定义的msg的值通过{``{}}来获取,这个叫做插值表达式

效果展示

按钮、todo列表

通过点击按钮获取输入框中的值,添加到todo列表中

  • 定义按钮、绑定方法

    <button @click="handleClick">添加</button>
    <script> new Vue({ el: '#app', data() { return { msg: "hello geek!", info: '' } }, methods: { handleClick() { console.log(this.info) } } }) </script>

input为输入框,需要通过获取输入框中的内容添加到todo列表中,通过参数绑定:v-model="info"进行绑定,在Vue对象中定义info属性,用来接收输入框的值
button绑定方法:@click = "handleClick",在Vue对象中定义方法列表,其中定义 handleClick 方法

复制代码
<ul>
	<li v-for="item in list">{{item}}</li>
</ul>

为将输入框的数据动态添加到todo列表中,使用v-for="item in list", 使用{``{item}}获取值,其中数据是从list中取的,所以需要在对象内定义list属性,是数组类型

复制代码
new Vue({
                el: '#app',
                data() {
                    return {
                        msg: "hello geek!",
                        info: '',
                        list: []
                    }
                },
                methods: {
                    handleClick() {
                        console.log(this.info)
                        this.list.push(this.info)
                    }
                }
            })

完整body如下:

复制代码
<body>
        <script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>

        <div id = "app">{{msg}}
            <div>
                <input type="text" v-model="info">
                <button @click="handleClick">添加</button>
            </div>
            <ul>
                <li v-for="item in list">{{item}}</li>
            </ul>
        </div>


        <script>
            new Vue({
                el: '#app',
                data() {
                    return {
                        msg: "hello geek!",
                        info: '',
                        list: []
                    }
                },
                methods: {
                    handleClick() {
                        console.log(this.info)
                        this.list.push(this.info)
                    }
                }
            })
        </script>
    </body>

在点击方法内,将获取到的输入框的值添加到数组中

todo列表添加完成后清空

复制代码
handleClick() {
    if (this.info != '') {
        this.list.push(this.info)
        this.info = ''
    }
}

组件定义

如果<li v-for="item in list">{``{item}}</li>这种遍历场景很多的话,我们为了不希望每个地方都写一遍,所以将此进行封装和定义:

复制代码
Vue.component('todo-item', {
    props: ['item'],
    template: '<li class="item">{{item}}</li>'
})

// 在使用时
<todo-item v-for="item in list" :item="item"></todo-item>

Vue.component是注册一个名为todo-item的组件,props是用来接收参数的,这个参数是让template中使用的
:item="item"是将for遍历中的item进行绑定的,和props中定义的参数一致,如果props中定义的参数为:value,要给组件传值的话,就需要使用:value=""来进行传值

总结

  • 插值表达式
  • vue对象实例化,我们的数据都是在对象中定义,以及方法也是在其中定义
  • 属性绑定:v-model、循环遍历:v-for、参数绑定:参数名称

以上写法我们每次都要刷新页面,没有热刷新,下面我们即将使用热更新的方式进行开发和学习

相关推荐
Gracemark6 小时前
高德地图-地图选择经纬度问题【使用输入提示-使用Autocomplete进行联想输入】(复盘)
vue.js
天下无贼7 小时前
【手写组件】 Vue3 + Uniapp 手写一个高颜值日历组件(含跨月补全+今日高亮+选中状态)
前端·vue.js
洋葱头_8 小时前
vue3项目不支持低版本的android,如何做兼容
前端·vue.js
奔跑的蜗牛ing8 小时前
Vue3 + Element Plus 输入框省略号插件:零侵入式全局解决方案
vue.js·typescript·前端工程化
最后一个农民工11 小时前
vue3实现仿豆包模版式智能输入框
前端·vue.js
艾小码14 小时前
Vue组件到底怎么定义?全局注册和局部注册,我踩过的坑你别再踩了!
前端·javascript·vue.js
wusp199414 小时前
项目实战——“微商城”前后台【005】之前台项目首页编写
vue.js·vant·底部导航栏
2303_Alpha14 小时前
SpringBoot
笔记·学习
萘柰奈15 小时前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽15 小时前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat