Vue


1.创建项目

<body>内引入vue的文件,之后用Vue.createApp()创建应用,再用mount()挂载应用到某一个元素上。比如”#app”,就是挂载到id为app的元素上。

2.语法

在创建应用时可以传递参数

data

const vueapp = &#123;
        data() &#123;
            return &#123;
                msg: "Hello Vue",//设置值
            &#125;;
        &#125;,
      const app = Vue.createApp(vueapp).mount("#app");//创建应用并绑定到指定元素上

比如上面的msg:"Hello Vue"
<div id="app"><h1>{{ msg }}</h1></div>中,vue会将“Hello Vue”绑定到{{ msg }}上。
除了在创建应用时传递参数设置数据,也可以用代码设置。

console.log(app.msg) // 输出已有的值: => Hello Vue
app.msg = "Hello Vue.js!" // 改变已有的值 
console.log(app.msg) // 输出改变后的已有的值=> Hello Vue.js!
app.anothermsg = "javascript" // 设置新的值
console.log(app.anothermsg) // 输出新的值

此处仅使用了字符串作为例子,其他类型也可以使用

methods

这个就是方法了。

methods: {
            logmsg() {
                console.log(this.msg)
            },
        },

这里规定了一个叫addnumber()的方法,如果调用它,会在控制台打印msgthis就是指app,即是应用。

指令

开头为v-特殊元素属性,它会执行一些操作。

v-bind

将一个值绑定到元素上。例如:

<img v-bind:src="example.com/xxx.jpg">

渲染后的元素,就会是

<img src="example.com/xxx.jpg">

也可以将v-bind去掉,改成<img :src="example.com/xxx.jpg">,结果不会改变。也可以用对象进行绑定
<img v-bind="{ src:"example", 'class': 'isClass'}">。在这里,绑定class时,class的绑定与否取决于‘isClass’的真假值。

v-if

基于表达式值的真假性,来条件性地渲染元素或者模板片段。

<h1 v-if="isShow">some text</h1>// 如果isShow为真

v-else-if

和v-if作用相同,但v-if只能有一个,v-else-if可以有多个。v-else-if前必须跟着v-if

<h1 v-if="isShow">some text</h1>// 如果isShow为真
<h1 v-else-if="isShow2">some text</h1>// 如果isShow2为真且v-if没有执行
<h1 v-else-if="isShow3">some text</h1>// 如果isShow3为真且上面的v-if和v-else-if没有执行

v-else

前面必须有v-if。如果v-if``v-else-if都判断失败了,就会执行v-else

<h1 v-if="isShow">some text</h1>// 如果isShow为真
<h1 v-else-if="isShow2">some text</h1>// 如果isShow2为真且v-if没有执行
<h1 v-else-if="isShow3">some text</h1>// 如果isShow3为真且上面的v-if和v-else-if没有执行
<h1 v-else>something</h1>// 如果上面的判断都没有执行

v-for

基于数据多次渲染元素。

//items: [
//{ id: 1, text: "item1" },
//{ id: 2, text: "item2" },
//{ id: 3, text: "item3" }
//],
<div v-for="item in items">// in也可以用of替换
    {{ item.text }}
</div>

在基于对象作为数据时,还可以使用(value, key) in anobject(value, key, index) in anobject。value就是对象内的值,如

{"iamatext": "hi"}

中,value就是“hi”,key就是“iamatext”,index就是0。
一个元素上不建议同时使用v-ifv-for,两者之间的层级不明显。在Vue中,一个元素上如果同时出现了它们两个,v-if有比v-for更高的优先级。可以把v-ifv-for放在两个元素上来解决问题。


文章作者: apeaaar
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 apeaaar !
  目录