uniapp常用面试题

  1. 什么是uniapp?

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,
    开发者编写一套代码,可发布到iOS、Android、Web(响应式)、
    以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
    
  2. uniapp是如何区别和定义页面?

    uni-app 中的页面,通常会保存在工程根目录下的pages目录下。
    .vue页面和.nvue页面,均全平台支持,差异在于当uni-app发行到App平台时,
    .vue
    文件会使用webview进行渲染,
    .nvue
    会使用原生进行渲染,详见:nvue原生渲染。
    
  3. 关于uniapp的生命的周期

    uniapp中的组件 
    	1. 不是在pages目录下新建的.vue文件
    	2. 一般通常会把项目中的组件放在components这个目录中 这个目录里面的.vue文件只具备组件的生命周期
        pages目录下.vue文件不仅有页面的生命周期 同时也有组件生命周期
        3.部分页面生命周期
        	onLoad ==> 第一次进入页面所执行的生命周期
    		使用场景: 
    				(1)会接收页面的参数 (2)请求接口
    		onShow ==> 每一次进入页面所执行的生命周期
    		onReady ==> 页面初次渲染完成 可以获取dom元素
            
    	
    
  4. uniapp的页面跳转

    uni.navigateTo(OBJECT) ==> 保留当前页面,跳转到应用内的某个页面
    uni.redirectTo(OBJECT) ==> 关闭当前页面,跳转到应用内的某个页面
    uni.reLaunch(OBJECT) ==> 关闭所有页面,打开到应用内的某个页面
    uni.switchTab(OBJECT) ==> 跳转到 tabBar 页面,并关闭其他所有非tabBar 页面
    uni.navigateBack(OBJECT) ==> 关闭当前页面,返回上一页面或多级页面。
        可通过getCurrentPages()获取当前的页面栈,决定需要返回几层
    
  5. 页面之间跳转传值

    A页面:传
    uni.navigateTo({
    url:`/pages/search/search?key=${this.key}&id=111`
    })
    B页面:onLoad( options ) {
    this.keyName = options.key
    
### UniApp 高级面试题汇总 #### 1. **UniApp 的核心特点** UniApp 是基于 Vue.js 的跨平台开发框架,支持一次编写、多端运行。其主要特点是能够兼容 H5、小程序(微信/支付宝/百度等)、以及 App 平台[^1]。 #### 2. **Vue 生命周期在 UniApp 中的表现形式** 在 UniApp 中,Vue 的生命周期依然适用,但由于不同平台的特性差异,在某些场景下可能会有所调整。例如 `onLoad` 和 `onShow` 方法主要用于页面初始化逻辑处理,而这些方法实际上是小程序特有的生命周期钩子函数被映射到了 Vue 的生命周期中[^3]。 #### 3. **如何优化 UniApp 应用性能?** 性能优化可以从以下几个方面入手: - 减少不必要的 DOM 操作,合理利用虚拟 DOM 提升渲染效率。 - 对于 SPA 单页面应用,可以采用路由懒加载技术来减少初始包体积。 - 使用缓存机制存储静态数据或频繁访问的数据,降低服务器请求频率。 - 如果涉及大量列表渲染,可以通过实现虚拟滚动或者分页加载的方式提升体验[^4]。 #### 4. **React 与 VueUniApp 场景下的对比** 虽然 React 更适合超大型项目并拥有更广泛的生态系统[^2],但在 UniApp 生态体系内,由于其底层依赖的是 Vue 技术栈,因此开发者通常会优先考虑使用 Vue 及其衍生工具链完成开发工作。这不仅简化了学习成本还增强了代码一致性。 #### 5. **解决组件复用中的状态管理问题** 当面临复杂的状态同步需求时,推荐引入 Vuex 进行全局状态管理。通过定义清晰的动作(action)和突变(mutations),可以使整个应用程序内的共享变量得到集中控制从而避免混乱的发生。另外也可以借助第三方库如 Pinia 来替代传统 Vuex 实现更加简洁易懂的状态管理模式. ```javascript // 示例:Vuex store 定义 export default new Vuex.Store({ state: { count: 0, }, mutations: { increment(state){ state.count +=1; } }, actions:{ increase({commit}){ commit('increment'); } } }); ``` #### 6. **常见错误及解决方案** - 错误一:“无法找到模块”——可能是路径配置不正确或者是插件安装失败引起的。建议重新审视项目的目录结构,并按照官方文档指引逐步排查。 - 错误二:"this is undefined" —— 很可能是在箭头函数外部调用了 this 导致上下文丢失的情况。改用普通函数或将回调绑定至实例即可修复该类问题. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值