Blogger Information
Blog 29
fans 1
comment 0
visits 14779
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
vue基本语法与常用指令
风车
Original
549 people have browsed it

前端三驾马车

1.react.js
2.agular.js
3.vue.js
vue.js :vue官网

vue

引入vue

1.直接通过script 标签引入

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

静态页面:页面数据固定

  1. <h1>Hello World</h1>

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

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

创建完成之后,填入插值,将数据更新之后输出
es6 里面的textContent进行文本替换,将双大括号的内容更新成我们需要输出的内容

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

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'));

vue常用术语

挂载点

挂载点: vue实例的作用域(当前vue可以影响的区域)
不能挂载到body里面,可以选择body里面的元素进行挂载
比如下面的div 里面通过双大括号创建了一个模板字面量

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

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

  1. const app = Vue.createApp({
  2. data() {
  3. return {
  4. username: '王老师',
  5. };
  6. },
  7. }).mount('.app');

数据注入

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

  1. console.log(app.$data.username);

可以用简化语法 ,直接调用,因为我们已经通过vue将会数据绑定到了app对象上

  1. console.log(app.username);

响应式:可以通过vue实例,进行实时更新

  1. app.username = '张老师';

Vue指令:就是html标签的自定义属性,通过vue来进行管理

vue的指令 以 “ v-“ 为前缀
v-text 在标签中直接填入相应内容(只能填入文本)
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中的样式绑定

先创建一个行内样式

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

vue动态属性设置指令 v-bind:属性名

  1. <div class="app">
  2. //这里调用下方挂载到div上面的属性,直接通过v-bind添加到样式中
  3. <p v-bind:style="{color:textColor,backgroundColor: bgc}">php.cn</p>
  4. //这里演示的是将对应的属性在下方添加成对象,然后调用
  5. <p v-bind:style="[base, custom]">php.cn</p>
  6. <!-- 2. 类样式: class -->
  7. <p v-bind:class="active">Hello 猫老师</p>
  8. <!-- classList -->
  9. //在添加类样式时,可以通过true和false 来控制是否有效(同时这个值也可以添加到一个变量中)
  10. <p v-bind:class="{active: isActive}">Hello 猫老师</p>
  11. <p class="active bgc">Hello 王老师</p>
  12. <!-- v-bind:是高频指令, 可简化为冒号 -->
  13. <p :class="['active', 'bgc']">Hello 王老师</p>
  14. <p :class="[mycolor, mybgc]">Hello 王老师</p>
  15. </div>
  16. <script>
  17. const app = Vue.createApp({
  18. data() {
  19. return {
  20. // style: 'color: blue',
  21. textColor: 'green',
  22. bgc: 'wheat',
  23. base: {
  24. border: '1px solid',
  25. background: 'lightgreen',
  26. },
  27. custom: {
  28. color: 'white',
  29. padding: '15px',
  30. },
  31. active: 'active',
  32. isActive: true,
  33. mycolor: 'active',
  34. mybgc: 'bgc',
  35. };
  36. },
  37. }).mount('.app');

双向绑定

用es6的方式实现双向绑定
注释:oninput(这个方法就是返回当前按的键)
代码意思是 拿到当前元素的下一个兄弟节并添加文本,添加的文本就是当前输入的值

  1. <p>
  2. <div>ES6:</div>
  3. <input type="text" oninput="this.nextElementSibling.textContent=this.value"><span></span>
  4. </p>

用vue的方式实现双向绑定
v-on: vue的事件指令
v-on: 高频指令, @表示
$event:当前事件对象,在vue中要在前面加一个$符号

  1. <input type="text" @input="comment = $event.target.value" :value="comment" />
  2. <span>{{comment}}</span>
  3. //简化语法
  4. <input type="text" v-model="comment" :value="comment" />
  5. <span>{{comment}}</span>
  6. <script>
  7. const app = Vue.createApp({
  8. data() {
  9. return {
  10. comment: null,
  11. };
  12. },
  13. }).mount('.app');
  14. </script>

修饰符
延迟绑定,不会实时检测,减少页面负担

  1. <p>
  2. <!-- 延迟绑定:修饰符 -->
  3. <input type="text" v-model.lazy="comment" :value="comment" />
  4. <span>{{comment}}</span>
  5. </p>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post