当前位置:   article > 正文

VUE [入门篇]_new vue 参数

new vue 参数

目录

VUE简介

        Vue优点

        两个核心点

        虚拟DOM

        MVVM

        声明式渲染 

Vue入门 

        1.1入门示例

                1. 安装

                 2. helloworld

        1.2  内部指令

        1、 v-if 、v-else、v-else-if、v-show

        2、v-for

        3、v-text 、v-html

        4、v-on

        5、v-model

        6、v-bind

        7、v-pre、v-cloak、v-once


VUE简介

渐进式框架

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

渐进式: 构建项目可以由简单到复杂

Vue优点

1.体积小 压缩后的文件只有33k
2.运行效率更高 采用虚拟机DOM,一种可以预先通过javaScript对数据进行计算.把最终的DOM操作计算出来并且优化的技术. 由于这个DOM操作属于预处理操作,并没有真实的操作DOM ,所以叫做虚拟DOM
3.双向数据绑定 让开发者不再去操作DOM,将更多的经历投入到业务中
4.生态丰富 市面上有大量的开源项目基于vue 进行开发 成熟稳定.

两个核心点

(1)响应式数据绑定
当数据发生变化的时候,视图自动更新,即双向数据同步,原理利用了ES6中的 Object.definedProperty 中的setter/getter 代理数据,监控对数据的操作。
(2)组合的视图组件
即页面最终映射为一个组件树,采用树形数据结构进行设计,方便维护,重用。

虚拟DOM

利用在内存中生成与真实DOM与之对应的数据结构,这个在内存中生成的结构称之为虚拟DOM。当数据发生变化时,能够智能的计算出重新渲染组件的最小代价并应用到DOM操作上。

MVVM

1).字母解释
1.M model 数据
2.V view 视图
3.VM (view-model) 数据和视图的控制

2).当页面数据发生变化时,则通过dom监听将数据传给model
当model的数据发生变化时,则通过数据绑定 绑定到页面中

声明式渲染 

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
额外补充:
渲染分为:命令式渲染和声明式渲染
命令式渲染:命令我们的程序去做什么,程序就会跟着你的命令去一步一步执行
声明式渲染 :只需要告诉程序想要什么效果,其他的交给程序来做
具体区别看如下代码,执行结果一样,实现方式不同。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>命令式渲染和声明式渲染</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. var arr = [1,2,3,4,5];
  10. // 命令式渲染:关心每步,关心流程,用命令去实现
  11. var newArr = [];
  12. for(var i = 0, len = arr.length; i < len; i++) {
  13. newArr.push(arr[i] * 2);
  14. }
  15. console.log(newArr);
  16. // 声明式渲染:不关心中间流程,只需要关心结果和实现条件
  17. var arr1 = arr.map(function(item) {
  18. return item*2;
  19. });
  20. console.log(arr1)
  21. </script>
  22. </body>
  23. </html>

1.Vue入门 

1.1入门示例

1. 安装

(1) CDN引入

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

(2) NPM安装

npm install vue

2. helloworld

  1. <!--第一步:创建文件夹及html文件-->
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Vue入门之Helloworld</title>
  7. <!--第二步:引入Vue库-->
  8. <script language="JavaScript" src="vue.min.js"></script>
  9. </head>
  10. <body>
  11. <!--第三步:创建一个Div-->
  12. <div id="app">
  13. <!--Vue的模板的绑定数据的方法,用两对花括号进行绑定Vue中的数据对象的属性 -->
  14. {{message}}
  15. </div>
  16. <!--第四步:创建Vue的对象,并把数据绑定到上面创建好的div上去。-->
  17. <script type="text/javascript">
  18. var app=new Vue({ // 创建Vue对象。Vue的核心对象。
  19. el:'#app', // el属性:把当前Vue对象挂载到 div标签上,#app是id选择器
  20. data:{ // data: 是Vue对象中绑定的数据
  21. message:'hello Vue!' // message 自定义的数据
  22. }
  23. })
  24. </script>
  25. </body>
  26. </html>

