李子豪的前端自习室


  • Startseite

  • Archiv

  • Tags

为什么说Redux超过了Facebook Flux?

Veröffentlicht am 2017-07-02

为什么说Redux超过了Facebok Flux

原问题 是stack overflow网站上 Volodymyr bakhatiuk的提问。一下是原答案,回答者是Redux的作者 Dan Abramov。

Weiterlesen »

从URL到网页展示经历了什么?

Veröffentlicht am 2017-07-02

从一个URL到页面展现经过了那些

第一步:输入url地址

第二步:对输入的url进行dns解析

1.如果没有访问过这个url的话,浏览器就会以及一级的向下进行递归搜索,具体的搜索步骤是:浏览器缓存->系统缓存->路由器缓存->ISP DNS缓存->顶级的域名服务器的根域名服务器开始递归查找(只要这个url名有效,在最后一步肯定会被查到)

第三步:打包HTTP的请求

输入url的时候,浏览器就会打包请求,将这个请求传递给服务器

第四步:创建TCP的请求

请求方式:
  1. Get:根据url去请求数据
  2. Post:想服务器发送请求数据
  3. put:在服务器上放入一个数据
  4. delete:在服务器上删除一个数据
  5. options:向服务询问支持的请求方式
  6. trace:展示从本地到服务器经历了那些节点
  7. head:只拿到Request headers头部的内容

第五步:相关进程处理请求

根据端口号进行监听,默认的端口号是80端口

第六部:服务器响应请求

影响服务器返回的内容有以下几个:

  • 请求方式
  • 路径
  • query string
  • cookie
  • 服务器配置
  • 动态语言代码逻辑
    响应的内容一般包括:header+html网页文本

第七步:渲染页面

当服务器将内容发送给浏览器之后,浏览器就开始对内容进行渲染
网页渲染一般是一边下载内容一边进行渲染

第八步:关联资源的处理

比如说网页上的图片,网上的视频等在外联资源再进行下载处理

西部世界里的二分心智

Veröffentlicht am 2017-07-02

west1.jpg

文章大部分引用了机核网 那样重那样轻 的 《迷宫是什么》 一文。
迷宫是什么?–《西部世界》的理论基础

Weiterlesen »

用jq实现lodash的功能[1]

Veröffentlicht am 2017-07-01

本文是准备将所有的lodash.js的相关方法用jquery去实现,目的是为了巩固自己所学知识,计划是每两天更新五个代码,如果有比较难的,会根据难易度,减少代码量。希望能帮助到正在学习前端的你。

在没有找到工作之前,面试了一家公司,因为没有相关工作经验被拒,面试的过程中,面试官竟然当着我的面玩起了手机游戏,这对我感触很深,也许没有经验,没有能力,就会被别人瞧不起,我不愿意做一个别人瞧不起的人,我想成为一个能够努力改变现状的人,想证明自己,不比别人弱,别人能做的,我也照样能做到。

以后,在饭桌上,也没有人敢在我夹菜的时候转桌子,是我最近5年的计划!!哈哈哈!

Weiterlesen »

如何使用setTimeout去调用Redux的action

Veröffentlicht am 2017-06-30

本问题选自Stack overflow中llja提出的一个问题,由于本人翻译水平有限,所以有些不明白的地方,可以直接访问这个问题的网址,原地址
有涉及到侵权的问题,请告知我,我会第一时间删除本篇文章,本人的邮箱:aleenli1992@gmail.com

原问题:

如何使用setTimeout去调用Redux的action

我有个更新我的APP通知状态的动作。通常通知的种类是一个错误或者信息。我需要五秒后发送一个动作,之后通知状态返回最初的样式,但是没有通知。最主要的实现是提供一个功能,一个可以在5秒之后通知自动消失的功能。

在使用setTimeout的时候,正在返回其他动作但是无法找到谁在线上完成了。所以希望大家给点建议。

Weiterlesen »

backbone.js到底有什么作用?

Veröffentlicht am 2017-06-29

文章源自stack overflow 中sushil bharwani的问题,以下是我的翻译,翻译错误之处可以联系我。

原问题

我试着从http://documentcloud.github.com/backbone这个网站去了解,bankbone到底有什么用,但是我现在还没怎么明白。

有没有能帮忙解释一下他到底是怎么运作的,他对写更好的JS代码有什么帮助?

原答案(回答者:Vladimir Gurovich)

backbone.js根本上是一个uber-light框架,它允许你以MVC(模块,视图和控制器)的结构方式去架构你的JS代码,其中…

模块是用你的代码进行数据的交互的一部分。
视图是这个模块的HTML表现形式(视图随着模块的改变而改变,等等)
选择控制器是一个盒子,这个盒子里允许储存你的JS APL经由hashbang的URL返回的的状态。举一个例子:http://twitter.com/#search?q=backbone.js

在使用Backbone中我发现了一些优点:

  1. 不再有冗长的JS代码:代码被分解成了一块块语义明朗的代码块,以后也许会使用与JAMMIT组合的js文件。

2.不再有 jQuery.data(bla ,bla):不再需要在DOM中存储数据,用模型来替代存储数据

3.事件绑定只是日常

4.Underscore 的实用库太有用了

5.backbone.js代码有很好的记录和可读性,其中的一些代码简直感觉打开了新世界的大门

当然还有一点缺点:如何将它应用到我的代码里这件事情,我已经被搞得晕头转向了,但是我是一个JS新手。

lodash.js和underscore.js有什么区别呢?

Veröffentlicht am 2017-06-23

