02月04, 2018

React 导读(二)

前言

在上篇文章React 导读(一)中学习到了写第一个 Web 组件,这篇文章将继续之前的目录,开始新的知识点补充:

  1. [x] React 如何编写 Hello World!
  2. [x] React 中三个最基础、最重要的东西
  3. [x] React 中的 JSX
  4. [x] 你的第一个 Web 组件
  5. [ ]React 中最开始需要关注的生命周期
  6. [ ]React 一个组件集合的简单交互
  7. [ ]React 开始一个项目的一点建议
  8. [ ]React 简单的项目结构组织

阅读全文 »

02月01, 2018

React 导读(一)

前言

写这篇文章的主要目标是让初学者更快的上手 React 的项目开发,能有一个循循渐进的理解过程,第一次写较基础类的,有不太好的地方希望能直接指出来。需要有一定的 JavaScript 基础和 NPM 的使用经验。不多说了,下面会按这个顺序进行介绍:

  1. React 如何编写 Hello World!
  2. React 中三个最基础、最重要的东西
  3. React 中的 JSX
  4. 你的第一个 Web 组件
  5. React 中最开始需要关注的生命周期
  6. React 一个组件集合的简单交互
  7. React 开始一个项目的一点建议
  8. React 简单的项目结构组织

阅读全文 »

12月28, 2017

组件化通用模式

一、前言

模式是一种规律或者说有效的方法,所以掌握某一种实践总结出来的模式是快速学习和积累的较好方法,模式的对错需要自己去把握,但是只有量的积累才会发生质的改变,多思考总是好的。(下面的代码实例更多是 React 类似的伪代码,不一定能够执行,函数类似的玩意更容易简单描述问题)

二、前端的关注点迁移

这篇文章主要介绍现在组件化的一些模式,以及设计组件的一些思考,那么为什么是思考组件呢?因为现在前端开发过程是以组件为基本单位来开发。在组件化被普及(因为提及的时间是很早的或者说有些厂实现了自己的一套但是在整个前端还未是一种流行编写页面的单元)前,我们的大多数聚焦点是资源的分离,也就是 HTML、CSS、JavaScript,分别负责页面信息、页面样式、页面行为,现在我们编程上的聚焦点更多的是聚焦在数据组件

阅读全文 »

09月05, 2017

小撸网站暂时恢复HTTP

问题

由于最近证书认证次数太多,导致一直刷新认证时间不成功...暂时先恢复 HTTP 访问~

nginx 之前由于配置了 301 的永久跳转,如果还会重定向到 https 网站,那么请清理下缓存吧 = = 服务器不是特别熟悉,很抱歉,不过讲道理 https 那边应该是 404 ~以后都先用 302 用稳定了再使用 301。

遇到两个问题记录一下

一、多次重定向,提示清理 Cookie

nginx 由于浏览器的记忆功能,今天产生过 http <=> https 反复重定向的问题,主要的解决方案是在 nginx.conf 中配置一个临时的 rewrite 规则,我的配置是:

rewrite ^(.*)$ http://<your_domain>.com$1?http;

这样就可以防止跳转死循环,然后欺骗之前的重定向行为过后,再删除这条配置,重新 reload 一下配置即可。

二、reload: Job is not running: nginx

这个主要是 nginx 进程占用的问题,需要先 kill 掉关联的任务。主要需要执行下面的命令:

// 1. 注意是要对应端口号
sudo fuser -k 80/tcp
sudo fuser -k 443/tcp

// 2. 测试下配置
sudo nginx -t

// 3. 重启下 nginx,这里使用服务的方式
sudo service nginx restart

// 4. reload 一下测试一下,没有直接输出就对了
service nginx reload

// 5. 看下上次返回
echo $?

参考的地址:

多次重定向

nginx reload fail

阅读全文 »

07月30, 2017

Typedoc

Typedoc 这是一个 TypeScript 项目的文档生成工具,类比 jsdoc。下面使用一个简单的例子来介绍一下这个工具。如果不想看文章的可以直接看下代码配置其实就能理解了~不过后面有介绍一些配置过程中的问题。栗子代码

阅读全文 »

04月03, 2017

React + Rx 模仿 Angular 模式

一、前言

其实对于软件开发模式来说,Angular 有着整套的一条龙服务,而 React 只是单纯的解决 View 层的问题,如果只是使用 React 开发项目会或多或少有点麻烦。下面主要讨论下数据层的东西,之前出了一个 mobx 来解决这个问题,但是这里想换个思路套用一下。其实 mobx 主要是声明了 @action, @computed, @observable 等元素来做到将 Store 作为一个可监控的源头,自动做到 VM 的效果,下面我也是,不过我采用 Rx 来做这个事情,简单利用下这种思想,能不能不污染我的原始数据(因为如果是双向的一种数据结构,那么就会被包装成监听类型的数据结构),这样我们调试的时候依然看到的是清晰的数据,并且还可以解决最初 Flux 库的一些麻烦,经过 Rx 改造的结果,可能比 mobx 的可测试性更好一些,具体就不说了,先谈 DEMO。

如果不想看文章的可以直接看代码 GitHub

阅读全文 »

03月03, 2017

Rx 的编程方式(一)

1. Observables & Reactive

先来一个简单直观的例子:

const { Observable } = require("rxjs");

const source$ = Observable.of([1, 2, 3]);
source$.subscribe(x => console.log(x));

过滤器节点:subscribe

2. Declarative Transformation( 声明式转换 )

如果我们想要平时开发的数据转换功能,可以使用一些类似管道的工具来做。

Observable.of(1, 2, 3)
    .map(n => n * 2)
    .subscribe(x => console.log(x));

过滤器节点:map、subscribe。我所理解的就像一条溪流流动的水,然后 map 这类 API 就像水桶,将水装入进行加工,当然,其他 map 的特性先不用细致了解。

3. Lazy Transformation( 懒执行透明特性 )

Observable 能够在流动的过程中进行选择,所谓的懒特性就是不会像 Promise 一样,给了一个数据承认,就一定会让你接受,你可以选择不接受或者现在不接受,先这样子理解。

阅读全文 »

02月16, 2017

编程

Everybody in this country should learn how to program a computer, because it teaches you how to think. - Steve Jobs

作为乔帮主的粉,很认同他对于自己产品热爱的那份情感。对于编程也一样,如果没有兴趣是肯定不行的,但是兴趣又是培养的,在编程过程中体验乐趣是很重要的。

读书的时候老师会教你程序设计的课程,我们这里把它叫做编程。比如可以抽象是:

Programs = Algorithms + Data Structures

I. 对于数据结构,可以用一个简单的例子来理解一下。

一堆书有两种简单放的方式:

  1. 重叠放
  2. 摊开放

语言的表达太淡,来个简单的图:

解释图

阅读全文 »

01月17, 2017

为什么需要 KeyMirror

前言

今天有朋友问了 “KeyMirror” 这个库有什么用的问题,其实这个问题并不难,这里扫一下盲区。

会按照下面这个逻辑来展开,彻底理解一下:

  1. KeyMirror 有什么用?
  2. Google Closure Compiler 是什么?
  3. KeyMirror 解决了什么问题,好处是什么?
  4. KeyMirror 的源码是什么样子?
  5. 用 Gulp 配置一个压缩任务,测试一下 Google Closure Compiler.

阅读全文 »