vue碎碎念

王一贴
• 阅读 1119

v-html、v-text、插值表达式 之间的区别

  • v-text 与 插值表达式 区别

1、v-text作为标签属性,{{}}作为标签内容
2、安全性都非常高,自带防止XSS攻击
3、对html标签/JS代码不渲染

  • v-html

1、对html标签进行渲染
2、不执行<script></script>中的代码
3、安全性不如上面2种高,标签中的js代码执行,如下

data: {
    content: ' <b onclick=\"alert(123)\">你好</b>'
}

// 使用时
<p v-html="content"></p>
少用 v-html,尽量使用 v-text 或 插值表达式

内置组件 <keep-alive>

  • 作用
在路由切换时,组件缓存在内存里,无需销毁,下次激活时无须重新创建。性能高,用户体验更好
原本路由切换时,组件会销毁
  • 适用场景
1、缓存的组件必须是对实时性没有要求
2、缓存的组件必须是一级路由的组件,对二级、三级路由组件无效

例如:一级路由的组件不需要缓存的,但二级路由的组件需要缓存,那么会导致一级路由组件也会缓存下来,所以不符合使用需求
  • 实现
实现一些页面组件(一级路由组件)需要缓存?一些不需要缓存?
// 路由定义
{
    path: "/",
    name: "BootLoader",
    component: BootLoader,
    meta: {
        keepAlive: false
    }
}

// 模板中使用
<keep-alive>
   <router-view v-if='$route.meta.keepAlive'></router-view>
</keep-alive>
<router-view v-if='!$route.meta.keepAlive'></router-view>

data、prop、计算属性、侦听器 之间区别

  • data
1、不是响应式的,data只会初始化一次,data中的属性可以用变量进行赋值,变量改变,但data不会响应式改变
2、data中的属性值不能是函数
3、data中的属性必须显式手动修改,这样界面才会响应式刷新
  • prop
1、只能由父组件进行修改,子组件不能直接修改prop
2、如果子组件需要修改,必须把prop赋值给data,然后修改data
3、prop是响应式的,父组件修改,子组件马上响应

Vue.use() 与 Vue.prototype.$xxx 区别

  • Vue.use() 作用 —— 安装Vue插件
1、Vue的插件是一个对象(或者是一个函数).
2、插件对象必须有install字段.
3、install字段是一个函数.
4、初始化插件对象需要通过Vue.use().
5、Vue.use()调用必须在new Vue之前.
6、同一个插件多次使用Vue.use()也只会被运行一次.
  • Vue.prototype.$xxx
1、全局定义属性或方法,每个Vue实例(Vue组件)都可以直接使用,例如:this.$xxx

注意:很容易造成全局污染
  • 区别
其实 没有区别
Vue.use(plugin)  =>   plugin.install()

例如插件有很多方法或属性要注册时,如果自己手动写Vue.prototype.$xxx会累死,
所以在插件内一次过写,再调用Vue.use()就方便多了

通过 install方法给 Vue实例 添加全局功能
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
3年前
sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差
<divclass"htmledit\_views"id"content\_views"<p&nbsp;函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时。</p<preclass"has"name"code"<codeclass"hljssql"<
Wesley13 Wesley13
3年前
java 反射得到属性与属性值
<divid"cnblogs\_post\_body"class"blogpostbody"<p反射可以破坏所有的封装性,比如这次通过反射得到的属性与属性值;</p<divclass"cnblogs\_code"<divclass"cnblogs\_code\_toolbar"<spanclass"cnblogs\_co
虾米大王 虾米大王
3年前
java代码092
code092.jsp通过FindServlet类查询分页数据所有图书信息ID图书名称价格数量作者<%Listlist1(List)request.getAttribute("list");for(code089book:list1)%
虾米大王 虾米大王
3年前
java代码099
code099.jspInserttitlehere$pageScope.user.name
虾米大王 虾米大王
3年前
java代码020
code020.jsp解决中文乱码name参数的值为:sex参数的值为:
虾米大王 虾米大王
3年前
java代码095
code095.jspEL表达式访问数组<%Stringarr2(String)request.getAttribute("book");for(inti0;i$index:$bookindex
虾米大王 虾米大王
3年前
java代码073
code073.javapackagepack02;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.UUID;importjavax.servlet.ServletException;importjavax.servlet.annotation.Multip
虾米大王 虾米大王
3年前
java代码043
code043.jspjavaBean设置属性的值
Wesley13 Wesley13
3年前
02、Vue.js
1、插值    在Vue.js指令学习之前,先简单学习一下Vue插值    语法:_{{}}_,将vue实例中的数据写入到页面对应的位置。下面代码中hello、msg、num等均是在vue的data中定义的变量。1.1文本插值<div{{hello}}<div1.2HTML标签插
王一贴
王一贴
Lv1
能够慢慢培养的不是感情而是习惯
文章
4
粉丝
0
获赞
0