前端面试必备 | uni-app 篇(P1-15)

alt

1. 请简述一下uni-app的定义和特点。

uni-app是一款基于Vue.js框架开发的跨平台开发工具,它可以用于快速构建同时运行在多个平台(包括iOS、Android、Web以及小程序)的应用程序。uni-app实现了一套代码,多端运行的目标,通过一套代码编写,可以生成多个平台的应用程序,开发者无需针对不同平台进行独立开发,极大地提高了开发效率。

uni-app具有以下几个特点:

  1. 跨平台:uni-app可以将一个代码库同时编译为多个平台的应用程序,包括iOS、Android、Web以及小程序。这样开发者只需编写一次代码,即可在不同平台上运行。
  2. 性能优秀:uni-app通过原生渲染和跨平台性能优化,保证了应用程序的性能表现。
  3. 开发便捷:基于Vue.js框架,使用熟悉的Vue语法进行开发,减少了学习成本和开发难度。
  4. 多端共享:uni-app支持多端组件和API共享,开发者可以共享大部分代码和逻辑,减少了重复开发的工作量。
  5. 生态丰富:uni-app生态中拥有丰富的插件和扩展,可以方便地集成第三方功能和服务。
  6. 更新迭代:uni-app团队保持着良好的更新迭代节奏,不断优化和改进开发体验和功能。

alt

通过这些特点,uni-app提供了一种高效、便捷的方式,让开发者能够快速构建跨平台应用,降低开发成本,提高开发效率。

2. uni-app兼容哪些前端框架?请列举几个。

uni-app兼容以下前端框架:

  1. Vue.js:uni-app是基于Vue.js框架开发的,开发者可以使用Vue.js的语法和特性进行开发。
  2. React:通过uni-app的插件nervjs,可以在uni-app中使用React进行开发。
  3. Angular:通过uni-app的插件uni-angular,可以在uni-app中使用Angular进行开发。
  4. 小程序原生框架:uni-app可以编译生成小程序的原生代码,兼容微信小程序、支付宝小程序、百度小程序等。

alt

通过兼容不同的前端框架,uni-app使得开发者可以根据自己的熟悉和喜好选择合适的框架进行开发,同时实现跨平台的能力。

3. 请简述一下uni-app的跨平台工作原理。

uni-app的跨平台工作原理是采用了一种基于Vue.js框架的开发方式,结合了多个前端技术栈和编译原理,使得开发人员可以使用统一的语法和组件库,同时可以在不同的运行时环境下快速构建出Native AppH5小程序等多种应用。其主要具体实现方式包括以下几个方面:

1.基于Vue.js框架进行开发,统一了开发语言和组件库。

2.采用编译原理,在编译阶段将统一的代码转换为不同平台所需的代码,从而实现跨平台。

3.利用不同平台的API和特性进行适配,提供多种不同的运行时环境,包括Native App、H5、小程序等。

4.使用插件化架构,在不同平台上运行时加载不同的插件和特性,以适应各种复杂场景。

4. 什么是条件编译?在uni-app中如何实现条件编译?

条件编译是指根据不同的条件编译指令来选择在编译过程中需要编译的部分代码,从而编译出不同的可执行程序。条件编译可以使得开发者能够灵活地对不同的编译环境定制不同的编译选项,达到更好的代码重用、更高的性能和更好的可移植性。

在uni-app中实现条件编译需要使用预处理指令,主要包括#ifdef#ifndef#else#endif等指令。在编译时,只有符合指定条件的代码会被编译。

举例来说,我们可以在uni-app项目中创建一个名为config.js的文件,用来定义不同条件下的编译选项。比如:

module.exports = {
  ENV: 'dev',
  API_BASE_URL: 'https://dev.api.com'
};

然后,在需要使用这些选项的地方,可以使用条件编译来判断当前的编译环境,从而选择不同的选项。比如:

import config from '@/config'; // 引入配置文件

#ifdef H5
// 在 H5 环境下使用 H5_API_BASE_URL
const API_BASE_URL = config.H5_API_BASE_URL;
#else
// 在其他环境下使用 API_BASE_URL
const API_BASE_URL = config.API_BASE_URL;
#endif

