JobbyM's Blog

first do it, then do it right, then do it better.


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
JobbyM's Blog

[译]NodeJS 入门

发表于 2018-12-07 | 分类于 技术 | | 阅读次数

特别声明:此篇文章内容来源于@Aditya Sridhar 的How to use NodeJS without frameworks and external libraries

NodeJS最常用于Express 框架。许多其他外部库也使用了NodeJS。

这些框架和库与NodeJS 一起使用的原因是使开发更容易,更快捷。

在处理任何实际项目时,最好在需要时使用框架和库来实现更快的开发😄

也就是说,在这篇文章中,我将展示如何在不使用Express 框架或任何其他外部库的情况下使用NodeJS 构建简单REST API。本文仅使用NodeJS 本身提供的那些功能。

这样做的原因是为了展示NodeJS 如何在没有框架和库的情况下使用😄。这也将更好地了解NodeJS 的工作原理

阅读全文 »
JobbyM's Blog

一日一练-JS 对象属性遍历的5 中方法

发表于 2018-12-04 | 分类于 技术 | | 阅读次数

本文摘自ECMAScript 6 入门 ruanyifeng,有部分删节,看原文请到原地址。

ES6 一共有5 种方法可以遍历对象的属性。

(1)for…in
for...in 循环遍历对象自身的和继承的可枚举属性(不含Symbol 属性)。

(2)Object.keys(obj)
Object.keys 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol 属性)的键名。

