• Vue中的基础指令


    在Vue中采用数据驱动页面的思想,我们不用在像JS的DOM操作那样要去操作页面。

    要想使用Vue的基础指令,我们先要创建Vue对象,代码:

    1. <div id="box">
    2. div>
    3. <script>
    4. var vm=new Vue({
    5. el:"#box",//为要操作的元素
    6. data:{
    7. //为我们有需求的数据
    8. }
    9. })
    10. script>

    要想在页面渲染出数据有两种方法:1、插值表达式   2、文本指令

    插值表达式

    写法为:{{JS表达式}},放在在标签尖括号中使用,只要是符合JS表达式的都可以在{{}}中。

    插值表达式中的标识符 代表vue对象中的data的属性名或者methods中的方法名,例如:{{msg}}就对应Vue对象中属性名为msg的值。

    练习一下:

    1. <div id="box">
    2. {{msg}}
    3. {{count+111}}
    4. {{count-111}}
    5. {{count*111}}
    6. {{count/111}}
    7. div>
    8. <script>
    9. var vm=new Vue({
    10. el:"#box",
    11. data:{
    12. msg:"111",
    13. count:111,
    14. }
    15. })
    16. script>

    页面结果:

     总结一下:只要是在data对象中的属性都能够在{{}}中获取到,还有一点我们要知道new Vue()生成的vm对象中有我们在data对象中添加的属性,但是data不等于vm对象。

    文本指令

    以v-开头,写在标签的属性中。

     v-html ==>相当于innerHTML

    v-text==>相当于innerText

    v-pre==>插件表达式就被识别为文本,而不是js表达式

    v-clock==>加上这个属性的标签相当于在构建虚拟节点的时候就会有这个属性,等data的数据生成的时候,这个标签会自动去掉这个属性,可以利用这个特性来在css中把这个元素在加载初期写样式(隐藏)

    1. <div id="box">
    2. <div v-html="message">div>
    3. <div v-text="message">div>
    4. <div v-pre>{{msg}}div>
    5. div>
    6. <script>
    7. var vm=new Vue({
    8. el:"#box",
    9. data:{
    10. msg:"111",
    11. count:111,
    12. message:"

      111

      "
    13. }
    14. })
    15. script>

    页面效果:

     v-cloak主要用于解决页面第一次加载数据闪烁的问题。

    造成闪烁的原因:我们使用插值表达式时,当页面加载的时候是按文档流的顺序加载从上往下,导致{{msg}}这个字符串会显示一下,然后加载到创建vue对象时生成data数据会回去刷新页面,给{{msg}}赋值,即造成了页面数据闪烁的情况。

    利用v-cloak解决:在style中通过属性选择器获取v-cloak标签,开始就其display设为none,当生成data数据以后,v-cloak会自动被删掉,标签即显示出来,这时插值表达式也能获取到数据。

    代码:

    1. <style>
    2. [v-cloak]{
    3. display: none;
    4. }
    5. style>
    6. <div id="box">
    7. <div v-cloak>
    8. {{msg+11}}
    9. div>
    10. div>
    11. <script>
    12. var vm=new Vue({
    13. el:"#box",
    14. data:{
    15. msg:"111",
    16. count:111,
    17. message:"

      111

      "
    18. }
    19. })
    20. script>

    或者我们也可以将插值表达式改为使用文本指令v-html和v-text也避免这个问题,v-html和v-text写在标签属性中,vue对象没有生成时他们没有意义,当生成了以后就会取对应的data数据。注意v-html="",""内的值也是表达式。

    给元素绑定属性

    当是双标签时,我们既可以通过v-html或者v-text给页面渲染数据,也可以在标签内通过插值表达式实现。

    但是html的标签中,还存在一种单标签,这个时候通过以上的办法就不能办到了,这个时候我们就需要通过属性绑定才能办到。

    例如:我们要给img标签的src添加一个资源地址,我们直接将data内的数据传给它,它是识别不到的。这时我们要在src前面加个v-bind:

    代码展示:

    1. <div id="box">
    2. <img v-bind:src="url">
    3. div>
    4. <script>
    5. var vm=new Vue({
    6. el:"#box",
    7. data:{
    8. msg:"111",
    9. count:111,
    10. message:"

      111

      "
      ,
    11. url:"https://ts1.cn.mm.bing.net/th?id=OIP-C.nRlAFygdctTCHmIWN7GxRwHaEK&w=333&h=187&c=8&rs=1&qlt=90&o=6&dpr=1.25&pid=3.1&rm=2"
    12. }
    13. })
    14. script>

    效果:

     v-bind: 用于属性绑定,不仅是对src有用,它对任何标签的属性都有用,只要在标签属性前面加上这个其的属性值不再是字符串了,而是表达式取得vue对象中对应名称的数据。

    v-bind:有一个语法糖,可以直接写引号(:)就行了。

    说到这里我们来综合练习一下今天的基础指令,模仿新浪的数据写一条假数据渲染到页面

    1. //新浪数据
    2. <script src="./sina.js">script>
    3. <script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.5.20/vue.js">script>
    4. <style>
    5. .toux{
    6. border-radius: 50%;
    7. }
    8. style>
    9. <div id="box">
    10. <div class="toux">
    11. <img :src="statuses[1].user.profile_image_url" alt="">
    12. div>
    13. <div class="timer" v-html="statuses[0].created_at">div>
    14. <div class="text" v-html="statuses[0].text">div>
    15. div>
    16. <script>
    17. console.log(sinadata);
    18. // sina=sinadata
    19. new Vue({
    20. el:"#box",
    21. data:sinadata
    22. })
    23. script>

    效果:

  • 相关阅读:
    C++初阶(stack+queue)
    前端工程化精讲第二课 界面调试:热更新技术如何开着飞机修引擎?
    RabbitMq高级特性-2
    lv6 嵌入式开发-Flappy bird项目(信号机制、定时器功能实现)
    计算机组成原理_Cache与主存的映射方式
    股票python量化交易011-JQData财务相对估值指标
    Linux zip命令:压缩文件或目录
    iOS 关于UIAlertController常见使用方法
    狂奔的低代码,画风各异的阿里云、腾讯云
    740. 删除并获得点数-动态规划算法
  • 原文地址:https://blog.csdn.net/m0_59345890/article/details/126590367