vue基础知识总结

1. 父传子有哪些方式
首先在子组件中输入prop属性进行接收父组件传值的内容。
然后可以通过my-component-a 标签进行一种静态和两种动态绑定,详细绑定如下;
<!-- 静态属性设置 -->
    <my-component-a 
      title="这是静态的标题"
      content="这是静态的内容"
    ></my-component-a>

    <!-- 动态属性绑定 -->
    <my-component-a
      v-bind:title="'这是静态的标题,这是演示'"
      :content="'这是静态内容'"
    ></my-component-a>

    <!-- 动态属性绑定:常用操作 -->
    <my-component-a
      :title="item.title"
      :content="item.content"
    ></my-component-a>


2. 子传父有哪些方式
发送者  modifyName 发送标识 this.$emit("modifyName",this.itemObj);
 接收者,自定义一个组件  modifyName 接收标识 <common-table @modifyName="modifyName"></common-table>

3. 如何让 CSS 只在当前组件中起作用

当前组件<style>写成<style  scoped>

4. keep-alive 的作用是什么

动态组件,适用于多个组件频繁操作,keep-alive 可以保留组件的状态或者避免重新渲染。

5. vue中如何获取DOM
     方法一:
         直接给相应的元素加id,然后再document.getElementById("id");获取,然后设置相应属性或样式
     方法二:
         使用ref,给相应的元素加ref=“name” 然后再this.$refs.name获取到该元素
注意:在获取相应元素之前,必须在mount钩子进行挂载,否则获取到的值为空
     如果是给子组件加id并修改自定义属性,则直接会加载改子组件对应的外层div上,并不会改变该子组件原本的自定义属性的值。
         如果给子组件加ref,然后获取到该DOM元素之后改变相应的自定义属性的值,vue会报错;


6. 请说出 Vue CLI 项目中src目录每个文件夹的文件的用法
     assets文件夹是放静态资源;
     components是项目组件;
     router是定义路由相关的配置;
     view视图;
     app.vue是一个应用主组件;
     main.js是入口文件

7. 单页面应用的优缺点

         单页面:只有一个主页面的应用,浏览器一开始要加载所有必须的 html,css,js。
     所有的页面内容都包含在这个所谓的主页中。但是写的时候,还是会分开写(页面片段),然后在交互的时候由 路由程序动态载入,
     单页面的页面跳转,仅刷新局部资源。多应用于 PC 端。
    优点:用户体验好,快,内容的改变不需要加载整个页面,基于这一点 SPA 对服务器压力较小。
    前后端分离。
   页面效果会比较好(比如切换页面内容时的专场动画)
   缺点 :不利于SEO;初次首屏加载速度慢;页面复杂度比较高。

8. $router和$route的区别
        1.$router是VueRouter的实例方法,可以认为是全局的路由对象,包含了所有路由的对象和属性。
          2.$route是一个跳转的路由对象,可以认为是当前组件的路由管理,指当前激活的路由对象,包含当前url解析得到的数据,可以从对象里获取一些数据。如name,path等。

9.  怎么定义 vue-router 的动态路由? 怎么获取传过来的值?
  
   query通过url传参,刷新页面还在    params刷新页面不在了
    params的类型:

   配置路由格式:/router/:id
  传递的方式:在path后面跟上对应的值
    传递后形成的路径:/router/123
   <!-- 动态路由-params -->
 
   //在APP.vue中
    <router-link :to="'/user/'+userId" replace>用户</router-link>    
 
   //在index.js
     {
    path: '/user/:userid',
    component: User,
    },
   跳转方法:

   // 方法1:
   < router-link :to="{ name: 'users', params: { uname: wade }}">按钮</router-link>
   // 方法2:
   this.$router.push({name:'users',params:{uname:wade}})
   // 方法3:
   this.$router.push('/user/' + wade)
  可以通过$route.params.userid 获取你说传递的值

   query的类类型

   配置路由格式:/router,也就是普通配置
  传递的方式:对象中使用query的key作为传递方式
  传递后形成的路径:/route?id=123
  <!--动态路由-query -->
   //01-直接在router-link 标签上以对象的形式
  <router-link :to="{path:'/profile',query:{name:'why',age:28,height:188}}">档案</router-link>
  /*
    02-或者写成按钮以点击事件形式
    <button @click='profileClick'>我的</button>    
   */
 
   //点击事件
   profileClick(){
   this.$router.push({
        path: "/profile",
        query: {
          name: "kobi",
          age: "28",
          height: 198
        }
      });
  }
  跳转方法:

  // 方法1:
   <router-link :to="{ name: 'users', query: { uname: james }}">按钮</router-link>
  // 方法2:
  this.$router.push({ name: 'users', query:{ uname:james }})
  // 方法3:
  <router-link :to="{ path: '/user', query: { uname:james }}">按钮</router-link>
  // 方法4:
  this.$router.push({ path: '/user', query:{ uname:james }})
  // 方法5:
  this.$router.push('/user?uname=' + jsmes)
  可以通过$route.query 获取你说传递的值


10. vue-router有几种模式,分别是什么

   vue-router有3种路由模式:hash,history,adstract.
         history:依赖HTML5 History API和服务器配置,具体查看HTML5 History模式。
         history实现原理:
        HTML5提供了History API来实现URL的变化
   hash:使用URL hash值来做路由。支持所有浏览器,包括不支持HTML5 History Api 的浏览器。

  hash实现原理:
  早期的前端路由的实现就是基于location.hash来实现的,location.hash的值就是URL中的#后面的内容,
   特性:
  URL中的hash值只是客户端的一种状态,
  hash值的改变,都会在浏览器的访问历史中增加一个记录,
  可以通过a标签,并设置href属性,
  我们可以使用hashchange事件来监听hash值的变化,从而对页面进行跳转(渲染)

 
  abstract:支持所有JavaScript运行环境,如Node.js服务器端,如果发现没有浏览器的API,路由会自动强制进入这个模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值