博客列表 >vue基本语法与常用指令

vue基本语法与常用指令

glen
glen原创
2022年08月26日 09:30:43367浏览

vue基本语法与常用指令

前端的三驾马车
  1. 1.react.js
  2. 2.agular.js
  3. 3.vue.js

前端的三板斧

  1. html
  2. css
  3. JavaScript

vue

vue.js :vue官网:
https://cn.vuejs.org/guide/introduction.html

引入vue
1.直接通过script 标签引入

  1. <script src="https://unpkg.com/vue@next"></script>

2.静态页面:

  1. <h1>Hello World</h1>

3.模板页面化:通过模板字面量将页面模板化,页面内容可以根据不同的内容进行更改,用两个大括号包围起来将(双大括号);

  1. <!---- {{message}} : 插值, 数据占位符 ---->
  2. <h1 class="title">{{message}}</h1>

4.用es6写:将es6 里面的textContent进行文本替换,将双大括号的内容更新成我们需要输出的内容

  1. document.querySelector('.title').textContent = 'Hello 猪老师早上好';

5.vue.js:通过Vue.createApp创建一个vue实例,然后调用data方法,对上方的定义的插值message进行传值
可以通过定义一个容器的来装之后,通过mount方法将内容挂载到对应的页面元素上输出

  1. const app = Vue.createApp({
  2. data() {
  3. return {
  4. message: 'Hello 大家好不好',
  5. };
  6. },
  7. });
  8. app.mount(document.querySelector('.title'));
常用术语

1.挂载点;挂载点: vue实例的作用域(当前vue可以影响的区域)
不能挂载到body里面,可以选择body里面的元素进行挂载:

  1. <body>
  2. <div class="app">
  3. <p>用户名:{{username}}</p>
  4. </div>
  5. </body>

然后通过vue实例并挂载
注:首先创建一个常量app 然后调用Vue中的createApp属性,里面有一个data方法,直接在data方法中返回上方username的值保存到常量中,调用mount方法将他挂载到上方的div上 渲染到页面中

  1. <script>
  2. const app = Vue.createApp({
  3. data(){
  4. return{
  5. username:'马老师'
  6. }
  7. },
  8. }).mount('.app');
  9. </script>

2.数据注入
数据注入就是在通过data将和对象数据绑定之后,可以通过vue实例直接调用数据内容获取上方的div中的数据

  1. console.log(app.$data.username);
  2. 也可以用简化语法直接调用:
  3. console.log(app.username);
  1. 响应式:可以通过vue实例,进行实时更新
  2. app.username = '张老师';
Vue指令:v-text,v-html
  1. vue的指令 v-“ 为前缀
  2. v-text 在标签中直接填入相应内容(只能填入文本)
  3. v-html 可以将标签一起解析并输出 (可以解析标签以及标签中添加的样式)
  1. <div class="app">
  2. <!-- v-text -> textContent -->
  3. <!-- <p>用户名: <span v-text="username"></span></p> -->
  4. <!-- v-html -> innerHTML -->
  5. <p>用户名: <span v-html="username"></span></p>
  6. </div>
  7. <script>
  8. const app = Vue.createApp({
  9. data() {
  10. return {
  11. username: '西安',
  12. };
  13. },
  14. }).mount('.app');
  15. app.username = '<i style="color:red">南京/i>';
  16. </script>

vue中的样式绑定
先创建一个行内样式style

  1. <style>
  2. .active {
  3. color: red;
  4. }
  5. .bgc {
  6. background-color: yellow;
  7. }
  8. </style>

