Vuejs基础入门

简介: Vuejs基础入门

Vue概述


早期前后端分离模式


早期的前后端分离开发模式是这样的:


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            table {
                width: 600px;
                text-align: center;
                border-bottom: solid 2px #DDD;
                /* 合并边框 */
                border-collapse: collapse;
            }
            td,th {
                border-bottom: solid 1px #DDD;
                height: 40px;
            }
        </style>
    </head>
    <body>
        <h3>用户信息</h3>
        <table>
            <tr>
                <th>用户编号</th>
                <th>用户姓名</th>
                <th>用户性别</th>
                <th>用户年龄</th>
            </tr>
            <tbody id="userBox">
                <!-- 这里是动态内容 -->
            </tbody>
        </table>
        <script>
            let userArr = [{
                userId: 1,
                userName: '张三',
                userSex: '男',
                userAge: 20
            }, {
                userId: 2,
                userName: '李四',
                userSex: '女',
                userAge: 21
            }, {
                userId: 3,
                userName: '王五',
                userSex: '男',
                userAge: 22
            }]
            let userBox = document.getElementById('userBox');
            let str = '';
            for (let i = 0; i < userArr.length; i++) {
                str += '<tr>' +
                           '<td>' + userArr[i].userId + '</td>' +
                           '<td>' + userArr[i].userName + '</td>' +
                           '<td>' + userArr[i].userSex + '</td>' +
                           '<td>' + userArr[i].userAge + '</td>' +
                       '</tr>';
            }
            userBox.innerHTML = str;
        </script>
    </body>
</html>

以上开发模式的特点是:

1、必须直接操作DOM,动态改变DOM对象的内容与样式。

2、必须要进行大量的字符串拼接,才能拼接出动态内容,然后绑定到视图(html)上。

3、这种绑定方式是单向的。即:使用javascript将动态数据绑定到DOM上,但是用户操作DOM引起的变化,却不能反映到javascript的动态数据上。


MVVM框架


MVVM框架分为三个部分:分别是M(Model,模型层 ),V(View,视图层),VM(ViewModel,V与M连接的桥梁,也可以看作为控制器)


1、M:模型层,主要负责业务数据相关。

2、V:视图层,顾名思义,负责视图相关,细分下来就是html+css层。3、VM:V与M沟通的桥梁,负责监听M或者V的修改,是实现MVVM双向绑定的要点。


MVVM支持双向绑定,意思就是当M层数据进行修改时,VM层会监测到变化,并且通知V层进行相应的修改,反之修改V层则会通知M层数据进行修改,以此也实现了视图与模型层的相互解耦。

1.png


Vue简介


Vue.js : 渐进式JavaScript 框架,它就是一个前端MVVM框架。 Vue.js的作者为Evan You(尤雨溪),任职于Google Creative Lab。 Vue的主要特点就和它官网所介绍的那样: 1.简洁 2.轻量 3.快速 4. 数据驱动 5.模块友好 6.组件化。


Vue.js快速入门


安装Vue环境


1、打开此链接:https://cdn.jsdelivr.net/npm/vue/dist/vue.js

    Ctrl + S 把vue.js文件保存到本地使用。

2、或者在body标签中加入下面这句话:


<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>


Hello World程序


样例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <title></title>
    </head>
    <body>
        <div id="app">
      {{msg}}
        </div>
        <script>
            //定义全局变量vm
            let vm = new Vue({
                el: '#app',
                data: {
                    msg: 'Hello World!'
                }
            });
        </script>
    </body>
</html>

运行结果:

1.png


vue双向数据绑定


样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title></title>
  </head>
  <body>
    <div  id="app">
        <input type="text"  v-model="msg" /></br>
        <span>{{msg}}</span>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'Keafmd'
            }
        });
    </script>
  </body>
</html>

效果截图:

1.gif


可以看到我们操作的view控件数据,直接影响到了我们的vm.data,并且又进一步影响到了页面,这就是Vue的双向数据绑定。整个过程的原理如下图所示:


1.png


文本渲染指令


Vue使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据。所有Vue的模板都是合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析。


在前面,我们一直使用的是字符串差值的形式渲染文本,但是除此方法之外,vue还提供了其他几种常见的文本渲染方式:


1. v-text:更新元素的innerText

2. v-html:更新元素的innerHTML


样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title></title>
  </head>
  <body>
    <div id="app">
        <div v-html="msg"></div>
        <div v-text="msg"></div>
    </div>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                msg:'<p>Keafmd!</p>'
            }
        });
    </script>
  </body>
</html>

效果截图:


1.png

在Vue中,我们可以使用 { { } } 将数据插入到相应的模板中,这种方法是一种文本插值。 使用这种方法,如果网络慢或者JavaScript出错的话,会将 { { } } 直接渲染到页面中。 值得庆幸的是,Vue还提供了v-text和v-html来渲染文本或元素。这样就避免了将 { { } } 直接渲染到页面中。


属性绑定指令


如果想让html标签中的属性,也能应用Vue中的数据,那么就可以使用vue中常用的属性绑定指令:v-bind

样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title></title>
  </head>
  <body>
    <div id="app">
        <div v-bind:title="msg">DOM元素属性绑定</div>
        <!-- v-bind的简写形式 -->
        <div :title="msg">DOM元素属性绑定</div>
    </div>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                msg:'Hello World!'
            }
        });
    </script>
  </body>
</html>

效果截图:


1.gif

上面展示的是v-bind的最基本的使用,第一种是完整语法,第二种是缩写方式。

