VUE常见的一些面试题

**

VUE常见的一些面试题

**

1 、axios是什么?怎么使用?

答:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
在vue中,先下载vue,npm i axios,然后引入,import axios from axios,
然后在组件中就可以使用了,

axios({
    url:'',
    method:'get|post',
    data:{},
    params:{}
}) .then(d=>{
console.log(d)
})

也可以将其挂载到原型链上,然后使用$http

Vue.prototyoe.$http=axios
this.$http({
    url:'',
    method:'get|post',
    data:{},
    params:{}
}) .then(d=>{
console.log(d)
})

也可以答做:
请求后台资源的模块。npm install axios -S装好,
然后发送的是跨域,需在配置文件中config/index.js进行设置。
后台如果是Tp5则定义一个资源路由。js中使用import进来,
然后.get或.post。返回在.then函数中如果成功,
失败则是在.catch函数中

2、vue中如何解决跨域问题?

方法1.后台更改header
header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问
header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

方法2.使用JQuery提供的jsonp
methods: {
getData () {
var self = this
$.ajax({
url: ‘http://f.apiplus.cn/bj11x5.json’,
type: ‘GET’,
dataType: ‘JSONP’,
success: function (res) {
self.data = res.data.slice(0, 3)
self.opencode = res.data[0].opencode.split(’,’)
}
})
}
}

方法3.使用http-proxy-middleware 代理解决(项目使用vue-cli脚手架搭建)
例如请求的url:“http://f.apiplus.cn/bj11x5.json”
1、打开config/index.js,在proxyTable中添写如下代码:
proxyTable: {
‘/api’: { //使用"/api"来代替"http://f.apiplus.c"
target: ‘http://f.apiplus.cn’, //源地址
changeOrigin: true, //改变源
pathRewrite: {
‘^/api’: ‘http://f.apiplus.cn’ //路径重写
}
}
}

