• vue 内置指令-v-pre/v-memo


    一、v-pre 使用了该指令的元素和子元素会被编译忽略,也就是不进行编译,其中包含的所有vue模版语法都会原样显示,作用加快vue的编译

    例子:

    1. <p v-pre>
    2. {{不会被编译}}
    3. <span v-text="msg">span>
    4. p>

    运行效果:

    二、v-memo vue3.2+新增命令

           提高渲染能力,接收的一个数组,上次数组值和本次获取的数组值不变情况下,直接复用缓存中的进行渲染,如果数组不相同,则会重新渲染

    例子:

    1. <h3>v-memo 提高性能,接收的一个数组h3>
    2. <li v-for="(item,index) in eps" :keys="item.id" v-memo="[item.status]">
    3. <span>{{item.id}}span>  
    4. <span>{{item.name}}span>  
    5. <span>状态{{item.status}}span>  
    6. <button @click="updateStatus(item)">更新状态button>
    7. li>

    运行效果:点击更新状态,渲染状态为false 的耗时为平均为18.51416015625 ms

    未加v-memo="[item.status]" 耗时如下:55.84326171875 ms

    总结:加了v-memo ,在大数据时,可以有效减少前段渲染耗时

    完整例子:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>vue 内置指令title>
    7. head>
    8. <body>
    9. <div id="app">
    10. {{msg}}
    11. <h3>v-preh3>
    12. <p v-pre>
    13. {{不会被编译}}
    14. <span v-text="msg">span>
    15. p>
    16. <h3>v-memo 提高性能,接收的一个数组h3>
    17. <li v-for="(item,index) in eps" :keys="item.id" >
    18. <span>{{item.id}}span>  
    19. <span>{{item.name}}span>  
    20. <span>状态{{item.status}}span>  
    21. <button @click="updateStatus(item)">更新状态button>
    22. li>
    23. div>
    24. body>
    25. <script src="./node_modules/vue/dist/vue.global.js">script>
    26. <script type="text/javascript">
    27. const {createApp} = Vue;
    28. const app = createApp({
    29. data(){
    30. return{
    31. msg:"样例",
    32. pa1:'111',
    33. pa2:'222',
    34. eps:Array.from({length:20000},(_,index)=>{
    35. return {id:index,name: "行数"+index,status:true}
    36. })
    37. }
    38. }
    39. ,
    40. methods:{
    41. updateStatus(item){
    42. //1、请求更新状态接口
    43. const {id,status} = item;
    44. console.log("item",item)
    45. // alert('请求更新状态接口:'+!status);
    46. //2、查询最新列表数据
    47. this.eps=Array.from({length:20000},(_,index)=>{
    48. const updateStatus=index==id?!status:true;
    49. return{
    50. id:index,
    51. name:"行数"+index,
    52. status:updateStatus
    53. }
    54. })
    55. //记录开始时间
    56. console.time();
    57. // this.$nextTick 用于渲染完成后执行函数体
    58. this.$nextTick(()=>{
    59. console.timeEnd();
    60. })
    61. }
    62. }
    63. }).mount("#app");
    64. console.log("app",app);
    65. script>
    66. html>

  • 相关阅读:
    neo4j使用python导入数据问题
    elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除
    [附源码]java毕业设计基于SSM高考志愿填报系统
    Vue框架总结(二、Vue计算属性与监听属性)
    flutter学习之旅(二)
    打码平台之图鉴的使用步骤
    双S曲线轨迹(详细推导)
    java: 错误: 不支持发行版本 5 java: 错误: 不支持发行版本8 java: 错误: 不支持发行版本17
    39. 组合总和
    Python 面向对象1-类、对象、属性
  • 原文地址:https://blog.csdn.net/QWERTY55555/article/details/134099354