当前位置:   article > 正文

Vue学习笔记之应用创建和基础知识

Vue学习笔记之应用创建和基础知识

1、安装方式

CDN方式安装:

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

2、创建应用

使用Vue内置对象创建一个应用,基本代码结构如下:

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app"></div>
  3. <script>
  4. const { createApp } = Vue;
  5. createApp({
  6. data(){
  7. return {
  8. }
  9. },
  10. methods: {
  11. },
  12. mounted() {
  13. },
  14. computed: {
  15. }
  16. }).mount('#app');
  17. </script>

id为app的div元素,代表vue应用绑定的dom元素,vue对内部数据的操作都会直接影响dom的数据更新;

data:响应式数据均定义在data内部

methods:自定义函数定义在区域

mounted:DOM元素挂在应用后,可再此执行初始化操作,使用this对象操作data数据

computed:计算属性定义在此区域,一般只涉及读操作,基于响应式数据组合为一个新属性,提供给DOM元素渲染,也支持修改计算属性,但不建议这么做。

3、插值语法

使用两个{{}}大括号表示,如在data部分定义返回属性count,

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. {{count}}
  4. </div>
  5. <script>
  6. const { createApp } = Vue;
  7. createApp(
  8. {
  9. data() {
  10. return {
  11. count: 1
  12. }
  13. },
  14. }).mount('#app');
  15. </script>

3、v-if,v-else判断指令

cansee为真时展示v-if的p元素,否则展示v-else的p元素

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. <p v-if="cansee">can see me!</p>
  4. <p v-else>you can't see me!</p>
  5. </div>
  6. <script>
  7. const { createApp } = Vue;
  8. createApp(
  9. {
  10. data() {
  11. return {
  12. cansee: true,
  13. }
  14. }
  15. }).mount('#app');
  16. </script>

4、v-on事件指令

v-on:click代表绑定onclick事件,在methods区域定义了事件处理函数,将响应式数据count执行加1操作,如下所示:

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. {{count}}
  4. <button v-on:click="increment">点击我</button>
  5. </div>
  6. <script>
  7. const { createApp } = Vue;
  8. createApp(
  9. {
  10. data() {
  11. return {
  12. count: null,
  13. }
  14. },
  15. mounted() {
  16. this.count = 1;
  17. },
  18. methods: {
  19. increment() {
  20. this.count++;
  21. }
  22. }
  23. }).mount('#app');
  24. </script>

5、嵌套对象的使用

可以使用嵌套对象语法给DOM元素绑定数据,如下所示:

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. <p>{{obj.nested.count}}</p>
  4. <button v-on:click="increment">点击我</button>
  5. </div>
  6. <script>
  7. const { createApp } = Vue;
  8. createApp(
  9. {
  10. data() {
  11. return {
  12. obj: {
  13. nested: { count: 0 }
  14. }
  15. }
  16. },
  17. mounted() {
  18. },
  19. methods: {
  20. increment() {
  21. this.obj.nested.count++;
  22. }
  23. }
  24. }).mount('#app');
  25. </script>

6、计算属性的使用

计算属性基于响应式数据组合新的数据,计算属性的 getter 应只做计算而没有任何其他的副作用,不要改变其他状态、在 getter 中做异步请求或者更改 DOM。另外,避免直接修改计算属性的值。

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. <p>Has published books:</p>
  4. <span>{{isPublishedBooks}}</span><br/>
  5. <button v-on:click="removeAll">删除所有</button>
  6. <p>总指导是:{{fullName}}</p>
  7. <button v-on:click="modifyZonzhidao">改名</button>
  8. </div>
  9. <script>
  10. const { createApp } = Vue;
  11. createApp({
  12. data(){
  13. return {
  14. author: {
  15. name: 'John Doe',
  16. books: [
  17. 'Java guide 3',
  18. 'C# 高级编程',
  19. '数据库基础'
  20. ],
  21. firstName: 'Pan',
  22. lastName: 'three big stones'
  23. }
  24. }
  25. },
  26. methods: {
  27. removeAll() {
  28. this.author.books = [];
  29. },
  30. modifyZonzhidao() {
  31. this.fullName = '黄 飞鸿';
  32. }
  33. },
  34. computed: {
  35. isPublishedBooks() {
  36. return this.author.books.length > 0 ? 'Yes' : 'No';
  37. },
  38. fullName: {
  39. get() {
  40. return this.author.firstName + ' ' + this.author.lastName;
  41. },
  42. set(newValue) {
  43. //注意:这里使用解构赋值语法
  44. [this.author.firstName, this.author.lastName] = newValue.split(' ');
  45. }
  46. }
  47. }
  48. }).mount('#app');
  49. </script>

