自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 如何在生产环境禁用 React Developer Tools 插件

无意间注意到,React 开发的页面在生产模式下依然会受到 React Developer Tools 浏览器插件的 “关照” ,安装此插件的浏览器可以像在开发环境下一样查看页面的组件结构和状态数据,同时还会额外加载一个 500k+ 大小的 js 文件。但目前问题带来的影响较小,所以一些线上的网站比如:知乎、阿里云等都没有做处理。本文带你抽丝剥茧找出症节所在,并用三行代码精准解决此问题。

2022-10-21 17:52:10 1397

原创 明明白白用 Git

前言:Git 的使用方式可能有三种:命令行、 IDE 集成和 GUI 工具,用命令行的大神艺高人胆大,或许早把 Git 熟悉的跟自家后院一样,此类大神您可先行离开。 IDE 和 GUI 工具将常用的 Git 操作大大简化,让新手误以为它就是这么“简单”,但涉及到具体问题时又一头雾水,为什么 commit 之前需要 add ?切换分支的时候到底发生了什么?push 和 fetch 有什么区别?这种尴尬的局面令你人无法发挥Git 的最大威力。接下来咱们不谈 Git 与 svn 的区别,不谈 Git 的安装与入

2020-07-30 14:59:32 178

原创 仿MIUI计时器+圆形SeekBar+钟表表盘UI 三位一体式自定义View