1.2  内部指令

1、 v-if 、v-else、v-else-if、v-show

这几个条件指令用于显示与隐藏各类元素,使用方式如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>分支结构语法</title>
  6. </head>
  7. <body>
  8. <div id="app" align="center">
  9. <h1>根据根据分数评级</h1>
  10. <!-- v-if当判断条件成立时 div展现 控制dom元素增加 开销较大 -->
  11. <div v-if="score>=90">优秀</div>
  12. <div v-else-if="score>=80">良好</div>
  13. <div v-else-if="score>=70">中等</div>
  14. <div v-else>不及格</div>
  15. <!-- 直接渲染到页面中采用display: none;隐藏属性 如果频繁展现的元素 使用v-show -->
  16. <div v-show="flag">测试show数据</div>
  17. <button @click="flag= !flag">展现</button>
  18. </div>
  19. <script src="../js/vue.js"></script>
  20. <script>
  21. const app = new Vue({
  22. el: "#app",
  23. data: {
  24. //定义分数
  25. score: 100,
  26. flag: false
  27. }
  28. })
  29. </script>
  30. </body>
  31. </html>

 

 v-if与v-show的区别

  • v-if: 在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建,开销较高,在运行时条件很少改变时使用。
  • v-show:调整css dispaly属性,开销较小,在常频繁地切换时使用。

2、v-for

(1) 基本用法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <!--模板-->
  10. <div id="app">
  11. <ul>
  12. <li v-for="item in items">
  13. {{item}}
  14. </li>
  15. </ul>
  16. </div>
  17. <!--js代码-->
  18. <script type="text/javascript">
  19. var app=new Vue({
  20. el:'#app',
  21. data:{
  22. items:[20,23,18,65]
  23. }
  24. })
  25. </script>
  26. </body>
  27. </html>

 (2) 对象遍历

参数: 第一个为值,第二个为键名,第三个为索引

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script></head>
  7. </head>
  8. <body>
  9. <!--模板-->
  10. <div id="app">
  11. <ul>
  12. <li v-for="(value,key,index) in object">
  13. {{ index }}. {{ key }} - {{ value }}
  14. </li>
  15. </ul>
  16. </div>
  17. <!--js代码-->
  18. <script type="text/javascript">
  19. var app=new Vue({
  20. el:'#app',
  21. data:{
  22. object:{
  23. firstName: 'John',
  24. lastName: 'Doe'
  25. }
  26. }
  27. })
  28. </script>
  29. </body>
  30. </html>

 

3、v-text 、v-html

(1)v-text

{{xxx}}取值有个弊端,当网速很慢或javascript出错时,会在页面显示{{xxx}} (插值闪烁),Vue提供的v-text可以解决这个问题

作用: 直接展现解析数据

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <div>
  10. {{ message }}
  11. </div>
  12. <!--和下面的一样-->
  13. <div v-test="message"></div>
  14. </body>
  15. </html>

(2)v-html

用于解析html的数据

  1. <!-- v-html指令 直接显示html效果 容易被攻击 本网站内可以使用
  2. 第三方数据来源不要使用-->
  3. <p v-html="html"></p>

4、v-on

(1)常规用法

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <!--v-on常规用法-->
  10. <div id="add">本场比赛得分: {{count}}
  11. <button v-on:click="add">加分</button>
  12. </div>
  13. <!--//JS-->
  14. <script type="text/javascript">
  15. new Vue({
  16. el: '#add',
  17. data:{
  18. count: 1
  19. },
  20. methods: {
  21. add: function(){
  22. this.count++;
  23. }
  24. }
  25. });
  26. </script>
  27. </body>
  28. </html>

 

 (2)缩写

<button @click="add">加分</button>

5、v-model

用法: 在表单控件或者组件上创建双向绑定,当js数据修改时,页面内容变化, 当页面内容修改时,则数据变化.

