美文网首页
Vue.js小白速成手册01

Vue.js小白速成手册01

作者: 剽悍一小兔 | 来源:发表于2020-06-30 22:29 被阅读0次

    1,下载一个好用的IDE

    建议安装visual Studio Code,下载地址:https://code.visualstudio.com/


    安装完毕之后,还需要安装两个vue的扩展包,后面会用到:
    1.vetur
    2.vue vscode snippets
    在这里搜索这两个扩展程序,安装一下就好了。

    2,快速上手Vue:做点东西出来

    随便找个地方,创建一个叫做project的文件夹,文件夹里面放一个vue.js,这个是vue的核心文件,你可以网上去下载,或者直接用本教程给出的资源包。


    好了以后打开VSCODE,导入这个文件夹,作为一个新项目。步骤是: File -- Open Folder



    导入成功后,点这个:



    创建一个新的文件,就叫做index.html

    在这个html文件中,打一个感叹号,自动提示的,用第一个快速生成文件结构。



    没错,一下子就这样了。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    </html>
    
    步骤1,通过script引入vue
    <script src="vue.js"></script>
    
    步骤2,创建宿主元素div
    <div id="app"></div>
    
    步骤3,用vue去控制宿主元素

    简单来说就是创建一个vue实例,从此可以去控制刚才的div

        <script>
            new Vue({
                el:'#app',
            });
        </script>
    

    #app是ID选择器,这样一来,vue就和那个div建立了密不可分的联系。

    步骤4,理解一下MVVM

    上面是MVVM呢,就是Model(模板)+View(试图)+ModelView(模板引擎)。现在,我在div里面写一点东西,就画一个按钮吧。

    <div>
        <button>{{buttonLabel}}</button>
    </div>
    

    注意,buttonLabel是被 双大括号 括起来的,这代表上面这段HTML代码是一个模板。刚才我们不是引入了vue.js吗?而且还创建了一个vue实例,通过id=app 做了宿主元素的控制。

    于是,vue内部会做一些事情,什么事情呢?就是会把一个叫做app的div全部解码,封装为一个js函数!听起来不可思议,但是它就是这样运作的。有人可能会问,为什么要这样做呢?如果你想要去改变按钮的文字,用document.getElementById就可以了,改一下innerHTML的事情,多简单啊。

    是的,用dom操作完全可以实现,但是MVVM的思想就是让数据来驱动视图。既然我们可以把整段HTML变成一个js函数,那么自然也可以通过里面某些变量的改变,去重新渲染这个函数,得到视图的实时变化!这样的好处就是,我们可以不必去关心DOM操作,而是只关心数据就行了。

    OK,继续,为了绑定buttonLabel,我们需要把这个数据在vue中定义一下。这边用代码提示,写一个vdata,用第一个快捷提醒。



    代码如下:

    new Vue({
        el:'#app',
        data() {
            return {
                buttonLabel: '早起'
            }
        },
    });
    

    页面效果:


    这个操作叫做Vue的响应式数据绑定,我们来一张图:

    Vue的主要作用就是MVVM中的VM。什么叫响应式呢,就是data里面的数据变了,视图层也会发生变化。如果某种情况下视图层里的数据变了,也会反作用于data,这是相互的。

    3,Vue核心语法

    这一节介绍Vue的核心语法。

    3.1 插值语法

    插值语法是最简单的,就是像上面那样,用双大括号括起来一个数据,同时让这个数据在vue里面的data中去定义就行了。在HTML元素中,如果要绑定属性,就在原有属性的左边加一个冒号即可,像这样:

    <div>
        <button :title="buttonLabel">{{buttonLabel}}</button>
    </div>
    

    注意,如果属性左边加上了冒号,那么双引号里面的内容就是纯粹的JS表达式了,它并不是一个静态值哦!这个就是插值语法,很简单吧。

    3.2 循环语法

    刚才的案里中,我们只有一个按钮,现在思考一个问题,假如我有多个按钮怎么办呢?我们能不能定义一个数组,然后数组里面有多少个元素,页面就显示多少个按钮?比如,我们在data里面设置一个变量buttons。

    buttons:['早睡','早起','写日记','跑步半小时']
    

    页面上就这么写:

    <button v-for="button in buttons" :title="button">{{button}}</button>
    

    效果:



    可以看到,几个按钮被成功渲染出来了。button是每次拿出的单个元素,buttons就是定义在data中的数组。注意,当你用v-for去做数组遍历的时候,一定要加上一个key属性,代表每一个项的ID。因为现在的数组比较简单,就是一个单值,所以我们就这样写了。

    <button v-for="button in buttons" :key="button" :title="button">{{button}}</button>
    

    button只是一个别名哦,你也可以写成item,随便你。emmm,是不是有点丑,我们稍微做一下美化。美化html元素,当然就少不了css了,为了方便起见,我们直接用style就行了。

    <button 
    style="margin: 4px; border: none; font-size: 12px; padding: 4px 10px; color: #353535; background: #dbdbdb;" 
    v-for="button in buttons" 
    :key="button" 
    :title="button">{{button}}
    </button>
    

    效果:


    3.3 输入绑定

    现在数组buttons是写死的,我们不希望它写死,希望能够让用户去手动添加按钮。于是,我们非常熟练地写了一个input框。

    <input />
    

    够简单不?
    哈哈哈。
    我们随便在input框里面输入一些内容,希望按一下回车,就把这些内容变成一个按钮,追加在下面。你打算怎么做呢,是不是手中 锋利的jquery 已经蠢蠢欲动?


    打住,亲!
    我们是vue教程,给我个面子好不啦。在vue中,我们已经不用去关心dom操作啦,只需要关心数据如何绑定就行了。简单来说,你不就是想要input框里面的内容吗?想一个名字,就叫buttonName吧,放到data里面。
    new Vue({
        el:'#app',
        data() {
            return {
                buttonName: "",
                buttons:['早睡','早起','写日记','跑步半小时']
            }
        },
    });
    

    问题来了,你写个buttonName在data里面算怎么回事?当然还差一步啊,你需要使用v-model去input里面绑定buttonName。这样一来,input只要发生值变化事件,data里面的buttonName就会跟着变。我就不演示啦,反正这个知识点网上铺天盖地都是,懒得验证了,就是这样啊喵。



    上代码:

    <input v-model="buttonName" />
    

    没错,这就完了,简单不?
    OK,然后我们要敲回车,得到input框里面输入的内容哦。敲回车,这是一个事件,硬件里头叫中断,软件里头叫做事件,Event。JS的事件,是on一个事件名来做的。vue里面你就直接简写吧,不要v-on了,没啥意思,一般都是@一下。上代码:

    <input v-model="buttonName" @keydown.enter="add" />
    

    @keydown是监听键盘按下事件,后面的.enter是vue的修饰符,代表按下的按键是enter键。后面双引号里面的是JS表达式,这里对应的是vue对象中的某一个方法。vue对象的方法,我们需要一个methods区域,哎,我也不会讲,直接看代码吧,相信聪明的你一看就懂!

        methods: {
            add(){
               this.buttons.push(this.buttonName);
               this.buttonName = ''; //清空输入框 
            }
        },
    

    只要是data里面的数据,在vue对象的内部,我们都可以使用 this. 的方法直接调用哦,亲!
    用vue写页面的好处就是,很清晰,你很清楚自己定义的变量在什么位置,还有调用的方法在什么地方?看看效果吧!



    vue其他的修饰符还有很多,我这边就不多做介绍了,反正以后都是用UI,正常情况下,也很少自己去写底层的一些东西。无所谓啦。

    相关文章

      网友评论

          本文标题:Vue.js小白速成手册01

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