Vue在创建组件实例时会调用data()函数,该函数将返回数据对象,最后通过mount()方法在指定的DOM元素上装载应用程序实例的根组件,从而实现数据的双向绑定。下面通过一个简单的图文页面来理解Vue.js程序。
【例2.1】编写简单的图文页面(源代码\ch02\2.1.html)。
这里使用了v-bind指令绑定IMG的src属性,使用{{}}语法(插值语法)显示标题<h2>的内容。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <div id="app"> <div><img v-bind:src="url"></div> <h2>{{ explain }}</h2> </div> <!--引入vue文件--> <script src="https://unpkg.com/vue@next"></script> <script> //创建一个应用程序实例 const vm= Vue.createApp({ //该函数返回数据对象 data(){ return{ url:'1.jpg', explain:'敕勒川,阴山下。天似穹庐,笼盖四野。', } } //在指定的DOM元素上装载应用程序实例的根组件 }).mount('#app'); </script> </body> </html>
程序运行效果如图2-13所示。以上代码就成功创建了第一个Vue.js程序,看起来这跟渲染一个字符串模板非常类似,但是Vue在背后做了大量工作。可以通过浏览器的JavaScript控制台来验证,也可以使用vue-devtools调试工具来验证。
图2-13 简单的图文页面效果
例如,在谷歌浏览器上按F12键,打开控制台,并切换到“Console”选项,修改vm.explain="天苍苍,野茫茫,风吹草低见牛羊。",按回车键后,可以发现页面的内容也发生了改变,效果如图2-14所示。
图2-14 控制台上修改后效果
使用vue-devtools工具调试,打开谷歌浏览器的控制台,选择“Vue”选项,单击左侧的<Root>,修改图片的url为"2.jpg",单击“保存”按钮,可以发现页面的内容同样也发生了改变,效果如图2-15所示。
图2-15 vue-devtools调试效果
出现上面这样的效果,是因为Vue是响应式的。也就是说当数据变更时,Vue会自动更新所有网页中用到它的地方。除了程序中使用的字符串类型,Vue对其他类型的数据也是响应式的。
特别说明: 在之后的章节中,示例不再提供完整的代码,而是根据上下文,将HTML部分与JavaScript部分单独展示,省略了<head>、<body>等标签以及Vue.js的加载等,读者可根据上例结构来组织代码,或者直接查看本书配套的示例代码。