首页
学习
活动
专区
圈层
工具
发布

干货 | 携程度假无线前端架构演进之路

否则,想要使用新技术解决现有项目的问题,首先要能解决引入新技术的成本问题。 为了能使用 React 的组件化技术,解决大块大块的渲染模板难以维护的问题。...因此才有 React-Native 这类强化方案:使用 JavaScript 编写业务逻辑,用 React 组件去表达抽象的界面,但通过 Native UI 去加速渲染:Written in JavaScript—rendered...Model 是单独定义的,通过暴露的 React-Hooks API,在 React-DOM 组件里使用,同时它也可以在 React-Native 组件中使用。...详情请见《GraphQL-BFF:微服务背景下的前后端数据交互方案》 六、Monorepo 只有 Pure-Mode 也是不够的,它只是抽象层,真正驱动代码的还是 React-Native/React-DOM...以上,我们粗略地描述了我们的前端架构设计如何从 Backbone.js 走到 Pure-Model + Monorepo + GraphQL-BFF + React-Native/React-IMVC

2.5K30

React Native 混合开发(iOS篇)

在React Native的应用场景中,有时候一个APP只有部分页面是由React Native实现的,比如:我们常用的携程App,它的首页下的很多模块都是由React Native实现的,这种开发模式被称为混合开发...混合开发的一些其他应用场景: 在原有项目中加入RN页面,在RN项目中加入原生页面 ? 原生页面中嵌入RN模块 ? RN页面中嵌入原生模块 ?...Native注册一个名为App1的组件,然后我会在第四步给大家介绍如何在iOS中加载并显示出这个组件。...Native的一个页面,在这个页面中显示了this is App的文本内容。...Native代码和注册了一个名为App1的组件,接下来我们来学习下如何在RNHybridiOS项目中使用这个App1组件。