行内样式style,用v-bing样式绑定的style:

  1. <script src="https://unpkg.com/vue@3"></script>
  2. <style>
  3. .active{
  4. color: red;
  5. }
  6. .bgc{
  7. background-color: aquamarine;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <div class="app">
  13. <p v-bind:style="{color: textcolor, backgroundColor:bgc}">PHP</p>
  14. <p v-bind:style="[base,custom]">PHP</p>
  15. </div>
  16. <script>
  17. const app = Vue.createApp({
  18. data( ) {
  19. return {
  20. textcolor: 'green',
  21. bgc:'wheat',
  22. base:{
  23. border:'1px solid',
  24. background:'lightgreen'
  25. },
  26. custom:{
  27. color:'while',
  28. padding:'15px'
  29. }
  30. }
  31. }
  32. }).mount('.app');
  33. </script>
  34. </body>
  35. </html>
  1. 类样式: class
  1. <title>样式绑定</title>
  2. <script src="https://unpkg.com/vue@3"></script>
  3. <style>
  4. .active{
  5. color: red;
  6. }
  7. .bgc{
  8. background-color: aquamarine;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div class="app">
  14. <p v-bind:class="active">Hello 猪老师</p>
  15. <!------- classList -------->
  16. <!------ 在添加类样式时,可以通过true和false 来控制是否有效(同时这个值也可以添加到一个变量中) ------>
  17. <p v-bind:class="{active: isActive}">Hello 钟老师</p>
  18. <p class="active bgc">Hello 月月老师</p>
  19. <!------ v-bind:是高频指令, 可简化为冒号 : ------>
  20. <p :class="['active', 'bgc']">Hello 王老师</p>
  21. <p :class="[mycolor, mybgc]">Hello 马老师</p>
  22. </div>
  23. <script>
  24. const app = Vue.createApp({
  25. data() {
  26. return {
  27. /* // style: 'color: blue', */
  28. textColor: 'yellow',
  29. bgc: 'wheat',
  30. base: {
  31. border: '1px solid',
  32. background: 'lightgreen',
  33. },
  34. custom: {
  35. color: 'white',
  36. padding: '15px',
  37. },
  38. active: 'active',
  39. isActive: true,
  40. mycolor: 'active',
  41. mybgc: 'bgc',
  42. };
  43. },
  44. }).mount('.app');
  45. </script>
  46. </body>
  47. </html>

效果图:


2.双向绑定:
介绍事件,在vue中用事件:

  1. 先创建一个事件:
  2. <div class="app">
  3. <p>
  4. <input type="text" @input="comment = $event.target.value" :value="comment" />
  5. <span>{{comment}}</span>
  6. </p>
  7. </div>
  1. $event:当前事件对象,在vue中要在前面加一个$符号
  2. v-on: vue的事件指令
  3. v-on: 高频指令, @表示
  1. <title>双向绑定</title>
  2. <script src="https://unpkg.com/vue@3"></script>
  3. <style>
  4. .active{
  5. color: red;
  6. }
  7. .bgc{
  8. background-color: aquamarine;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div class="app">
  14. <p>
  15. <input type="text" @input="comment = $event.target.value" :value="comment" />
  16. <span>{{comment}}</span>
  17. <!-- <input type="text" @input="comment = $event.target.value" :value="comment" />
  18. <span>{{comment}}</span> -->
  19. <!--简化语法 -->
  20. <!-- Vue为简化双向数据绑定,创建了一个语法堂:v-mond 指令
  21. $event 事件对象,在vue不能直接用event
  22. -->
  23. 简化语法:
  24. <input type="text" v-model="comment" :value="comment" />
  25. <span>{{comment}}</span>
  26. </p>
  27. </div>
  28. <script>
  29. const app = Vue.createApp({
  30. data() {
  31. return {
  32. comment: null,
  33. };
  34. },
  35. }).mount('.app');
  36. </script>
  37. </body>
  38. </html>
  1. 延迟绑定,修饰符
  1. <!-- 延迟绑定:修饰符 -->
  2. /*修饰符lazy*/
  3. <div class="app">
  4. <p>
  5. <input type="text" v-model.lazy="comment" :value="comment" />
  6. <span>{{comment}}</span>
  7. </p>
  8. </div>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议