携程是如何做React Native优化的 ReactNative(下文简称RN)开源已经一年多时间,国内各大互联网公司都在使用,携程也在今年5月份投入资源开始引入,并推广给多个业务团队使用,本文将会分享我们遇到的一些问题以及我们的优化方案。一、背景和使用情况介绍为什么会引入ReactNative?1. AppSize占用携程旅行App从11年开始开发,至今已有5年多时间,随着各项业务功能的全面移动化
Yarn 在 JavaScript 社区中,工程师们互相分享成千上万的代码,帮助我们节省大量编写基础组件、类库或框架的时间。每个代码包可能都依赖于其他代码,而代码间的依赖关系则由包管理器负责维护。目前最流行的 JavaScript 包管理器是 npm 客户端,在 npm 仓库中提供了多达 30 万的软件包。据统计,已有超过 500 万的工程师使用 npm 仓库,其软件包下载量达到了 50 亿次/月。
semver(语义化的版本控制) 在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的套件越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。在依赖高的系统中发布新版本套件可能很快会成为恶梦。如果依赖关系过高,可能面临版本控制被锁死的风险(必须对每一个相依套件改版才能完成某次升级)。而如果依赖关系过于松散,又将无法避免版本的混乱(假设兼容于未来的多个版本已超出了合理数量)。当你专案的进展因为版本相依被锁死或
WebSocket详解 什么是websocketWebSocet是为了解决客户端和服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接,此后服务端和客户端通过此TCP连接进行实时通信。WebSocket提供两种数据传输:文本数据和二进制数据。 ws是普通的WebSocket通信协议,而wss是安全的。在缺省情况下下,ws的端口是80,而wss的端口是443。 We
ES6学习—Generator函数 基本概念Generator是ES6提供的一种异步编程的解决方案。 形式上有两个特征。一是,function关键字和函数名之间有个星号;二是,函数内部使用yield语句,定义不同的内部状态。 function* helloGenerator(){ yield 'hello'; yield 'world'; return 'ending'; }var hw = helloGen
javascript清除浏览器缓存的几种方法 关于浏览器缓存浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能。但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数据。像股票类网站实时更新等,这样的网站是不要缓存的,像有的网站很少更新,有缓存还是比较好的。今天主要介绍清除缓存的几种方法。清理网站缓存的几种方法meta方法//不缓存 清理form表单的
CSS中block和inline的区别 总体概念1、block 块级元素,独立一块,会换行 inline 内联元素,前后不会换行,一系列内联元素在一行显示,直到排满 2、常见的块级元素:div,p,table,h1~h6,ul,li,ol 常见的内联元素:span ,img ,input ,lable,select,a 3、block可以包含block,inline,inline只能包含inline.注:P元素只能包含inlin
shim和polyfill shim一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现polyfill一个polyfill就是一个用在浏览器API上的shim.我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了
NPM Publish发布自己的模块 1、编写模块exports.sayHello =function(){ return 'Hello World'; } 保存为index.js2、初始化包描述文件$ npm init package.json{ "name": "wu_xx", "version": "1.0.1", "description": "wu_xx first demo", "
理解OAuth2.0 应用场景一个东西的诞生是为了解决一些问题。OAuth就是为了解决这些问题而诞生的。有一个”云冲印”的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让”云冲印”读取自己储存在Google上的照片。 问题是只有得到用户的授权,Google才会同意”云冲印”读取这些照片。那么,”云冲印”怎样获得用户的授权呢? 传统方法是,用户将自己的Google用户名和密码,告诉”云冲印
什么是RESTful架构 什么是RESTful架构(1)每一个URI代表一种资源; (2)客户端和服务器之间,传递这种资源的某种表现层; (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。“资源”表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。 举例来说,某个URI是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/po
ECMAScript 6简介 ECMAScript和JavaScript的关系一个常见的问题是,ECMAScript和JavaScript到底是什么关系?要讲清楚这个问题,需要回顾历史。1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,
setTimeout和setInterval亲密关系 setTimeout递归执行的代码必须是上一次执行完了并间格一定时间才再次执行 比仿说: setTimeout延迟时间为1秒执行, 要执行的代码需要2秒来执行,那这段代码上一次与下一次的执行时间为3秒. 而不是我们想象的每1秒执行一次.setInterval是排队执行的 比仿说: setInterval每次执行时间为1秒,而执行的代码需要2秒执行, 那它还是每次去执行这段代码, 上次还没执行完的
webstorm快捷键 Ctrl+/ 或 Ctrl+Shift+/注释(// 或者/*…*/ )Shift+F6重构-重命名Ctrl+X删除行Ctrl+D复制行Ctrl+G查找行Ctrl+Shift+Up/Down代码向上/下移动。F2 或Shift+F2高亮错误或警告快
Zepto.js对比Jquery.js 1、Zepto.js 是专门为现代智能手机浏览器退出的 Javascript 框架, 拥有和jQuery相似的语法, 但是和jQuery相比下来, 他有很多优点, 大小方面 , 压缩后的 zepto.min.js 大小只有21K, 使用服务器端 gzip 压缩后大小只有5~10K, 可以说非常的小, 但是功能很齐全, 多出来了一些触摸屏的事件 , 它唯一不支持的就是万恶的IE, 不过用它来开发iP
RequireJS学习指南 RequireJS中文网http://www.requirejs.cn/RequireJS优点模块化加载 防止JS加载阻塞页面渲染 基本APIRequireJS会定义三个变量。define,require,requirejs,其中require === requirejs。define用来定义模块require用来加载依赖模块,并执行加载后的回调函数define(function(){
javascript事件须知 转载http://gold.xitu.io/entry/57ac8028128fe10055a19f4d(一)事件绑定的几种方式javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定、在js代码中绑定。下面的方式1、方式2属于在html中绑定事件,方式3、方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法。方式1:HTML的DOM
技术总结-javascript(一) 事件click ,focus , blur ,input ,change ,toggle函数字符串转整型parseInt文本取值赋值$(“#id”).val(“value”); 元素内容赋值this.$el.html(““); self.els.chatListWrap.prepend(html); self.els.chatListWrap.append(html);字符串截断content
AutoResetEvent AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoRe