<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Efficiency9的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Efficiency9</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Efficiency9]]></copyright><item><title><![CDATA[百度云天工平台+20行代码DIY一个智能家居环境监测站]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/81633718</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/81633718</guid><author>Efficiency9</author><pubDate>Mon, 13 Aug 2018 17:26:21 +0800</pubDate><description><![CDATA[1、准备清单

 


- 开发板

这里我选择的是一款叫做 NodeMCU 的开发板。这个是非常好用方便且便宜的物联网开发板，自带 USB 转串口芯片、WiFi 及多个 GPIO 接口，可连接多个传感器。硬件基于 ESP8266 构建，内置 WiFi 支持。

- 传感器 
我对精度要求不是很高，所以选择一款廉价的温湿度传感器——DHT11。可以用来测试环境温湿度，该传感器的的温度测量范围为 0...]]></description><category></category></item><item><title><![CDATA[error  in ./src/main.js     ✘  http://eslint.org/docs/rules/quotes  Strings must use singlequote]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/77896368</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/77896368</guid><author>Efficiency9</author><pubDate>Fri, 08 Sep 2017 16:36:32 +0800</pubDate><description><![CDATA[使用es6时报错;error  in ./src/main.js✘  http://eslint.org/docs/rules/quotes  Strings must use singlequote 
  /home/liangxiaodong/WebstormProjects/xiaodong/music-play/src/main.js:7:8 
  import “common/stylus]]></description><category></category></item><item><title><![CDATA[dependencies 与 devDependencies 的区别]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/77882388</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/77882388</guid><author>Efficiency9</author><pubDate>Thu, 07 Sep 2017 15:39:53 +0800</pubDate><description><![CDATA[npm在安装npm包时，有两个中命令参数可以把他们的信息放在package.json中 
1.–save 
2.–save-dev–save会把依赖包名称放到dependencies键下，–save-dev放到devDependencies键下 
devDependencies 下列出的模块，是我们开发时用的，比如 grunt-contrib-uglify，我们用它混淆 js 文件，它们不会被部署到]]></description><category></category></item><item><title><![CDATA[meta部分参数]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/77871840</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/77871840</guid><author>Efficiency9</author><pubDate>Wed, 06 Sep 2017 21:39:27 +0800</pubDate><description><![CDATA[<meta name="viewport"
          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">width：控制 viewport 的大小，可以指定的一个值，如果 600，或者特殊的值，如 device-width 为设备的宽]]></description><category></category></item><item><title><![CDATA[vue依赖webpack的环境配置（一）]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/77435165</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/77435165</guid><author>Efficiency9</author><pubDate>Sun, 20 Aug 2017 22:20:22 +0800</pubDate><description><![CDATA[创建项目$ mkdir [project name]
$ cd [project name]
$ npm init安装webpack、webpack-dev-server以及相关loader# 安装webpack，webpack-dev-server
$ npm install webpack
$ npm install webpack-dev-server
# 为项目安装其他依赖
$ npm i]]></description><category></category></item><item><title><![CDATA[子作用域和父作用域的事件传播]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/76270295</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/76270295</guid><author>Efficiency9</author><pubDate>Fri, 28 Jul 2017 17:17:23 +0800</pubDate><description><![CDATA[angular优秀特性之一–事件传播机制
$emit方法实现事件从子作用域路径到父作用域
<!DOCTYPE html>
<html lang="en" ng-app="eventModule">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../../angular.min.js"></sc]]></description><category></category></item><item><title><![CDATA[Angular之$apply和$digest]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/76264492</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/76264492</guid><author>Efficiency9</author><pubDate>Fri, 28 Jul 2017 15:48:12 +0800</pubDate><description><![CDATA[apply和apply和digest在angularjs中是两个核心概念，上篇探讨完$watch方法，作用主要用来监听数据的变化，并作出相应的反应，并且更新VIEW，但是还有一个问题，angular是如何知道数据发生了变化？ 
angular内置了digest循环，他会周期性的检查scope模型中的数据是否发生变化，在digest循环，他会周期性的检查scope模型中的数据是否发生变化，在diges]]></description><category></category></item><item><title><![CDATA[Angular之$watch方法监视作用域]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/76083187</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/76083187</guid><author>Efficiency9</author><pubDate>Tue, 25 Jul 2017 16:33:54 +0800</pubDate><description><![CDATA[在使用angular时，常常对作用域中的属性进行监视，当其发生改变时，作出相应处理，angular为我们提供了watch方法watch方法  
watch是对类型的属性进行监视，熟悉js就会知道，js语言中有七种数据类型
number
string
null
undefined
boolean
object
symbol  (ES6加入） 
以上其中数据类型中，又有基本类型和引用类型的区别（此处不做]]></description><category></category></item><item><title><![CDATA[node中的global、exports和module.exports]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/75947784</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/75947784</guid><author>Efficiency9</author><pubDate>Sun, 23 Jul 2017 19:57:00 +0800</pubDate><description><![CDATA[global
javascript一定会有一个顶层对象，在浏览器环境中，顶层对象是window，这意味着在浏览器中var something就会定义一个全局变量。而在node中，顶层作用域并不是全局作用域，在node模块中使用var something 只是就只局限在当前文件中的作用域中。node中的顶层对象是global，通过var 定义的变量也是global的属性。
global是什么？打开一个]]></description><category></category></item><item><title><![CDATA[Nginx服务器安装配置]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/75902754</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/75902754</guid><author>Efficiency9</author><pubDate>Sun, 23 Jul 2017 12:15:12 +0800</pubDate><description><![CDATA[本机为ubuntu16.04 
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器，也是一个IMAP/POP3/SMTP服务器。 
刚刚接触服务器知识，许多概念也是比较模糊，所以暂时不对其优势以及概念进行详细解释，我们先把其安装到我们电脑并让其正常运行。
安装方式 
官网下载 
http://nginx.org/en/download.html
wget下载 
wget htt]]></description><category></category></item><item><title><![CDATA[利用伪元素制作盒子阴影]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/75136728</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/75136728</guid><author>Efficiency9</author><pubDate>Fri, 14 Jul 2017 21:04:35 +0800</pubDate><description><![CDATA[本文参考https://paulund.co.uk/learn-css-box-shadow 
因为box-shadow和:before以及:after没有什么值得深度剖析的方式，在去解释也不会让自己学到太多东西，如果对伪元素不太熟悉可以参考这个地址（http://blog.jobbole.com/49173/），以下代码也没有什么很绕的逻辑<!DOCTYPE html>
<html lang="e]]></description><category></category></item><item><title><![CDATA[Canvas之绘制字符串]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/75007838</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/75007838</guid><author>Efficiency9</author><pubDate>Wed, 12 Jul 2017 11:53:10 +0800</pubDate><description><![CDATA[上篇我们我们已经了解完了canvas绘制基本图形（除了圆形）的知识，这一篇我们将了解到canvas如何绘制字符串的方法。 
在绘制字符串时也有两个属性 
字符串属性 
 - fillText(String Text, float x, float y, [float maxWidth])    填充字符串 
 - strokeText(String Text, float x, float y, []]></description><category></category></item><item><title><![CDATA[css动画之animation]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/74887229</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/74887229</guid><author>Efficiency9</author><pubDate>Sun, 09 Jul 2017 15:15:05 +0800</pubDate><description><![CDATA[相对于脚本驱动动画的优势
更加快捷方便
在中等系统中加载性能比js好
将动画序列交给浏览器控制，让浏览器对性能优化
animation的配置 
我们使用animation属性及其子属性对需要应用动画的元素进行设定，但是实际的展现形式将在@keyframe中定义子属性 
animation-name：动画名称（在@keyframes时使用） 
animation-duration:完整动画的周期 
a]]></description><category></category></item><item><title><![CDATA[翻书效果]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/74857997</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/74857997</guid><author>Efficiency9</author><pubDate>Sun, 09 Jul 2017 11:14:49 +0800</pubDate><description><![CDATA[<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            tex]]></description><category></category></item><item><title><![CDATA[Canvas入门]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/74852438</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/74852438</guid><author>Efficiency9</author><pubDate>Sat, 08 Jul 2017 19:40:18 +0800</pubDate><description><![CDATA[是什么 
canvas–画布，canvas是HTML5的一个标签 
用来定义图形，提供了强大的图片处理功能，但是需要注意的是canvas并不绘制图形，只是一张画布，我们要通过脚本在上面绘制图形。能做什么 
基本图形绘制（直线、三角形、矩形、图标等） 
文字绘制 
图形变形和图片合成 
图片以及视频的处理 
动画实现 
小游戏制作IE8及以下不支持canvas标签如何定义画布 
 - 在html中引入]]></description><category></category></item><item><title><![CDATA[css动画之transition]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/74332544</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/74332544</guid><author>Efficiency9</author><pubDate>Tue, 04 Jul 2017 16:45:30 +0800</pubDate><description><![CDATA[用途 
用于控制页面中元素的变化速度特点 
需要用户触发（和animate最大的的区别）解决问题      .change{
    width:100px;
    height:100px;
  }
  .change:hover{
    width:200px;
    height；100px;
  }如以上代码所示，我们把鼠标hover在元素上时，元素宽度瞬间变成200px，减少了用户体]]></description><category></category></item><item><title><![CDATA[具名函数和匿名函数]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/74012351</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/74012351</guid><author>Efficiency9</author><pubDate>Fri, 30 Jun 2017 21:34:17 +0800</pubDate><description><![CDATA[废话不说，先上代码
具名函数
var a = 2;
function foo() {
var a = 3;
console.log( a ); //3
} 
foo(); 
console.log( a ); // 2虽然这种技术可以解决一些问题,但是它并不理想,因为会导致一些额外的问题。首先, 
必须声明一个具名函数 foo() ,意味着 foo 这个名称本身“污染”了所在作用域(在这个例子中是全]]></description><category></category></item><item><title><![CDATA[css编写]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/73913568</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/73913568</guid><author>Efficiency9</author><pubDate>Thu, 29 Jun 2017 15:42:49 +0800</pubDate><description><![CDATA[css编写简单，但是初期的结构设计，以及后期的代码维护，是一件很麻烦的事情。 
css的两种类名方式
语义化类名 
根据模块给html起名字，比如ueser-info，menu-wrap
视觉类名 
根据视觉风格呈现的代码，比如red、big
-OOCSS（Object Oriented CSS）面向对象的css
是什么：是一种容易重新使用的css规则，简单来说，就是定义一个css样式，我们可以再h]]></description><category></category></item><item><title><![CDATA[文字如何与单选框垂直对齐]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/73833450</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/73833450</guid><author>Efficiency9</author><pubDate>Wed, 28 Jun 2017 11:09:41 +0800</pubDate><description><![CDATA[今天写代码，写到单选框部分，发现更改完字体和单选框大小之后，两者就不对齐了。代码如下.type-1{
            font-size: 20px;
        }
        input{
            width: 20px;
            height: 20px;
        }
<div class="choosetype">
        <s]]></description><category></category></item><item><title><![CDATA[z-index的负值使用]]></title><link>https://blog.youkuaiyun.com/Efficiency9/article/details/73740684</link><guid>https://blog.youkuaiyun.com/Efficiency9/article/details/73740684</guid><author>Efficiency9</author><pubDate>Mon, 26 Jun 2017 15:40:52 +0800</pubDate><description><![CDATA[有时候遇到这种情况，一个页面中我们设置了header和背景图， 
这个时候我们不想把背景图的图片放到header标签前，应该怎么办代码实例 
html<div class="d1"></div>
<div class="d2"></div>css.d1{
           width: 100px;
           height: 100px;
           background-]]></description><category></category></item></channel></rss>