2、使用axios请求数据时直接使用“/api”:
getData () {
axios.get(’/api/bj11x5.json’, function (res) {
console.log(res)
})

3、 vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗?

答:第一步:在components目录新建你的组件文件(smithButton.vue),script一定要export
default {}
第二步:在需要用的页面(组件)中导入:import smithButton from
‘…/components/smithButton.vue’
第三步:注入到vue的子组件的components属性上面,components:{smithButton}
第四步:在template视图view中使用,
问题有:smithButton命名,使用的时候则smith-button。

4 、请说出vue.cli项目中src目录每个文件夹和文件的用法?

答:components是放组件;router是定义路由相关的配置;view视图;app.vue是一个应用
主组件;main.js是入口文件;

5、 导航钩子有哪些?它们有哪些参数?

答: 1、全局钩子函数 : Router.beforeEach() 每次每一个路由改变的时候都得执行一遍
2、组件内的钩子函数 :
beforeRouteEnter 路由之前调用
beforeRouteUpdate 复用时调用
beforeRouteLeave 离开路由时调用
3、单独路由独享组件
to: (Route路由对象) 即将要进入的目标 路由对象
from: (Route路由对象) 当前导航正要离开的路由
next: (Function函数) 一定要调用该方法来 resolve 这个钩子
6、vue-router是什么?它有哪些组件?
答:vue用来写路由一个插件。router-link、router-view

7、vue-router有哪几种导航钩子?

答:三种,一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断
拦截。第二种:组件内的钩子;第三种:单独路由独享组件

8 、怎么定义vue-router的动态路由?怎么获取传过来的动态参数?

答:在router目录下的index.js文件中,对path属性加上/:id。使用router对象的params.id

9、Vue的路由实现:hash模式 和 history模式?

答:hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用 window.location.hash
读取。特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服
务端安全无用,hash不会重加载页面。

history模式:history采用HTML5的新特性;且提供了两个新方法: pushState(),
replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。

10、 r o u t e 和 route和 routerouter的区别?

答:$route是获取传递的参数时使用,
$router是在跳转页面时使用。

11、vue等单页面应用及其优缺点?

答:	优点:MVVM、数据驱动、组件化、轻量、简洁、高效、快速、模块友好。
		缺点:不支持低版本浏览器,最低只支持IE9;不利于SEO的优化(如果要支持
		SEO,建议通过服务器来进行渲染组件);第一次加载首页耗时相对长一些;
		不可以使用浏览器的导航按钮需要自行实现前进、后退。

12、Vue组件间的参数传递? props 自定义事件 event vuex localStorage

答: 1、父组件与子组件传值
父组件传给子组件:父组件自定义属性,子组件通过props方法接收数据
子组件传给父组件:事件对象 e v e n t , event, event,emit方法传递参数
2、非父子组件间的数据传递,兄弟组件传值
在发送数据的一方设置 e m i t 触 发 自 定 义 事 件 和 要 发 送 的 数 据 , 在 接 收 的 一 方 挂 载 成 功 之 后 emit触发自定义事件和要发送的数据,在接收的一方挂载成功 之后 emiton接收事件并接受数据。

13、聊聊你对Vue.js的template编译的理解?

答:简而言之,就是先转化成AST树,再得到的render函数返回VNode(Vue的虚拟DOM节点)
详情步骤:
首先,通过compile编译器把template编译成AST语法树(abstract syntax tree 即 源代码的抽
象语法结构的树状表现形式),compile是createCompiler的返回值,createCompiler是用以创
建编译器的。另外compile还负责合并option。
然后,AST会经过generate(将AST语法树转化成render funtion字符串的过程)得到render函
数,render的返回值是VNode,VNode是Vue的虚拟DOM节点,里面有(标签名、子节点、文
本等等)

14、vue-loader是什么?使用它的用途有哪些?

答:解析.vue文件的一个加载器,跟template/js/style转换成js模块。
用途:js可以写es6、style样式可以scss或less、template可以加jade等

15、请说下封装 vue 组件的过程?

答:首先,使用Vue.extend()创建一个组件
然后,使用Vue.component()方法注册组件
接着,如果子组件需要数据,可以在props中接受定义
最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法

首先,组件可以提升整个项目的开发效率。能够把页面抽象成多个相对独立的模块,解决了
我们传统项目开发:效率低、难维护、复用性等问题。
然后,使用Vue.extend方法创建一个组件,然后使用Vue.component方法注册组件。子组件
需要数据,可以在props中接受定义。而子组件修改好数据后,想把数据传递给父组件。可
以采用emit方法。

16、mvvm框架是什么?它和其它框架(jquery)的区别是什么?哪些场景适合?

答:一个model+view+viewModel框架,数据模型model,viewModel连接两个
区别:vue数据驱动,通过数据来显示视图层而不是节点操作。
场景:数据操作比较多的场景,更加便捷

17、什么是RESTful API?怎么使用?

答:是一个api的标准,无状态请求。请求的路由地址是固定的,如果是tp5则先路由配置中把资
源路由配置好。标准有:.post .put .delete
/manage
get
post

18、mint-ui是什么?怎么使用?说出至少三个组件使用方法?

答:基于vue的前端组件库。npm安装,然后import样式和js,vue.use(mintUi)全局引入。在单个
组件局部引入:import {Toast} from ‘mint-ui’。组件一:Toast(‘登录成功’);组件二:
mint-header;组件三:mint-swiper

19、scss是什么?安装使用的步骤是?有哪几大特性?

答:css的预编译。
使用步骤:
第一步:用npm 下三个loader(sass-loader、css-loader、node-sass)
第二步:在build目录找到webpack.base.config.js,在那个extends属性中加一个拓展.scss
第三步:还是在同一个文件,配置一个module属性
第四步:然后在组件的style标签加上lang属性 ,例如:lang=”scss”
有哪几大特性:
1、可以用变量,例如($变量名称=值);
2、可以用混合器,例如()
3、可以嵌套

具体内容都是百度而得,如有版权问题,请联系作者删除。谢谢!e-mail:1762326345@qq.com

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值