废话不多说,先上效果图,然后整体代码,再细细说来—-/** * 提供类似小米计时器、表盘两种外观的控件 * 使用方法:先定义容器布局,再通过CircularTimePicker(Context context, int srcId,ViewType viewType)方法构造对象 * viewType 为该控件的外观(计时器式和表盘式) * int srcId 是拖动手柄的图片资源I

2015-05-05 18:18:05 2168 1

原创 JS标准库之Array

slice(start,end )提取目标数组的一部分数据,并以新数组返回,start与end含头不含尾,原数组保持不变. 如果省略参数,则返回原数组的拷贝.参数也可以是负数,表示倒数计算的位置.如果start大于等于数组长度,或者end小于start 则返回空数组.slice方法一个重要应用是将类数组的对象转换为真正的数组.Array.prototype.slice.call ( { 0:'a',1:'b' } ); // ['a','b']splice( )用于删除原数组的一部分成员,并

2020-11-20 11:01:21 146

原创 为什么会有 React-Hooks

React-Hooks 是什么?它是因为什么原因出现的?React-Hooks 是一系列能够使函数式组件更强大、更灵活的“勾子”,(至于说这个“勾子”,我的理解是这样的:用户编写好相关的逻辑代码传入框架,之后由框架在适当的时机调用);React-Hooks 出现的原因自然是为了丰富函数式组件的功能,使函数式组件在一定程度上具有替换类组件的能力。那 React 为什么那么推崇函数式组件呢?相对于类组件,函数式组件有以下几个特点。函数式组件更符合函数式编程的理念;函数式组件更轻量,一般情

2020-11-20 10:54:26 588

原创 React 组件间的数据流动

1、一般而言在简单的应用场景下,有下面两种方式实现组件间的通信通过 props 传递直接向子组件添加 props 属性即可,这种方式简单便捷,但只适用于父组件向直接子组件传递数据,遇到组件层级较深或者同级组件有通信需求的场景时就显得比较麻烦;由于 React 讲究单向数据流,子组件无法向父组件直接传递数据,通常的方法还是通过 props 属性向子组件传递回调方法,子组件调用回调方法时可传入相应参数以实现通知父组件的目的。订阅-发布 模式在涉及到组件层级较深或者同级组件有通信需求的场景时,

2020-11-19 10:14:07 237

原创 彻底弄清React组件的生命周期

生命周期是学习React开发的第一关,从 React 15 到 React 16 官方对生命周期做出了一些调整,这里先总结一下两个版本不同,然后再深层分析内部原因。

2020-11-17 18:41:10 148

翻译 JavaScript 的运行上下文和执行栈

在这往篇译文中,将会深入探讨 JS 最基础的一部分:Excution Context ,目的是理解 JS 引擎的运行,为什么一些函数和变量可以在声明之前就可以使用,并且他们的值是怎么确定下来的。什么是运行上下文?js 代码执行的时候,运行环境尤为重要,一般被概括为以下三种:全局环境 : 代码第一次运行的默认环境函数环境 : 执行到函数体的时候Eval 环境 : eval 函数所执行的文本我们把术语 “运行上下文” 看成是当前代码所在的 “环境/作用域”。下面看一个包含全局和函数上下文的例子

2020-08-06 18:12:50 220

原创 DOM-document-element-event

document节点对象代表整个文档,每张网页都有自己的document对象。window.document属性就指向这个对象。只要浏览器开始载入 HTML 文档,该对象就存在了,可以直接使用。document对象有不同的办法可以获取。正常的网页,直接使用document或window.document。iframe框架里面的网页,使用iframe节点的contentDocument属性。...

2019-12-12 10:27:06 211

原创 JS的面向对象浅析

与其它OOP语言 (C++ Java)不同,JS 中没有class 的概念, JS中的对象是以构造函数和原型链作为模板的.构造函数类似于普通的函数,但是有其特点,一般约定函数名首字母大写,函数体中有this, 带表生成的对象实例.生成对象时,必须使用 new 命令.New 命令基本用法new 命令的作用就是执行构造函数,返回一个实例对象.var Vehicle = function...

2019-12-08 21:12:29 143

原创 标准库之JSON对象

JSON格式每个JSON对象就是一个值,可能是一个数组或对象,也可能是一个原始类型的值,只能是一个值,不能是两个或更多的值.JSON 对值的类型和格式有严格的规定复合类型的值只能是数组或者对象,不能是函数/正则表达式对象/日期对象.原始类型的值只有四种: 字符串/数值(十进制)/布尔值和null,不能使用Nan , Infinity, -Infinity , undefin...

2019-12-06 22:01:26 141

原创 正则表达式与其匹配规则

字面量字符和元字符大部分字符在正则表达式中,就是字面的含义,比如 /a/ 匹配 a , 就像这种,字符只表示它字面的含义,那么它们就叫做”字面量字符”/dog/.test(‘old dog’) // true除了字面量字符以外,还有一部分字符有特殊含义,不代表字面的意思,被称为元字符,主要有以下几个:(1) 点字符 (.)点字符匹配 除了回车(\r) 换行(\n) 分隔符(\u202...

2019-12-05 11:03:41 1271

原创 标准库-Number/String

Number.prototype.toLocaleString( )接受一个地区码作为参数返回对应地书定形式的字符串,另外还接受第二个参数对象,这个对象的style属性指定输出样式,默认值是 decimal(123).toLocalString(‘zh-Hans-CN’,{style:percent}) //“12,300%”如果属性的值为currency,则可以搭配 currency 属性...

2019-12-05 11:02:40 103

原创 JS标准库之Array

slice(start,end )提取目标数组的一部分数据,并以新数组返回,start与end含头不含尾,原数组保持不变. 如果省略参数,则返回原数组的拷贝.参数也可以是负数,表示倒数计算的位置.如果start大于等于数组长度,或者end小于start 则返回空数组.slice方法一个重要应用是将类数组的对象转换为真正的数组.Array.prototype.slice.call ( { ...

2019-12-05 10:59:26 111

原创 标准库之Object对象

JS原生提供Object对象,它的原生方法分为两类:Object本身的方法与Object的实例方法.Object既可以当做普通方法用 Object(vars)目的是把vars转换为对象转换规则:如果参数是对象则原样返回,如果是原始类型,则转换为各自对应的包装对象.也可以当做构造方法使用 new Object();来生成新对象.用法与上面的普通方法调用相同.只不过语义不一样:Obje...

2019-12-05 10:49:20 295

原创 Js冷知识之函数与作用域

JavaScript中的作用域在Js中,只有两种作用域,全局作用域和函数作用域,ES6中又添加了块级作用域.对于顶层函数来说,函数外部声明的变量就是全局变量,可以在函数内部读取.函数执行时,所在的作用域,是定义时的作用域,而不是调用时所在的作用域.函数内部的变量提升与全局作用域一样,函数作用域内部也会产生变量提升的现象,var命令声明的变量不管在什么位置,声明都会被提升到函数体的头...

2019-12-05 10:48:15 131

原创 Js冷知识之数组

length属性JavaScript使用一个32位整数保存元素个数,也就是说,length属性的最大值是4294967295.只要是数组,就一定有length属性,它的值就是动态的,等于键名中最大的整数加上1.因为本质上,数组是一种特殊的对象,typeof 运算符会返回数组的类型是object 它的特殊性体现在它的键名是按次序排列的一组整数(0,1,2,...),数组成员的键名是固定的...

2019-12-05 10:46:47 159

原创 js冷知识之运算符

且运算符(&&)它往往用于多个表达式的求值,运算规则如下:如果第一个运算子的布尔值 为true,则返回第二个运算子的值(注意不是第二个运算子的布尔值);如果第一个运算子的布尔值为false ,则直接返回第一个运算子的值(注意也不是布尔值),不再对第二个运算子求值.异或运算有一个特殊运用,连续对两个数a 和 b进行三次异或运算,可以互换他们的值a^=b b^=a a^...

2019-12-05 10:45:22 148

原创 JavaScript冷知识之数据类型

数据类型强制转换之Number( )对于原始类型来说,此方法比 parseInt方法要严格,虽然两者都能去掉目标中的前后空格,但Number( )执行转换过程中但凡有一个字符不能转换为数字就返回NaN.对于复合数据类型(object) 会先判断object.valueOf()返回的是否是原始类型,如果是就按原始类型转换,否则调用object.toString()方法,假如toString方...

2019-12-05 10:42:27 114

翻译 添加Android的ActionBar

1:添加ActionbarActionbar是可以引入到你Activity中的最重要的设计元素之一,它通过提供若干用户接口,和使app之间看起来连贯的方式使你的用户对你App快速熟悉起来。它的关键功能点包括:指示用户当在App中的所处位置;以一种可以预见的方式打开重要的功能(比如搜索);支持页面导航和页面切换(带Tab页和下拉列表)。1.1

2015-04-22 15:11:53 1004

翻译 Android屏幕适配与版本适配

兼容不同的屏幕大小Supporting Different ScreensAndroid中设备的屏幕通过两种方式分类 :尺寸和分辨率四种通用的尺寸:small, normal, large, xlarge----这些对应于布局四种通用的分辨率:low(ldpi), medium(mdpi), high(hdpi), extra high(xhdpi)--

2015-04-22 15:08:35 874

翻译 Android 中的数据存储

以下是Android中最主要的三个数据存储方案:1、在sharedpreferences文件中存储简单数据类型的键值对。2、在Android文件系统中存储2进制文件。3、用SQLite管理的数据库。一、存储键值对集合SharedPreferences sharedPref = context.getSharedPreferences(

2015-04-22 15:06:09 383

翻译 Android 中的样式与主题

Styles and Themes一、样式:指定View或者Window的外观和格式的属性集合,这些属性包括:height/pading/font color/font size/background color 等等。样式被定义在XML资源文件中,这些资源文件从LayoutXML文件中分离而来。一般情况下,Layout文件中的TextView是这样写:

2015-04-22 15:05:33 451

翻译 Fragment --- 用Fagment创建动态UI

Fragment就像是一个嵌套的Activity,有自己的布局,能管理自己的生命周期。         当Fragment指定自己的布局后,在同一个Activity中,就能与其它的Fragment相互组合,产生出一种布局上的配置,这种配置能随着手机屏幕的大小而自动调整,(比如,在小屏手机上显示两个Fragment,在大屏手机上能显示两个 Fragment)。一、创建一个

2015-04-22 15:02:52 536

翻译 重新认识Activity生命周期方法

取决于你应用的复杂度,可能不必实现每个周期方法,但是,理解每一个方法能保证你的应用能按照使用者的期望来运行。      正确并合适的实现周期方法有以下好处:          1、当有电话进来或者切换到其它应用的时候,你的应用不会崩掉;2、应用关闭后,不会再占用系统资源;3、用户离开后再返回应用时,不会丢失进度;4、手机进行横竖屏切换的时候不会崩掉或者丢失进度 。

2015-04-22 15:02:20 382

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除