除了将元素的title属性和vue实例的相关字段进行绑定外,还能将其他的属性字段进行绑定,最常见的是对于样式的绑定,即class和style属性。


绑定样式


使用v-bind指令绑定class属性,就可以动态绑定元素样式了。

样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <style>
          .one{
              color: red;
          }
          .two{
              color: blue;
          }
      </style>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <title></title>
  </head>
  <body>
      <div id="app">
          <div :class="className">DOM元素的样式绑定</div>
      </div>
      <script>
          let vm = new Vue({
              el: '#app',
              data: {
                  className:'one'
              }
          });
      </script>
  </body>
</html>

效果截图:

1.png


通过:className:‘one’ 来绑定one class属性,使颜色修改为red


使用对象语法绑定样式


我们可以给v-bind:class 一个对象,也可以直接绑定数据里的一个对象,以动态地切换class。


样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
            .one{
                color: red;
            }
            .two{
                font-size: 48px;
            }
    </style>
  </head>
  <body>
    <div id="app">
      <div :class="{one:oneActive,two:twoActive}">DOM元素的样式绑定1</div>
      <div :class="{one:false,two:true}">DOM元素的样式绑定2</div>
    </div>
    <script>
      let vm = new Vue({
        el: '#app',
        data: {
          oneActive:true,
          twoActive:false
        }
      });
    </script>
  </body>
</html>

效果截图:

1.png


我们可以通过绑定数据里的一个对象来实现切换,也可以直接写true或者false来控制。


使用三目运算绑定样式


可以使用三目运算符,来动态绑定样式。


样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
            .one{
                color: red;
            }
    </style>
    <title></title>
  </head>
  <body>
      <div id="app">
          <div :class="userId==1 ? className : '' ">DOM元素的样式绑定</div>
          <div :class="userId==2 ? className : '' ">DOM元素的样式绑定</div>
      </div>
      <script>
          let vm = new Vue({
              el: '#app',
              data: {
                  userId:1,
                  className:'one'
              }
          });
      </script>
  </body>
</html>

效果截图:

1.png


直接绑定内联样式


也可以直接绑定内联样式。


样例代码:


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
        <div style="color:red;font-size: 50px;">DOM元素的样式绑定1</div>
        <div :style="{color:colorValue,fontSize:fontSizeValue}">DOM元素的样式绑定2</div>
        <div :style="stylelist">DOM元素的样式绑定3</div>
    </div>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                colorValue: 'green',
                fontSizeValue: '60px',
                stylelist: 'color:red'
            }
        });
    </script>
  </body>
</html>

效果截图:


1.png

注意:绑定style属性后,样式的书写要遵循javaScript规范。 也就是将 xxx-xxx 改写成驼峰命名方式 xxxXxxx

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
3月前
|
JavaScript 前端开发 小程序
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
一小时入门Vue.js前端开发
|
2月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
2月前
|
JavaScript API 开发者
十分钟 带你强势入门 vue3
十分钟 带你强势入门 vue3
66 1
|
2月前
|
JavaScript
vue3完整教程从入门到精通(新人必学2,搭建项目)
本文介绍了如何在Vue 3项目中安装并验证Element Plus UI框架,包括使用npm安装Element Plus、在main.js中引入并使用该框架,以及在App.vue中添加一个按钮组件来测试Element Plus是否成功安装。
89 0
vue3完整教程从入门到精通(新人必学2,搭建项目)
|
2月前
|
JavaScript Java CDN
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
本文提供了Vue 3从入门到精通的完整教程,涵盖了创建Vue应用、通过CDN使用Vue、定义网站以及使用ES模块构建版本的步骤和示例代码。
343 0
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
|
2月前
|
JavaScript 前端开发 C#
从入门到放弃,我们为何从 Blazor 回到 Vue
【10月更文挑战第29天】在前端开发中,许多开发者从尝试新技术 Blazor 最终回到熟悉的 Vue。主要原因包括:1) Blazor 学习曲线陡峭,Vue 上手容易;2) Vue 开发工具成熟,开发效率高;3) Vue 性能优异,优化简单;4) Vue 社区庞大,生态丰富;5) 项目需求和团队协作更适配 Vue。选择技术栈需综合考虑多方面因素。
118 0
|
4月前
|
缓存 监控 JavaScript
vue从安装到熟练 2022流畅无痛版(第一季:入门篇)
该文章是《vue从安装到熟练 2022流畅无痛版》系列的第一季入门篇,介绍了Vue的基本概念、环境配置、项目创建与运行,并通过修改HelloWorld.vue和App.vue文件内容展示了如何在页面上显示"Hello World",最后还提供了Vue官方文档链接和介绍了Vue的常用内置指令和模板语法等基础知识。
vue从安装到熟练 2022流畅无痛版(第一季:入门篇)
|
4月前
|
JavaScript 前端开发
vue入门
vue入门
32 2
vue入门
|
7月前
|
JavaScript 开发者 UED
Vue入门到关门之第三方框架elementui
ElementUI是一个基于Vue.js的组件库,包含丰富的UI组件如按钮、表格,强调易用性、响应式设计和可自定义主题。适用于快速构建现代化Web应用。官网:[Element.eleme.cn](https://element.eleme.cn/#/zh-CN)。安装使用时,需在项目中导入ElementUI和其样式文件。
74 0
|
4月前
|
JavaScript 前端开发 API
Vue3入门
Vue3入门
35 0
下一篇
DataWorks