https://www.bilibili.com/video/BV1nV411Q7RX/?p=2&spm_id_from=pageDriver&vd_source=dea414ee2d39e74f662ceec0edffdf24 <!-- more --> ## RN、Native 和 H5 三种技术的解释 作为一名后端工程师,你在和前端同学合作时听到这些术语,很可能是因为他们在讨论移动端开发(比如 App 开发)的技术栈。这些术语通常出现在移动应用开发的上下文中,分别代表不同的开发方式。下面我基于可靠的搜索结果(来自 CSDN、掘金等技术社区)来简单解释一下它们各自是什么、优缺点,以及在实际项目中的应用场景。它们的主要区别在于开发效率、性能和跨平台能力。 ### 1. **[[RN (React Native)]]** - **是什么?** React Native 是 Facebook(现 Meta)开发的一个开源框架,用于使用 JavaScript 和 React 构建**跨平台原生移动应用**。它不是简单地渲染 Web 页面,而是通过桥接(Bridge)机制将 JS 代码转换为平台的原生组件(如 Android 的 View 或 iOS 的 UIView),从而实现“学一次,到处写”(Learn once, write anywhere)。简单说,就是用 Web 开发者的技能(JS/React)来做接近原生的 App。 - **优缺点:** - **优点**:开发效率高,支持热更新(不用重新发布 App),跨平台(iOS 和 Android 共用大部分代码),社区活跃。 - **缺点**:性能不如纯原生(尤其复杂动画或高负载场景),需要处理桥接开销,可能有兼容性问题。 - **应用场景**:适合中型项目,如二级页面或功能稳定的模块(例如电商 App 的详情页)。知名案例:Facebook、Instagram、Airbnb 等 App 部分功能用 RN 实现。 - **为什么前端同学提到?** 前端开发者熟悉 React/JS,所以 RN 是他们的舒适区,能快速迭代。 ### 2. **[[Native]] (原生开发)** - **是什么?** Native 指的是**平台原生开发**,使用操作系统提供的官方语言和工具直接构建 App。例如: - Android:用 Java/Kotlin + Android Studio。 - iOS:用 Swift/Objective-C + Xcode。 这是一种“纯血统”的开发方式,直接调用系统的 API 和硬件(如摄像头、GPS),没有中间层。 - **优缺点:** - **优点**:性能最佳(接近硬件级别),用户体验流畅,能充分利用平台特性(如推送、指纹解锁)。 - **缺点**:开发成本高(需要分别开发 iOS 和 Android 版本),维护麻烦,不支持热更新(必须通过 App Store 审核)。 - **应用场景**:适合对性能要求高的核心页面,如首页、一级导航或游戏 App(例如微信的核心功能就是 Native 开发的)。 - **为什么前端同学提到?** 这通常是基准对比,前端可能在讨论“RN 是否能替换 Native”时提到,因为 Native 是“金标准”。 ### 3. **[[H5 (HTML5)]]** - **是什么?** H5 是 HTML5 的简称,指使用 Web 技术(HTML、CSS、JavaScript)构建的**网页应用**,常嵌入到 App 中作为混合(Hybrid)模式。例如,通过 WebView(浏览器内核)加载 H5 页面。H5 可以是纯 Web App(如微信小程序的部分实现),或嵌入 Native App 中的活动页。它依赖浏览器引擎渲染,不直接访问原生 API。 - **优缺点:** - **优点**:开发速度快、跨平台(一次开发,多端运行,包括浏览器),易分享(URL 链接),支持热更新。成本低,前端开发者上手容易。 - **缺点**:性能较差(渲染依赖 WebView,动画卡顿),无法深度访问硬件(如相机需桥接),安全性稍低。 - **应用场景**:适合活动页面、营销页或需要快速迭代的内容(如电商的促销 H5 页面、分享链接)。知名案例:很多 App 的“活动中心”就是 H5 实现的,便于动态更新。 - **为什么前端同学提到?** H5 是前端的核心技能(HTML/JS),常用于 Hybrid App,与 RN/Native 对比时讨论“用 H5 够不够”。 ### 三者的对比总结(基于实际开发经验) - **性能排序**:Native > RN > H5(Native 最强,H5 最弱)。 - **开发效率**:H5 > RN > Native(H5 最快,Native 最慢)。 - **跨平台**:RN 和 H5 都支持,Native 不支持(需双端开发)。 - **项目中如何选择?** - 大型 App 往往混合使用:核心用 Native,次要用 RN,活动用 H5(例如 CSDN 博客中提到的一些 App 技术栈)。 - 如果你们的项目是移动端,后端可能需要提供 API 支持(如 RN/H5 调用后端接口),注意兼容性(如 H5 的跨域问题)。 如果这些解释还不够详细,或者你有具体场景(如“RN 如何与后端交互”),可以提供更多细节,我可以再帮你查或解释!(信息基于 2025 年 7 月的搜索结果,技术栈可能随时间更新。) | 主分类 | 子项 | |--------|------| | 基础概念 | 响应式<br>声明<br>更新<br>计算属性 | | 模板相关 | 模板语法<br>最简模板<br>样式<br>DOM循环<br>点击事件<br>DOM引用<br>条件渲染 | | 生命周期 | 生命周期<br>组件加载时<br>组件卸载时 | | 组件通信 | 组件组合<br>组件Props传参<br>向父组件emit事件<br>Slot插槽<br>Slot插槽内容<br>上下文 | | 表单控件 | 表单输入<br>输入框<br>复选框<br>单选框<br>选择器 | | Web功能 | Web应用特性<br>渲染应用<br>Fetch获取数据<br>路由链接<br>路由管理 | 让我用游戏世界来解释整个前端UI的层级体系,从底到顶: 1. 原生[[HTML]]/[[CSS]]/[JavaScript](JavaScript.md) (最底层) - 就像是游戏里的基础材料(木头、石头、铁块) - 需要从零开始搭建一切 1. [[CSS 预处理器]] (SASS/LESS) - 就像是更好用的工具,比如魔法锤子 - 让你写 CSS 更轻松 1. [[CSS 框架]] (Tailwind CSS/Bootstrap) - 就像是提供了一堆预制的材料块 - 不用自己从头造砖头 1. [[UI组件库]] (Ant Design/Element Plus) - 就像是游戏里已经建好的房子部件 - 直接拿来用的门啊、窗啊之类的 1. 页面模板 - 就像是完整的房子设计图 - 直接照着图纸建就行 1. 低代码/无代码平台 - 就像是游戏里的创意模式 - 拖拖拽拽就能建好东西 所以使用的时候可以: - 完全自己造(用原生) - 用工具造(用框架) - 直接用现成的(用组件库) - 拖拽完成(用低代码平台) 具体用哪个层级,就看你需要多少自由度和愿意花多少时间啦! --- 上周在优化报价组的排查工具,主要是写一些前端。总结了一下,作为后端开发,写 前端关注两个点就够了:首先是从数据和交互的角度出发,为各种类型的数据选择合 适的组件,其次是从用户体验出发找到合适的样式风格。之前就感觉像饿了么,得物, Instagram 整体风格比较简洁,美团相对就比较乱,在完善工具样式的时候,发现前 面这一普遍类都采用了高饱和度白色背景,小图标,大留白的风格,所以能给人以整 洁干净的感受。 如何 debug?[浏览器 debug](浏览器%20debug.md) [开发者工具](开发者工具.md) [静态内容](静态内容.md) ## 文字版 - [网络@](网络@.md) - 因特网如何工作? - 什么是 [HTTP 1.1](HTTP%201.1.md) - 浏览器的工作原理? - DNS 的工作原理 [DNS](DNS.md) - 什么是域名 [域名](域名.md) - 什么是 web 托管服务 - HTML、CSS 和 JavaScript - [HTML](HTML.md) - [CSS](CSS.md) - [JavaScript](JavaScript.md) - 版本控制系统 - [1 最近项目/++Vue学习/github](1%20最近项目/++Vue学习/github) - [Git](Git.md) - web 安全知识 - [HTTPS](HTTPS.md) - [跨域](1%20最近项目/++Vue学习/跨域) - [Content Security Policy](Content%20Security%20Policy) - [OWASP Security Risks](OWASP%20Security%20Risks) - 包管理 - pnpm、[npm](npm.md) 和 yarn 对比与选择 - CSS 前处理 - [Sass](Sass) - [PostCSS](PostCSS) - 构建工具 - 静态检查与格式化 - [Prettier](Prettier) - [Eslint](Eslint) - Task Runners - [npm scripts](npm%20scripts) - Module Bundlers - [vite](vite) - [esbuild](esbuild) - [webpack](webpack) - 选择一个框架 - [React](React) - [Vue3@]([email protected]) - [Angular](Angular) - Modern CSS - [Styled Components](Styled%20Components) - [CSS Modules](CSS%20Modules) - [CSS](CSS.md) 框架 - [Tailwind](Tailwind) - [Bootstrap](Bootstrap) - [Bulma](Bulma) - 应用测试 - [Jest](Jest) - [react-testing-library](react-testing-library) - [Cypress](Cypress) - [Playwright](Playwright.md) - 鉴权策略 - [JWT](JWT) - [OAuth](OAuth.md) - [单点登录](2%20第二大脑/1%20概念/4%20信息与模式/CS/软件工程/安全/登录/单点登录.md) - [Basic Auth](Basic%20Auth) - [Session Auth](Session%20Auth.md) - [PWA - Progressive Web Apps](PWA%20-%20Progressive%20Web%20Apps.md) - [SSR 服务端渲染](SSR%20服务端渲染.md) - [静态网站生成器](静态网站生成器) - [GraphQL](GraphQL) - 移动端应用 - [React Native](React%20Native) - [Flutter](Flutter) - 桌面端应用 - [Electron](Electron) - [Tauri](Tauri) - [Flutter](Flutter) excerpt <!-- more --> ## 前端知识框架图 ### JavaScript - 运行时   - 语法   - 调度   - 语义 - 执行过程(微任务)   - 数据结构   - 类型   - 对象   - 实例   - 应用和机制   - 事件循环   - 微任务的执行   - 宏任务的执行   - 语言的级别执行 ### HTML - 元素   - 文本元素信息   - 语义相关内容   - 链接   - 锚点   - 替换型元素   - 基础   - 表单   - 总结   - 实体   - 命名空间 - 语言   - 语法 - 补充控制 ### CSS - 语言   - [选择器](选择器.md)     - @rule     - 选择器     - 单位 - 功能   - 布局     - 正常流     - 弹性布局     - 网格布局     - 绝对和相对   - 检测   - 文字排版   - 动画   - 交互   - 其他文档 ### 浏览器的实现原理和 API [BOM](BOM.md) - 实现原理   - 解析   - 构建 [DOM](DOM.md) 树   - 计算 CSS   - 渲染、合成和控制 - [DOM](DOM.md) - CSSOM - 事件 - API 组合 ## 组件库 [UI组件库](UI组件库.md) [Echarts](Echarts) ### 前端工程实践 - 性能 - 工具链 - 持续集成 - 持续系统 - 架构与系统库 ### 参考文献 [Frontend Developer Roadmap: Learn to become a modern frontend developer](https://roadmap.sh/frontend)