(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames 返回个数组,包含对象自身的所有属性(不含Symbol 属性,但是包括不可枚举属性)的键名。

(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol 属性的键名。

(5)Reflect.ownKeys(obj)
Reflect.ownKeys 返回一个数组,包含对象自身的所有键名,不管键名是Symbol 或字符串,也不管是否可枚举。

以上的5 种方法遍历对象的键名,都遵守同样的属性遍历的次序规则。

  • 首先遍历所有数值键,按照数值升序排列。
  • 其次遍历所有字符串键,按照加入时间升序排列。
  • 最后遍历所有Symbol 键,按照加入时间升序排列。
1
2
Reflect.ownKeys({[Symbol()]:0, b:0, 10:0, 2:0, a:0})
// ['2', '10', 'b', 'a', Symbol()]

上面代码中,Reflect.ownKeys 方法返回一个数值,包含了参数对象的所有属性。这个数组的属性次序是这样的,首先是数值属性2 和10,其次是字符串属性b 和a,最后是Symbol 属性。

JobbyM's Blog

一日一练-JS 【转载】Promise 对象

发表于 2018-12-03 | 分类于 技术 | | 阅读次数

本文转载自Promise 对象 ruanyifeng,有部分删节,看原文请到原地址。

概述

Promise 对象是JavaScript 的异步操作解决方案,为异步操作提供统一接口。它起到代理作用(proxy),充当异步操作与回调函数之间的中介,使得异步操作具备同步操作的接口。Promise 可以让异步操作写起来,就像在写同步操作的流程,而不必一层一层地嵌套回调函数。

注意,本章只是Promise 对象的简单介绍。为了避免与后续教程的重复,更完整的介绍请看《ES6 标准入门》的《Promise 对象》一章。

首先,Promise 是一个对象,也是一个构造函数。

1
2
3
4
5
function f1 (resolve, reject) {
// 异步代码
}

var p1 = new Promise(f1)
阅读全文 »
JobbyM's Blog

一日一练-JS 【转载】定时器

发表于 2018-11-30 | 分类于 技术 | | 阅读次数

本文转载自定时器 ruanyifeng,有部分删节,看原文请到原地址。

setTimeout()

setTimeout 函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。

1
var timerId = setTimeout(func|code, delay)
阅读全文 »
JobbyM's Blog

一日一练-JS 【转载】异步操作概述

发表于 2018-11-29 | 分类于 技术 | | 阅读次数

本文转载自异步操作概述 ruanyifeng,有部分删节,看原文请到原地址。

单线程模型

单线程模型指的是,JavaScript 只是在一个线程上运行。也就说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。

注意,JavaScript 只是在一个线程上运行,不代表JavaScript 引擎只有一个线程。事实上,JavaScript 引擎有多个线程,单个脚本只能在一个线程上运行(称为主线程),其他线程都是在后台配合。

JavaScript 之所以采用单线程,而不是多线程,跟历史有关系。JavaScript 从诞生起就是单线程,原因是不想让浏览器变得太复杂,因为多线程需要共享资源、且有可能修改彼此的运行结果。如果JavaScript 同时有两个线程,一个线程是在网页DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?是不是还要有锁机制?所以,为了避免复杂性,JavaScript 一开始就是单线程,这已经是这门语言的核心特征,将来也不会改变。

阅读全文 »
JobbyM's Blog

一日一练-JS 【转载】JavaScript 运行机制详解:再谈Event Loop

发表于 2018-11-27 | 分类于 技术 | | 阅读次数

本文转载自JavaScript 运行机制详解:再谈Event Loop ruanyifeng,有部分删节,看原文请到原地址。

本文由作者受Philip Roberts 的演讲《Help,I’m stuck in an event-loop》 启发。

关于setTimeout 的更多解释和示例,请参阅《JavaScript标准参考教程》

一、为什么JavaScript 是单线程?

JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript 不能有多个线程呢?这样能提高效率啊。

JavaScript 的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来复杂的同步问题。比如,假定JavaScript 同时有两个线程,一个线程在某个DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?

所以,为了避免复杂性,从一诞生,JavaScript 就是单线程,这已经成为这门语言的核心特征,将来也不会改变。

为了利用多核CPU 的计算能力,HTML5 提出了Web Worker 标准,允许JavaScript 脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript 单线程的本质。

阅读全文 »
JobbyM's Blog

一日一练-浏览器 【转载】并发模型与事件循环

发表于 2018-11-26 | 分类于 技术 | | 阅读次数

本文转载自并发模型与事件循环 MDN

JavaScript 的并发模型基于“事件循环”。这个模型与其它语言C 或者Java 的魔心截然不同

运行时概念

下面的内容解释了一个理论上的模型。现代JavaScript 引擎实现和着重优化了描述的几个语义。
可视化描述

阅读全文 »
JobbyM's Blog

一日一练-浏览器 重流和重绘

发表于 2018-11-26 | 分类于 技术 | | 阅读次数

重流和重绘在性能优化中是相当重要的,在这里需要将其记录下来。首先了解渲染引擎。

渲染引擎

渲染引擎需要负责显示请求的内容。如果请求的内容是HTML,它就负责解析HTML 和CSS 内容,并将解析后的内容显示在屏幕上。

渲染引擎的种类
1.FireFox:Gecko 引擎
2.Safari:WebKit 引擎
3.Chrome: Blink 引擎
4.IE:Trident 引擎
5.Edge:EdgeHTML 引擎

阅读全文 »
JobbyM's Blog

一日一练-JS JS加载执行的几种方式

发表于 2018-11-26 | 分类于 技术 | | 阅读次数

JS加载执行有几种不同的情况,正常流程、带有defer 属性、带有async 属性。下面是对这几种不同的情况进行描述。

正常流程

1.浏览器一边下载HTML 网页,一边开始解析。也就是说,不等到下载完,就开始解析。
2.解析过程中,浏览器发现<script> 标签,就暂停解析,把网页渲染的控制权转交给JavaScript 引擎。
3.如果<script> 标签引用了外部脚本,就下载该脚本再执行,否则就直接执行代码。
4.JavaScript 引擎执行完成,控制权转交给渲染引擎,恢复往下解析HTML 网页。

阅读全文 »
JobbyM's Blog

Flutter实践篇-真机上运行FlutterDemo

发表于 2018-11-21 | | 阅读次数

子曰:实践出真知

前言

了解了一段时间的Flutter,并粗略浏览了Dart 语言,接下来就是上手代码了。

阅读全文 »
<i class="fa fa-angle-left"></i>1…567…22<i class="fa fa-angle-right"></i>
JobbyM

JobbyM

first do it, then do it right, then do it better.

213 日志
1 分类
110 标签
GitHub Weibo
  • 阮一峰的网络日志
  • w3cplus
  • 张鑫旭的个人博客
© 2016 - 2021 JobbyM
由 Hexo 强力驱动
主题 - NexT.Pisces