6、类的绑定

使用vue将class绑定到DOM元素有以下5种方式:

1)单属性语法赋值class方式,:class="{active:isActive,'text-danger':hasError}",isActive为真将绑定active类,hasError为真将绑定text-danger类,同时为真将绑定两者

2)使用对象直接赋值class方式,:class="classObj",直接绑定classObj中所有为真的类

3)使用计算表达式方式赋值,:class="classObj2",classObj2是一个计算表达式,如下代码所示,也是绑定计算表达式返回对象中所有为真的class

4)使用数组方式赋值class,:class="[activeClass,errorClass]",直接绑定activeClass和errorClass所对应的class

5)基于条件判断+数组的混合方式赋值class,:class="[{active:isActive},errorClass]",如isActive为真,将绑定active和errorClass属性对应的class,否则只会绑定errorClass属性对应的class

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <style>
  3. .active{
  4. background-color:lightcoral;
  5. border:1px dotted black;
  6. width:200px;
  7. height:200px;
  8. opacity:0.5;
  9. }
  10. .text-danger{
  11. opacity:1;
  12. background-color:red;
  13. }
  14. </style>
  15. <div id="app">
  16. <div class="static" :class="{active:isActive,'text-danger':hasError}">单属性赋值class方式</div>
  17. <div :class="classObj">多属性对象赋值class方式</div>
  18. <div :class="classObj2">计算表达式赋值class方式</div>
  19. <div :class="[activeClass,errorClass]">class赋值数组对象方式</div>
  20. <div :class="[{active:isActive},errorClass]">class赋值数组对象带条件判断方式</div>
  21. </div>
  22. <script>
  23. const { createApp } = Vue;
  24. createApp({
  25. data(){
  26. return {
  27. isActive: true,
  28. hasError: false,
  29. classObj: {
  30. active: true,
  31. 'text-danger': true
  32. },
  33. activeClass: 'active',
  34. errorClass: 'text-danger',
  35. }
  36. },
  37. methods: {
  38. },
  39. computed: {
  40. classObj2() {
  41. return {
  42. active: this.isActive && !this.hasError,
  43. 'text-danger': !this.hasError
  44. }
  45. }
  46. }
  47. }).mount('#app');
  48. </script>

6、内联样式的绑定

使用vue将内联元素绑定到DOM元素有以下3种方式:

1)单属性语法赋值style方式,:style="{color:activeColor,fontSize:fontSize+'px'}",绑定颜色和字体大小两个内联元素

2)使用对象直接赋值style方式,:class="styleObj",直接绑定styleObj中所有的内联元素

3)使用数组方式赋值style方式,:class="[styleObj,styleObj2]",将合并数组中所有对象下的内联元素

  1. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  2. <div id="app">
  3. <div :style="{color:activeColor,fontSize:fontSize+'px'}">内联样式直接赋值方式</div>
  4. <div :style="styleObj">内联样式使用对象赋值方式</div>
  5. <div :style="[styleObj,styleObj2]">内联样式使用数组对象赋值方式</div>
  6. </div>
  7. <script>
  8. const { createApp } = Vue;
  9. createApp({
  10. data(){
  11. return {
  12. activeColor: 'red',
  13. fontSize: 30,
  14. styleObj: {
  15. color: 'green',
  16. fontSize: '28px'
  17. },
  18. styleObj2: {
  19. fontWeight: 'bold',
  20. fontFamily: 'cursive'
  21. }
  22. }
  23. },
  24. methods: {
  25. },
  26. computed: {
  27. }
  28. }).mount('#app');
  29. </script>
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44300
推荐阅读
相关标签
  

闽ICP备14008679号