以下的model都需要在data中声明初始值

  1. data: {
  2. message: "a",
  3. count: 1,
  4. status: [],
  5. sex: '男',
  6. selected: ''
  7. }

(1)input

<input type="text" v-model="message">

(2)textarea

<textarea  cols="30" rows="10" v-model="message"></textarea>

 (3)checkbox

  1. <input type="checkbox" id="first" value="1" v-model="status">
  2. <label for="first">有效</label>
  3. <input type="checkbox" id="second" value="2" v-model="status">
  4. <label for="second">无效</label>
  5. <div>状态:{{status}}</div>

(4)radio

  1. <input type="radio" id="one" value="男" v-model="sex">
  2. <label for="one"></label>
  3. <input type="radio" id="two" value="女" v-model="sex">
  4. <label for="one"></label>
  5. <div>性别:{{sex}}</div>

(5)select

  1. <select v-model="selected">
  2. <option disabled value="">请选择</option>
  3. <option>A</option>
  4. <option>B</option>
  5. <option>C</option>
  6. </select>
  7. <div>Selected: {{ selected }}</div>

完整代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <input type="text" v-model="message"/>
  11. <br>
  12. <textarea cols="30" rows="10" v-model="message"></textarea>
  13. <br>
  14. <input type="checkbox" id="first" value="1" v-model="status"/>
  15. <label for="first">有效</label>
  16. <input type="checkbox" id="second" value="2" v-model="status"/>
  17. <label for="second">无效</label>
  18. <div>状态:{{status}}</div>
  19. <br>
  20. <input type="radio" id="one" value="男" v-model="sex"/>
  21. <label for="one"></label>
  22. <input type="radio" id="two" value="女" v-model="sex"/>
  23. <label for="one"></label>
  24. <div>性别:{{sex}}</div>
  25. <br>
  26. <select v-model="selected">
  27. <option disabled value="">请选择</option>
  28. <option>A</option>
  29. <option>B</option>
  30. <option>C</option>
  31. </select>
  32. <div>Selected {{ selected }}</div>
  33. <br>
  34. </div>
  35. <script type="text/javascript">
  36. new Vue({
  37. el: '#app',
  38. data: {
  39. message: "a",
  40. count: 1,
  41. status: [],
  42. sex: '男',
  43. selected: ''
  44. }
  45. })
  46. </script>
  47. </body>
  48. </html>

6、v-bind

用于处理html标签的动态属性,即动态赋值。

(1) 常规用法

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-blind="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <img v-bind:src="imgSrc" width="400px">
  11. </div>
  12. <script type="text/javascript">
  13. new Vue({
  14. el: '#app',
  15. data: {
  16. imgSrc: "../img/20220114112403.png"
  17. }
  18. })
  19. </script>
  20. </body>
  21. </html>

 (2) 缩写

<img :src="imgSrc"  width="400px">

7、v-pre、v-cloak、v-once

(1)v-pre

        用法:跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div v-pre>{{ message }}</div>
  11. </div>
  12. <script type="text/javascript">
  13. new Vue({
  14. el: '#app',
  15. data: {
  16. message: 'A'
  17. }
  18. })
  19. </script>
  20. </body>
  21. </html>

(2)v-cloak

介绍:
这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <style type="text/css">
  10. [v-cloak] {
  11. display: none;
  12. }
  13. </style>
  14. <div id="app">
  15. <div v-cloak>{{message}}</div>
  16. </div>
  17. <script type="text/javascript">
  18. new Vue({
  19. el: '#app',
  20. data: {
  21. message: '欢迎使用'
  22. }
  23. })
  24. </script>
  25. </body>
  26. </html>

(3)v-once

用法:
只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script language="JavaScript" src="vue.min.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <span v-once>{{message}}</span>
  11. </div>
  12. <script>
  13. new Vue({
  14. el:'#app',
  15. data: {
  16. message: '0'
  17. }
  18. })
  19. </script>
  20. </body>
  21. </html>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/711088
推荐阅读
相关标签
  

闽ICP备14008679号