9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在 React Native 中原生实现动态导入

    如何在React Native中原生实现动态导入 要在 React Native中 使用原生动态导入,你需要安装0.72或更高版本的React Native。...在React Native中,你可以使用react-loadable库来动态加载和渲染组件。...这对于提供流畅的用户体验至关重要,尤其是在设备或网络较慢的情况下。 提高代码可维护性:动态导入可以通过让你将不常用的组件或库分离到单独的模块中,更有效地组织你的代码库。...它们带来了一些权衡,如增加的复杂性,潜在的错误,以及对网络连接的依赖。因此,你应该只在必要时使用它们,而不是过度使用它们。...总结 在这篇文章中,我们学习了如何在React Native中使用原生动态导入。有了动态导入这个强大的工具,你可以使你的React Native应用更高效、响应更快、用户体验更友好。

    1.7K10

    react native入门实战(一)

    : 如何在mac IOS下进行react native环境配置 写一个简单的例子,分析react native布局与web布局的不同点 如何在Xcode上进行编译以及在IOS真机上运行 首屏加载一些简单的优化方法...command+D就可以弹出以下窗口,在浏览器窗口上打开链接localhost:8081/debugger-ui就可以进行debug调试 使用react-native写一个简单的页面 使用react...模块下的identity模块中的Bundle identifier设置为com.tencent.a(a可以换成其他字符串哈),并且进行如下如所示配置 在XCode中选中自己的IOS设备作为目标,然后点击...在react native中,我们使用measureLayout来判断窗体的具体位置。...在react native中,我们也可以使用istView视图列表组件中的相关函数onChangeVisibleRows来辅助进行处理; 数据缓存, 使用react native AsyncStorage

    7.9K70

    react native 入门实战(一)

    +D就可以弹出以下窗口,在浏览器窗口上打开链接localhost:8081/debugger-ui就可以进行debug调试 使用 react-native 写一个简单的页面 使用react native...List view写一个简单的页面 首先是初始化组件,进行数据加载 class ShortVideoList extends Component { constructor(props) {...模块下的identity模块中的Bundle identifier设置为com.tencent.a(a可以换成其他字符串哈),并且进行如下如所示配置; 在XCode中选中自己的IOS设备作为目标,然后点击...实现react native懒加载与Web懒加载的实现方式有些许不同。在react native中,我们使用measureLayout来判断窗体的具体位置。...在react native中,我们也可以使用istView视图列表组件中的相关函数onChangeVisibleRows来辅助进行处理; 数据缓存, 使用react native AsyncStorage

    9.1K00

    react native入门实战(一)

    : 如何在mac IOS下进行react native环境配置 写一个简单的例子,分析react native布局与web布局的不同点 如何在Xcode上进行编译以及在IOS真机上运行 首屏加载一些简单的优化方法...command+D就可以弹出以下窗口,在浏览器窗口上打开链接localhost:8081/debugger-ui就可以进行debug调试 使用react-native写一个简单的页面 使用react...模块下的identity模块中的Bundle identifier设置为com.tencent.a(a可以换成其他字符串哈),并且进行如下如所示配置 在XCode中选中自己的IOS设备作为目标,然后点击...在react native中,我们使用measureLayout来判断窗体的具体位置。...在react native中,我们也可以使用istView视图列表组件中的相关函数onChangeVisibleRows来辅助进行处理; 数据缓存, 使用react native AsyncStorage

    7.3K20

    React Native Hooks开发指南

    目录 什么是Hooks Hooks的特性 如何在React Native使用Hooks 在React Native中使用 State Hook 在React Native中使用 Effect Hook...它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 Hooks 是一种在函数式组件中使用有状态函数的方法。...如何在React Native使用Hooks Hooks最为常见的有两个API:useState与useEffect也叫State Hook与Effect Hook,那么接下来我们就来学习下在React...在React Native中使用 Effect Hook Effect Hook 可以让你在函数组件中执行副作用操作。...Hooks能够实现的class也都能实现 对于页面级等比较大的模块建议用class 对应组件级别比如封装一个按钮组件适合用Hooks 更多资料 Hooks官方文档

    4.4K40

    React的移动端和PC端生态圈的使用汇总

    个人建议,在Node.js开发和React native以及大型React中使用TypeScript 在下载官方的react脚手架中,包含了一个第三方的ts创建脚手架的命令 在 Create React...在react-native中使用Ant-Design yarn add @ant-design/react-native 在babel配置中: "plugins": [ ["import",...{ libraryName: "@ant-design/react-native" }] ] 在React-native组件中使用: import React from 'react'; import...基于JavaScriptCore,Web开发者可以尽情使用ES6的新特性,如class、箭头操作符等,而且 React Native运行在JavaScriptCore中的,完全不存在浏览器兼容的情况。...参考文章,react-native原理解析,看在react-native跨平台开发的无缝对接js和react份上,我决定坚定使用它。希望在1.0版本到来的时候,给我们一个惊喜。

    2.6K40

    使用React、Electron、Dva、Webpack、Node.js、Websocket快速构建跨平台应用

    回到正题,不能否认,现在的大前端,真的太牛了,PC端可以跨三种平台开发,移动端可以一次编写,生成各种小程序以及React-native应用,然后跑在ios和安卓以及网页中 , 这里不得不说--...Electron相当于给React生成的单页面应用套了一层壳,如果涉及到文件操作这类的复杂功能,那么就要依靠Electron的主进程,因为主进程可以直接调用Node.js的API,还可以使用C++插件,...直接看图 首先是Redux React 只负责页面渲染, 而不负责页面逻辑, 页面逻辑可以从中单独抽取出来, 变成 store,状态及页面逻辑从 里面抽取出来, 成为独立的 store...在入口APP组件中,注入props,实现状态树的管理 import React from 'react' import { HashRouter, Route, Redirect, Switch } from...在组件即将卸载的时候,移除了所有的跨进程通信的事件监听 使用了dva进行路由跳转 连接了状态树,读取了状态树main模块的main状态数据 进入上一个组件的子组件 import React from '

    3.3K30

    react-native 开发笔记 (四)

    后来才发现,有一个办法可以阻止冒泡,那就是在父组件和子组件的中间插入一个Touchable*这样子的组件,这个组件不要绑定事件,这样的话内部的事件是不会冒泡到顶部的 react native多页面鉴权...比如判断用户有没有登录,然后做相应的操作或者页面跳转。 react-native 也是一样的,做法也没有什么区别。...正常使用起来,其实是可以使用的,但是也存在一些问题 react-native的fetch本身是可以保存cookie的,这就导致app用户过期时间由服务器配置决定的。...那如果app如果需要自己决定用户的过期时长的话,这就需要额外的封装,比如保存账户和密码做自动登录。 一个页面可以有多个请求,不止一个。这些请求在页面加载完成初期,就要去全部加载。...而fetch api是不能abort的, 解决办法我觉着 1、可以引入GraphQL,这种成本可能很高,因为前后端改动都比较大 2、对细致的每个调用操作做判断,在页面卸载的时候终止这些方法

    1.7K20

    React的移动端和PC端生态圈的使用汇总

    个人建议,在Node.js开发和React native以及大型React中使用TypeScript 在下载官方的react脚手架中,包含了一个第三方的ts创建脚手架的命令 在 Create React...在react-native中使用Ant-Design yarn add @ant-design/react-native 在babel配置中: "plugins": [ ["import", { libraryName...: "@ant-design/react-native" }] ] 在React-native组件中使用: import React from 'react'; import { View, Text,...基于JavaScriptCore,Web开发者可以尽情使用ES6的新特性,如class、箭头操作符等,而且 React Native运行在JavaScriptCore中的,完全不存在浏览器兼容的情况。...参考文章,react-native原理解析,看在react-native跨平台开发的无缝对接js和react份上,我决定坚定使用它。希望在1.0版本到来的时候,给我们一个惊喜。

    2.8K10

    React的移动端和PC端生态圈的使用汇总

    开发和React native以及大型React中使用TypeScript 在下载官方的react脚手架中,包含了一个第三方的ts创建脚手架的命令 在 Create React App 中使用 TypeScript...状态统一集中管理,`redux,mbox,redux-sage,dva`等开源库 先看看原始的react数据管理 组件间数据的传递,依靠props,状态数据提升等完成,但是对于跨层级的组件间数据传递,就不那么友好了...` 在react-native中使用Ant-Design yarn add @ant-design/react-native 在babel配置中: "plugins": [ ["import", {...libraryName: "@ant-design/react-native" }] ] 在React-native组件中使用: import React from 'react'; import {...基于JavaScriptCore,Web开发者可以尽情使用ES6的新特性,如class、箭头操作符等,而且 React Native运行在JavaScriptCore中的,完全不存在浏览器兼容的情况。

    2.6K10

    干货 | 揭秘携程三端通用框架中的CRNWEB

    对于业务方而言如Flight项目,Hotel项目等等,无需关心底层的技术实现,使用React-Native这一套开发技术体系基本上就足矣。...中为了提高性能,将HelloWorld组件转化为异步组件HelloWorld(__CRNWEBFUNCTION__),从而实现页面级别的按需加载,仅在需要的页面运行时进行加载。...这在WEB环境下是非常重要的一项优化,这是专门针对WEB环境下脆弱的网络环境而作出的改进,特别是在页面众多,组件数量大,组件体量大的较大型WEB项目中,性能提升非常显著,这在BU的实践中得到了的认可。...而HelloWold中引入的View,Text,StyleSheet等等组件,也全部变成了WEB版本的具体实现,这里使用了一招瞒天过海。...另外我们使用了一些工具,能很好的将项目中的模块依赖关系呈现出来,比如说Log这个模块被哪些页面引用,首页这个页面引用了哪些具体的模块(如:FStyleSheet,Log,utils,LinearGradient.web

    1.7K30

    2018 年前端开发五大趋势

    这就是GraphQL的用武之地,使用GraphQL而不是使用单独的端点来访问每个资源。你可以使用单个端点,该端点能够同时处理涉及多个数据源的复杂查询。...与 Jekyll,Hugo 或 Hexo 等流行解决方案不同,这个静态生成器不使用模板,而是信赖于 Webpack 和 React 组件(注意 React 官网本身也是在 Gatsby 的帮助下编写的)...因此,你可以获得自动更新和即时页面转换等优势。从1.0版本开始,Gatsby 使用了上面提到的 GraphQL。...因此,在构建过程,它可以从多个 GraphQL API 中获得数据,然后使用它们创建一个完全静态的 React 客户端应用程序。...如前所述,React Storybook允许您在应用程序之外开发和测试UI组件,并允许团队中的其他开发人员继续使用它们。 也就是说,有时会加速界面开发的过程。

    3.5K40

    再谈移动端跨平台框架 Flutter 与 React Native

    在渲染引擎上 RN 没有直接使用 WebKit 或其它 Web 引擎,因为之前 Web 在构建复杂页面时带来的计算消耗,远比不上纯原生引擎的渲染。...factory User.fromJson(MapString, dynamic> json) => _$UserFromJson(json); /// `toJson` is the convention...MapString, dynamic> toJson() => _$UserToJson(this); } 运行脚本命令即可 flutter pub run build_runner build React...VDom ,然后再更新真正的组件,只是 RN 是 Native 组件 [1240] 2.4 原生交互 2.4.1 混合开发 (Embed) Flutter Flutter 内嵌入 Native 页面...Fluttter 提供了 AndroidView 与 UiKitView 来支持原生页面的嵌入,不过这类 Widget 在使用中还要注意布局,事件的回调等诸多问题,从官方的文档来看其实不太推荐这类场景。

    2.4K30
    领券