作用域是什么?

几乎所有的编程语言最基本的功能都是变量的存储和访问,正是这种变量的存储和访问的能力将状态带给了程序,而作用域的就是为了寻找和访问变量设计的一套规则。

理解作用域

在理解作用域前我们先来看一下程序的编译原理,大多数的程序的编译原理大概三个步骤:

分词/词法分析

这个过程会将有字符串组成的代码块,分解成一个一个的词法单元。例如var a = 2 ;会被分解为var,a,=,2,;

解析/语法分析

这个过程会将分解的词法单元进行组合,组成一个抽象语法树林(AST,Abstract Syntax Tree)

代码生成

会将抽象语法树转换成转为可以执行的代码,转为一组机器指令进行执行

有了上面的编译原理,我们就可以看看如何把var a = 2;这段代码如何在机器中进行解释

var a =2;在分词后重组为AST,语言编辑执行分为两步

  1. var a编译器询问作用域中的a变量,如果存在则返回变量地址,如果不存在则创建一个a变量
  2. a =2,在当前作用与中查询a变量,如果存在则返回变量地址,否则则创建一个,将数值2存储到变量a对应的地址中。

Yarn使用体验

yarn

10月份yarn正式发布,之前听说过一直也没用,刚好用一下看看,比较一下和npm的差异。

下面是yarn号称的优点:

  • 快,快,快,快,快
  • 安全得很
  • 可靠的很
  • 网络优化
  • 扁平模式,避免重复创建依赖文件

github使用SSH连接超时问题

操作系统换成arch linux后,突然发现github使用ssh无法连接了,使用ssh -T git@github.com 后一直没有反应,过了很久基本应该是超时了.
开始排查SSH配置问题,照着文档再来一遍还是不行,后台添加ssh的config:

1
2
3
4
HOST github.com
Hostname github.com
User git
Idenitify github

然后再试,好吧依然没有反应,然后试了一下gitosc的SSH连接发现正常,觉得是github的问题。正在不知道怎么办,看到了一篇文章说是github使用SSH连接需要使用443端口,好吧立马尝试。

1
2
3
4
5
HOST github.com
Hostname ssh.github.com
Port 443
User git
Idenitify github

stylus文档翻译 - 3.变量

变量

我们可能会定义一个变量,然后在样式中去使用它。

1
2
3
4
font-size = 14px
body
font font-siz Arial,sans-serif

编译为:

1
2
3
body{
font:14px Arial,sans-serif;
}

变量甚至可以组成表达式列表

1
2
3
4
5
font-size = 14px
font=font-size "Lucida Grande",Arial
body
font font,sans-serif

编译为:

1
2
3
body{
font:14px "Lucida Grande",Arial,sans-serif;
}

stylus文档翻译 - 2.选择器

选择器

缩进

Stylus看起来很神奇(因为缩进).在这里空格尤其重要,因为我们用缩进和减少缩进来替代了 {} ,就像下面的代码:

1
2
body
color white

它会编译成这样:

1
2
body
color:#fff

如果你愿意,你也可以使用毛和来分隔属性和值

1
2
body
color:white

stylus文档翻译 - 1.介绍

健壮的、动态的、富有表现力的CSS

CSS需要一个英雄

1
2
3
4
5
6
7
8
body {
font: 12px Helvetica, Arial, sans-serif;
}
a.button {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}

如果赶走括号

1
2
3
4
5
6
7
body
font: 12px Helvetica, Arial, sans-serif;
a.button
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;

weex学习笔记-2.weex的HelloWorld-起手式

回顾

之前说上一篇说了weex基本的环境搭建,那么现在可以开始写一个hello world来帮助开始项目的开发。

1.weex环境搭建


1.hello world

weex主要项目文件是.we文件,他一般包括三个部分:

  • template [必选]
  • style [可选]
  • script [可选]

如上面所标记的每个we文件必须包含一个template部分。顾名思义,template即是html代码部分,style就是css部分,script是js业务逻辑对应的部分,当然我过使用过却是发现这和.vue文件非常相似,而相似的地方不仅仅是这些,weex中前段部分大量借鉴了vue中的方式,学习过vue的童鞋书写起来也应该十分轻松即可上手,当然如果没学过在做weex先学习一下vue也是让你可以轻松上手。额外说一下vue的文档确实很好,十分清晰明了,weex也应该多多借鉴。

weex学习笔记-1.weex环境搭建

开始

weex在6月30日晚上已经正式开源(说是六月底果真是月底…),开始学习了不长时间,一遍学习也一边来总结一些相关的知识。

weex官网
weex文档


1.安装 weex-toolkit

首先需要做的就是安装weex-toolkit,这是weex的集成环境。

1
sudo npm install -g weex-toolkit

有了weex-toolkit就可以使用weex命令了

我使用的版本是0.3.3,这个可能变化的很快