在上面的代码中,使用#ifdef指令来判断当前是否是 H5 环境,如果是则使用H5_API_BASE_URL选项,否则使用API_BASE_URL选项。注意,不同的条件需要在编译命令中指定,比如在使用uni-app-cli时可以使用--condition H5来指定当前为 H5 环境。

5. uni-app中的页面生命周期有哪些?请简要介绍。

uni-app中的页面生命周期包括:onLoad、onShow、onReady、onHide、onUnload。

onLoad:页面加载时执行,只会在页面加载时触发一次。可以获取页面参数和初始化数据。

onShow:页面显示时触发,每次打开页面都会触发。可以进行数据刷新。

onReady:页面初次渲染完成时触发,只会触发一次。可以进行页面事件绑定和动态样式修改。

onHide:页面隐藏时触发,例如从当前页面跳转到其他页面。可以进行暂停音视频播放等操作。

onUnload:页面卸载时触发,例如关闭当前页面或调用wx.navigateBack()方法返回上一页。可以进行清理工作,如清理定时器、解绑事件等。

alt

6. 在uni-app中如何使用组件?有没有一些常用的内置组件?

在uni-app中,可以使用原生的Vue组件和uni-app提供的跨端组件库,两者都可以通过<template>标签来使用。

对于原生Vue组件,只需要像在普通Vue项目中一样,在<template>中使用即可。对于跨端组件库,我们需要先在页面中引入组件:

<template>
  <view>
    <button>普通按钮</button>
    <uni-button>跨端按钮</uni-button>
  </view>
</template>

<script>
import UniButton from '@/components/uni-button/uni-button.vue';

export default {
  components: {
    UniButton // 注册组件
  }
}
</script>

上面的模板中,我们引入了一个叫做uni-button的跨端按钮组件,并在页面中使用它,注意需要在<script>标签中将组件注册到当前页面才能使用。

uni-app提供了一些常用的内置组件,包括viewbuttontextimageiconinput等。这些组件可以直接在页面中使用,例如:

<template>
  <view class="container">
    <button>普通按钮</button>
    <uni-button>跨端按钮</uni-button>
    <input placeholder="请输入内容" />
    <text>这是一段文本</text>
    <image src="/static/logo.png" />
    <icon type="success" size="40" />
  </view>
</template>

上面的模板中,我们使用了uni-app提供的内置组件。这些组件在不同端上渲染方式会有所不同,但都能够适配多个平台。

总之,无论是使用原生Vue组件还是uni-app提供的跨端组件,都需要先在页面中将其引入并注册,才能在模板中正常使用。

7. 请解释一下uni-app中的页面导航和传参的方式。

uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一次代码,可发布到iOS、Android、Web(对,还有Web)、以及各种小程序等平台。

在uni-app中,页面导航主要通过uni.navigateTouni.navigateBackuni.redirectTouni.reLaunch等方法实现。这些方法都可以在目标页面中通过onUnload方法进行返回上一页的页面数据清除,或者通过onLoad方法获取传递的数据。

传参的方式主要有两种:

  1. 通过URL传参:这种方式适合传递一些简单的数据,如字符串、数字等。可以将这些数据作为URL的参数传递。在目标页面通过onLoad方法可以获取到这些参数。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

前端面试必备 文章被收录于专栏

前端面试必备知识点:HTML和CSS、JS(变量/数据类型/操作符/条件语句/循环;面向对象编程/函数/闭包/异步编程/ES6)、DOM操作、HTTP和网络请求、前端框架、前端工具和构建流程、浏览器和性能优化、跨浏览器兼容性、前端安全、数据结构和算法、移动端开发技术、响应式设计、测试和调试技巧、性能监测等。准备面试时,建议阅读相关的技术书籍、参与项目实践、刷题和练习,以深化和巩固你的知识。

全部评论
learn,uni-app支持两种热更新机制,分别是整包更新和资源包更新。
1 回复 分享
发布于 2023-08-29 22:07 广东
get,采用编译原理,在编译阶段将统一的代码转换为不同平台所需的代码,从而实现跨平台
点赞 回复 分享
发布于 2023-08-29 22:07 广东

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
萧索X:写篮球联赛干嘛,陪老板打篮球吗。还有实习经历要写自己所在岗位具体完成什么工作,自己的任务具体完成了什么需求,给公司带来了哪些量化增长
点赞 评论 收藏
分享
评论
3
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务