vue面试题

109 阅读2分钟

vue有哪些路由模式,如何区别?

  • 主要有Hash哈希模式(baseUrll#/path)和H5历史记录模式(baseUrl/path); 
  • 哈希模式:# 后⾯ hash 值的变化,不会导致浏览器向服务器发出请求,浏览器不发出请求,就不会刷新⻚⾯。同时通过监听 hashchange 事件可以知道 hash 发⽣了哪些变化,然后根据 hash 变化来实现更新⻚⾯部分内容的操作。
    • 优点:浏览器直接识别为前端页面内跳转,没有额外的前后端通信过程,不对服务端产生额外 压力; 
    • 缺点:丑陋;不利于搜索引擎优化(SEO=SearchEnginOptimization);(搜索引擎爬虫认 为各path与首页就是同一个页面,在爬完首页信息后就扬长而去) 
  • H5/历史记录模式:history 模式的实现,主要是 HTML5 标准发布的两个 API, pushState 和 replaceState ,这两个 API 可以改变 url,但是不会发送请求。这样就可以监听 url 变化来实现更新⻚⾯部分内容的操作。
    • 优点:漂亮;利于SEO优化; 
    • 缺点:形成额外的前后端通信过程,一定程度上降低了性能,给服务端造成一定的额 外负担;
  •  区别
    • url 展示上,hash 模式有 "#",history 模式没有
    • 刷新⻚⾯时,hash 模式可以正常加载到 hash 值对应的⻚⾯,⽽ history 没有处理的话,会返回404,⼀般需要后端将所有⻚⾯都配置重定向到⾸⻚路由
  • 历史记录模式相对来说更主流一些; 
  • 历史记录模式下服务端需要一点额外配置,以把前端路由打回给前端自己处理,以Nginx为例:
location /{
    #看看服务端有没有对应的API
    #如果没有则定性为前端路由(一脚践回给/index.html即前端页面本身去处理) 
    #$uri(即/path)会回到前端的路由表进行前端路由匹配 
    try_files $uri $uri/ /index.html;  
}

ps: history.pushState()和history.replaceState()。这两个API可以在不进行刷新的情况下,操作浏览器的历史记录。唯一不同的是,前者是新增一个历史记录,后者是直接替换当前的历史记录。

v-if和v-show区别

  • 当渲染条件不成立时,vif不渲染(DOM压根不存在),vshow不显示(display:none,无论田间如何,都会渲染) 
  • 适合用vshow的场景:频繁显隐;
  • 适合vif的场景:一锤子买卖

v-model双向数据理解

  • 对不同表单绑定不同属性并侦听不同事件
    • 对于input类型为text的元素和元素绑定value属性并侦听input事件
    • 对于input类型为checkbox的元素和input类型为radio的元素绑定checked属性和侦听change事件
    • 对于元素绑定value属性和change事件