<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[待花开花谢的博客]]></title><description><![CDATA[博客内容均为移动开发历程中的积累总结。]]></description><link>https://blog.youkuaiyun.com/u010730897</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010730897]]></copyright><item><title><![CDATA[flex布局兼容写法]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/87907201</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/87907201</guid><author>u010730897</author><pubDate>Sun, 24 Feb 2019 20:24:53 +0800</pubDate><description><![CDATA[.flex {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
}

.flex-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    fl...]]></description><category></category></item><item><title><![CDATA[Koa2 路由拆分成多文件]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/81741355</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/81741355</guid><author>u010730897</author><pubDate>Thu, 16 Aug 2018 14:41:56 +0800</pubDate><description><![CDATA[在使用koa-router的时候会遇到路由的配置，虽然基本的配置很简单，但是当我们的业务越来越复杂，涉及到的路由也越来越多，最开始的单文件路由配置就难以维护了。所以我们需要将路由根据模块进行拆分，从而根据模块配置相应的路由。

但是我们一般在进行拆分的时候可能会遇到下面这样的用法，这属于常规用法，但是模块多了也就不怎么好看了。



app.use(A.routes())
app.use(A.al...]]></description><category></category></item><item><title><![CDATA[使用CSS3自定义属性实现换肤功能]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/81116958</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/81116958</guid><author>u010730897</author><pubDate>Thu, 19 Jul 2018 15:55:50 +0800</pubDate><description><![CDATA[开始之前先说说css3的自定义属性，之前我们在写css的时候全部都是使用自身属性，比如margin,padding等。但是你曾是否见过这样的css



:root{
    --primary-color:#989898;
    --light:#fff;
    --dark:#000;
}

其中的–primary-color、–light、–dark就是自定义的属性。


自定义属性的命...]]></description><category></category></item><item><title><![CDATA[react-native从头开始封装三方sdk（二）]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/80881611</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/80881611</guid><author>u010730897</author><pubDate>Mon, 02 Jul 2018 10:56:40 +0800</pubDate><description><![CDATA[完成了第一步，下面开始飞。 
以集成腾讯信鸽推送为例

注册信鸽申请应用等按照腾讯文档来即可。（注意包名要是app的包名不是library的包名）

ps:按照手动配置的方式出现support-v4重复引用问题，尝试多种方式没有解决。暂且放弃。

使用jcenter配置的方式

最终配置结果： 
testlibrary下的build.gradle



apply plugin: 'com.and...]]></description><category></category></item><item><title><![CDATA[react-native从头开始封装三方sdk（一）]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/80881517</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/80881517</guid><author>u010730897</author><pubDate>Mon, 02 Jul 2018 10:50:54 +0800</pubDate><description><![CDATA[1.新建项目demo



react-native init demo
cd demo
react-native run-android(想尽一切方法把项目跑起来，这一步都过不了的话后面就不用看了)



2.工欲善其事，必先利其器。要想飞我们先学会爬。

我们先实现JS调用原生方法



（1）使用Android Studio打开demo-&amp;gt;android





（2）新建一个Mod...]]></description><category></category></item><item><title><![CDATA[如何创建一个Progressive Web Apps应用程序]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79280316</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79280316</guid><author>u010730897</author><pubDate>Mon, 19 Mar 2018 11:08:12 +0800</pubDate><description><![CDATA[这篇文章主要介绍怎么创建一个PWA程序。首先听说bootstrap4非常好，那我们就把bootstarp4项目变成我们的PWA程序。

顺便推荐一个node插件live-server，用来当做本地服务器运行你的项目。Vs Code也可以安装此插件。

第一步：拥有一个web页面

为了展示效果我们从https://startbootstrap.com/下载一个模板。随便下载一个模板，修改项目名称为...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-使用Firebase Cloud Messaging实现推送通知]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79278054</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79278054</guid><author>u010730897</author><pubDate>Mon, 19 Mar 2018 11:07:19 +0800</pubDate><description><![CDATA[Chrome目前使用Firebase云消息传递（FCM）作为其推送服务。 FCM最近采用了Web Push协议。 FCM是Google云消息传递（GCM）的后续产品，支持相同的功能和更多功能。

要使用Firebase云消息传递，您需要在Firebase上设置项目（请参阅VAPID部分以绕过此步骤）。 大致流程如下：

1、在Firebase控制台中，选择创建新项目。 
2、提供项目名称，然后单击...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-Push Notifications]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79272480</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79272480</guid><author>u010730897</author><pubDate>Mon, 19 Mar 2018 11:06:23 +0800</pubDate><description><![CDATA[PWA的推送是基于Notifications API 和 Push API，Notifications API让应用程序向用户显示系统通知。 Push API允许service worker处理来自服务器的推送消息，即使应用程序处于不活动状态。

推送通知术语


通知 - 在应用的普通用户界面（即浏览器）之外向用户显示的消息，
推送消息 - 从服务器发送到客户端的消息
推送通知 - 为响应推送消...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-Indexed DB]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79269963</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79269963</guid><author>u010730897</author><pubDate>Mon, 19 Mar 2018 11:05:48 +0800</pubDate><description><![CDATA[在使用的过程中我们通常使用cache缓存html、css、js等文件信息，但是一些特殊的数据需要我们借助数据库的支持，这里推荐使用IndexedDB。

IndexedDB是一个大型的noSQL存储系统。 它使您可以在用户的浏览器中存储任何内容。 除了通常的搜索，获取和存储操作之外，IndexedDB还支持事务。

检查浏览器是否支持IndexedDB



if (!('indexedDB' i...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-Fetch API]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79267988</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79267988</guid><author>u010730897</author><pubDate>Mon, 19 Mar 2018 11:05:11 +0800</pubDate><description><![CDATA[简单来说Fetch API就是一个请求资源的接口，比XMLHttpRequest更简单。 
Fetch支持跨源资源共享（CORS），正式环境需要HTTPS。

请求示例：



fetch('examples/example.json')
.then(function(response) {
  if (!response.ok) {
    throw Error(response.status...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-使用Cache API]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79267608</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79267608</guid><author>u010730897</author><pubDate>Mon, 12 Mar 2018 16:00:39 +0800</pubDate><description><![CDATA[上篇文章介绍了文件的缓存，这里我们介绍一下Cache API的属性和方法。

检查浏览器是否支持Cache API



if('caches' in window){
  //支持
}

创建缓存



caches.open('example-cache').then(function(cache) {
        //创建一个名为example-cache的缓存并返回一个cache对象
...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps(PWA)核心技术-Cache API]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79262237</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79262237</guid><author>u010730897</author><pubDate>Mon, 12 Mar 2018 15:58:06 +0800</pubDate><description><![CDATA[Service Worker API带有一个Cache接口，可以让您创建按请求键入的响应存储。 缓存资源的常见模式有：service worker安装、用户交互、网络响应。

1、在service worker安装的时候缓存应用程序脚本 
我们可以在这里缓存Html、css、js等一些静态资源。



self.addEventListener('install', function(event)...]]></description><category></category></item><item><title><![CDATA[Progressive Web Apps（PWA）介绍]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/79257234</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/79257234</guid><author>u010730897</author><pubDate>Wed, 07 Feb 2018 11:43:52 +0800</pubDate><description><![CDATA[Progressive Web App的介绍：

Progressive Web Apps（PWA）是一个结合了最好的web和app经验的渐进式网络应用程序。它对用户来说是非常有用的，它不需要安装，只需要从浏览器标签开始访问。随着用户与app建立的关系，它变得越来越强大。即使在片状网络上，它也可以实现快速加载，并发送相关推送通知。它可以在主屏幕上创建图标，并加载为顶级全屏体验。





Prog]]></description><category></category></item><item><title><![CDATA[Cordova真机测试之GapDebug]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/78401771</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/78401771</guid><author>u010730897</author><pubDate>Thu, 02 Nov 2017 13:38:13 +0800</pubDate><description><![CDATA[相信很多ionic的开发者一般的调试方式都是采用的Chrome的真机调试（chrome://inspect）进行的调试的，或许有很多人为了不麻烦还是采取的改一点，然后打包alert()。毕竟我大多数时候都是这样。 
这里我推荐大家使用一款专门用于phonegap（cordova前身）的调试工具GapDebug。GapDebug介绍GapDebug，是为混合移动开发人员提供免费的调试和应用管理平台。它]]></description><category></category></item><item><title><![CDATA[异步模式之JS、Promise、RXJS]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/78390992</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/78390992</guid><author>u010730897</author><pubDate>Mon, 30 Oct 2017 10:56:25 +0800</pubDate><description><![CDATA[在我们的开发过程中经常会遇到一个问题：一个方法需要在另一个方法执行结束之后才开始执行。这就是我们所说的异步。现在我们假设有两个方法分别为fn1(),fn2();且fn2()在fn1()执行完后才开始执行。JavaScript实现使用setTimeout延迟2s执行fn2(),使用这种方式有个缺点是fn1()的执行时间不可控，而且如果fn2()需要fn1()的结果作为参数的话，这样可能会导致整个流程混]]></description><category></category></item><item><title><![CDATA[ionic3 从UIWebView升级到WKWebView（翻译）]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/78280700</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/78280700</guid><author>u010730897</author><pubDate>Thu, 19 Oct 2017 09:49:56 +0800</pubDate><description><![CDATA[在iOS中，现在已经有两个网页浏览器，UIWebView和WKWebView。Ionic应用程序已经在历史版本中使用UIWebView，但之后不再使用。 Ionic现在在构建iOS时默认使用WKWebview。我们坚信，WKWebview是任何应用程序的最佳选择，因为它具有对旧版本的Webview（UIWebView）的许多改进。 这些功能包括：
JIT将JS代码转换为机器代码，运行速度更快
改善了]]></description><category></category></item><item><title><![CDATA[Ionic3 透明导航栏、渐变导航栏]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/78189364</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/78189364</guid><author>u010730897</author><pubDate>Tue, 10 Oct 2017 09:59:33 +0800</pubDate><description><![CDATA[在ionic中实现透明导航栏非常简单，主要用到三个属性:1、no-border2、transparent3、fullscreen先来看看效果图： 
 
实现代码：<ion-header no-border>//加入no-border让header无边框
    <ion-navbar transparent>//加入transparent让header透明
        <ion-title>]]></description><category></category></item><item><title><![CDATA[spring boot常用的依赖]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/78188729</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/78188729</guid><author>u010730897</author><pubDate>Tue, 10 Oct 2017 09:06:23 +0800</pubDate><description><![CDATA[名称
  描述
  Pom  spring-boot-starter-thymeleaf
  使用Thymeleaf视图构建MVC Web应用程序的启动器
  Pom
  spring-boot-starter-data-couchbase
  使用Couchbase面向文档的数据库和Spring Data Couchbase的启动器
  Pom
  spring-boot-starter-arte]]></description><category></category></item><item><title><![CDATA[Ionic2像使用字体图标一样使用png图标等]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/76975907</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/76975907</guid><author>u010730897</author><pubDate>Wed, 09 Aug 2017 11:10:13 +0800</pubDate><description><![CDATA[在前面写了一篇文章是关于在ionic中使用iconfont的，但是在实际的开发过程中会发现，前端设计的很多图标都是png或者jpg的，无法像使用字体图标一样进行使用。 
但是我们一般使用png这样的图标的时候都是使用img标签或者是某标签给它加上background-image的方式。 
如果我们想要像使用字体图标那样使用png图标我们可以按照下面的方式操作。比如我们要自定义一个load图标 
先在]]></description><category></category></item><item><title><![CDATA[Cordova 实现沉浸式（透明）状态栏效果]]></title><link>https://blog.youkuaiyun.com/u010730897/article/details/74450922</link><guid>https://blog.youkuaiyun.com/u010730897/article/details/74450922</guid><author>u010730897</author><pubDate>Wed, 05 Jul 2017 15:04:31 +0800</pubDate><description><![CDATA[沉浸式状态栏（Immersive Mode）和透明状态栏（Translucent Bar）。这两个概念很多地方的解释都不是很清晰，所以导致很多人都各有各的认识。所以这里我也有一个自己的认识，笔者认为沉浸式状态栏也可以说是全屏模式，即隐藏状态栏与导航栏。 而透明状态栏是不隐藏状态栏但是它所呈现的是透明的。因为默认情况下状态栏都是黑底白字。而我们现在要实现的就是透明状态栏下的全屏模式。话不多说，看效果：]]></description><category></category></item></channel></rss>