文章来源自stack overflow,Brian M.Hunt提出的问题,问题的内容是比较lodash.js和underscore.js的区别。本文节选了得票数最高的回答者(也就是发明Lo-Dash本人)进行翻译,希望能帮助你了解这两个组件的差别。
如果有任何侵权行为,请告知我:aleenli1992@gmail.com

Weiterlesen »

有关Backbone的小九九

Veröffentlicht am 2017-06-22

什么是backbone?????

backbone是基于javaScript开发的一种框架,在React和Vue,angular2三分天下的今天,backbone就像是行走在江湖的剑客,不与武林争宠,也许过去也有过决战华山之巅的豪情,但随着新老交替,backbone的确已经有些过时了。只能说,可能说过时有些不妥,毕竟现在还有相关的人员在去维护他,去更新他。或许某一天,维护他的人渐渐离开,他也许就真正的消失于历史的场合之中,就像ActionScript王朝的没落,backbone不是一个王朝,就像金刚狼一样,英雄不朽,但英雄们会死,我们记得的只是英雄这个词,但不是英雄本身,是不是有一点嘲讽的意味。

Weiterlesen »

如何从异步调用ajax的返回值问题?

Veröffentlicht am 2017-06-21

如何从异步调用ajax的返回值问题?

文章来源自Stack Overflow网站上,Felix Kling提问的问题,这里重点讲的是回答中得票数最高的一个人的答案,希望能够帮助大家更好的了解到ajax的相关知识,当然,有些语法和翻译上会有些错误,可以向我指出。
本人的邮箱:aleenli1992@gmail.com

原问题:

我有一个关于Ajax请求的函数,我怎么才能在foo函数中获取到返回值?

我试着在success这个函数中callback返回值,也试着将返回值赋值到一个局部变量中并且返回它,但是没有一个能够成功的返回的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
result = response;
// return response; // <- 我也尝试了这样
}
});
return result;
}
var result = foo(); // 结果总是`undefined`.

原答案

问题

异步是Ajax中的最重要的部分,它的意思是发送请求(或者接受返回)是脱离正常处理流。在你的例子中,$.ajax执行之后会立刻返回下一条语句,return result,在这之前函数success的回调函数还没有来得及声明呢。

下面有一些类似的例子,希望能够帮助你彻底的搞懂同步和异步。

同步

想象一下你正在打电话给你的一个朋友,让他帮你找东西。尽管只过了一会,但是在你的朋友还没答复你的这段时间里,你完全是拿着电话无所事事。
相同的事情也发生在当你编写一个普通的代码中:

1
2
3
4
5
6
7
8
9
10
11
function findItem(){
let item;
while(item_not_found){
// 继续找
}
return item
}
var item = findItem()
dosomethisElse();

尽管findItem可能花了很长一段时间去执行,任何代码都必须在var item = findItem()之后,只有等待函数返回回来结果了。

异步

你用相同的理由给你的朋友打电话,但是这段时间,你告诉他,你非常着急并且记得回电话给你,你挂了电话,并且做任何你你计划做的事情,一次你的朋友回电话给你,你就可以立刻处理他给你的信息。

这种情况也同时出现在你使用ajax请求的时候。

闭包到底是如何工作的?

Veröffentlicht am 2017-06-21

闭包到底是如何工作的?

文章来源自Stack Overflow网站上,Aaron Hall提问的问题,这里重点讲的是回答中得票数最高的一个人的答案,希望能够帮助大家更好的了解到闭包的作用,当然,有些语法和翻译上会有些错误,可以向我指出。
本人的邮箱:aleenli1992@gmail.com

原问题:

你怎么给一个有一些JS基础的,知道一点闭包概念的包括(函数,变量,诸如此类)的人,去解释JS中的闭包这个概念呢?

我也看过一些维基百科中的例子,但是很不幸,那一点用处也没有。

回答者:flying sheep

闭包并不神奇

这篇文章是使用JS的代码去解释闭包以便程序员去理解他,并不是针对于一些大师和专业的开发者。

一旦你挖掘了核心概念的话,闭包会很容易理解。无论如何,如果你想要通过一些专业的论文,或者是学术性质的文章去理解他的话,我只能说那是不可能的。

这篇文章适合有主流编程语言经验的程序员,那种呢?就是看的懂下面这行代码的那种:

1
2
3
4
5
6
function sayHello(name){
var text = 'hello' + name
var say = function { console.log(text) }
say()
}
sayHello('joe')
一个闭包的例子:

两句话总结:

  1. 闭包是支持一级函数的一种方式,他是一个表达式,可以引用该作用域内的变量(当它被首次声明时),将它分配给一个变量,或者传递成一个函数的参数,或者作为一个函数结果返回。
  2. 当一个函数开始执行的时候,闭包是一个被分配的栈帧,并且函数的返回值不会被限制。栈帧的意思是指一个函数调用单独分配的那部分栈空间。(就好像一个栈帧被分配在堆中,并不是在栈中).

下面代码返回的是一个函数的引用

1
2
3
4
5
6
7
function sayHello2(name) {
var text = 'Hello ' + name; // 局部变量
var say = function() { console.log(text); }
return say;
}
var say2 = sayHello2('Bob');
say2(); // logs "Hello Bob"

大部分的JS程序员都明白上面的代码里,如何将对函数的应用返回到变量(say2)上。如果你不明白的话,你最好搞懂这个再来学习闭包。如果一个程序员使用C语言的话,他会思考函数的返回值是指向这个函数的,并且变量say和say2都是执行同一个函数。

1234…6
Aleen

Aleen

54 Artikel
16 Tags
© 2017 Aleen
Erstellt mit Hexo
Theme - NexT.Muse