06 2018 档案
摘要:读这篇文章需要5分钟 个人总结: jsonp: ajax不能跨域但是js是可以跨域的, 所以如果.html的某个本地script标签中有个函数, 而另一个来自远程的script src='remote.js'里面写的是运行这个函数,并传入参数。 那么这个函数就可以被运行了。 将src属性变成请求而不
阅读全文
摘要:行高指的是文本行的基线间的距离(更简单来说,行高是指文字尺寸与行距之间的和)。 而基线(Base line),指的是一行字横排时下沿的基础线, 基线并不是汉字的下端沿,而是英文字母x的下端沿,同时还有文字的顶线(Top line)、中线(Middle line)和底线(Bottom line),用以
阅读全文
摘要:阅读下面这篇文章,需要20分钟: 一起了解下 JS 引擎是如何运作的吧! JS 的运作机制可以分为 AST 分析、引擎执行两个步骤: JS 源码通过 parser(分析器)转化为 AST(抽象语法树),再经过 interperter(解释器)解析为 bytecode(字节码)。 为了提高运行效率,o
阅读全文
摘要:Iterator : 返回的结果是:{value, done} 写一个基于class的Iterator: class MyIterator { constructor(arr) { this.arr = arr this.i = 0; } next() { let done = (this.i >=
阅读全文
摘要:因为JavaScript中有语言缺陷,所以出了个Object.is()
阅读全文
摘要:tagged template: 加在模板字符串前面加一个标签(函数)。 let dessert = = '甜品' drink = '茶' let breakfast = kitchen`今天的早餐是${dessert} 与 ${drink}!` function kitchen(strings,.
阅读全文
摘要:webpack默认只能处理.js文件,如果想处理别的文件需要loader css-loader 处理.css文件 style-loader 处理样式 entry.js: require('style!css!./style.css') webpack.config.js: module.export
阅读全文
摘要:因为今年8代处理器i5的双核变成了四核,感觉是个换电脑的好时机,本来打算买macbook,但是6月的发布会并没有发布,于是开始寻找一些比较有特点的笔记本电脑。 了解了这样一款笔记本 LG GRAM 15.6寸,只有1kg,同时续航有11小时(我自己实测),真的是很特点, 首先是在lg官网问了客服说北
阅读全文
摘要:比如想编译es6的箭头函数,需要使用babel-plugin-transform-es2015-arrow-functions这个插件 此外babel提供了 prests(预设) 相当于是插件的集合 比如想要编译es2015 babel-preset-es2015 还有 babel-preset-r
阅读全文
摘要:收集一些写的比较好的资料: 资料一:https://segmentfault.com/a/1190000011474522#articleHeader5
阅读全文
摘要:浅拷贝:创建一个新的指针,指向同一块内存区域。 深拷贝:创建一个新指针,申请一块新的内存区域。 Object.assign是只能拷贝一层的深拷贝。 var obj1 = {a:{a:123}} var obj2 = Object.assign({},obj1) obj1.a.a=456; obj1
阅读全文
摘要:执行原理 使用npm run script执行脚本的时候都会创建一个shell,然后在shell中执行指定的脚本。 这个shell会将当前项目的可执行依赖目录(即node_modules/.bin)添加到环境变量path中,当执行之后之后再恢复原样。就是说脚本命令中的依赖名会直接找到node_mod
阅读全文
摘要:个人总结:读完这篇文章需要5分钟,这篇文章讲解了Node.js非对称加密算法的实现。 摘录自网络 地址: https://github.com/chyingp/nodejs-learning-guide 前言 刚回答了SegmentFault上一个兄弟提的问题《非对称解密出错》。这个属于Node.j
阅读全文
摘要:个人总结:读完这篇文章需要30分钟,这篇文章讲解了使用Node处理加密算法的基础。 摘选自网络 Nodejs进阶:crypto模块之理论篇 一、 文章概述 互联网时代,网络上的数据量每天都在以惊人的速度增长。同时,各类网络安全问题层出不穷。在信息安全重要性日益凸显的今天,作为一名开发者,需要加强对安
阅读全文
摘要:个人总结:读完这篇文章需要5分钟,讲解了debug模块的使用 摘选自网络 前言 在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,比如express框架中就用到了。下文简单举几个例子进行说明。文中相关代码示例,可在这里找到。 备注:node在0.11.3版本也加入了util
阅读全文
摘要:个人总结:读完这篇文章讲解了log4js的使用,具体更多可以参考npmjs上看,读完这篇需要15分钟。 摘选自网络 对于线上项目用来说,日志是非常重要的一环。log4js是使用得比较多的一个日志组件,经常跟Express一起配合使用。本文从入门实例开始,讲解log4js的使用,以及如何跟Expres
阅读全文
摘要:个人总结:这篇文章讲解了express框架种cookie的使用,需要引用cookie-parser这个包。读完这篇文章需要10分钟。 摘选自网络 文章导读 cookie-parser是Express的中间件,用来实现cookie的解析,是官方脚手架内置的中间件之一。 它的使用非常简单,但在使用过程中
阅读全文
摘要:个人总结:这篇文章讲解了Express框架中日志记录插件morgan的示例。读完这篇文章需要10分钟 摘选自网络 章节概览 morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。本文由浅入深,内容主要包括: morgan使用入门例子 如何将日志
阅读全文
摘要:个人总结: 这篇文章讲解了express框架中如何使用session,主要用了express-session这个包。更多可以参考npm.js来看,读完这篇文章需要10分钟。 摘选自网络: 文档概览 本文基于express、express-session实现了简易的登录/登出功能,完整的代码示例可以在
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:个人总结:这篇文章讲解了使用Node处理转换base64编码图片,读完这篇文章需要5分钟。 摘选自网络 问题:将图片转成datauri 今天,在QQ群有个群友问了个问题:“nodejs读取图片,转成base64,怎么读取呢?” 想了一下,他想问的应该是 怎么样把图片嵌入到网页中去,即如何把图片转成对
阅读全文
摘要:个人总结:这篇文章主要讲了multer插件的使用,类似于formidable,可以用来处理post表单中的文件上传,读完这篇文章需要10分钟。 摘选自网络 概览 图片上传是web开发中经常用到的功能,node社区在这方面也有了相对完善的支持。 常用的开源组件有multer、formidable等,借
阅读全文
摘要:个人总结:Node.js处理post表单需要body-parser,这篇文章进行了详细的讲解。 摘选自网络 写在前面 body-parser是非常常用的一个express中间件,作用是对http请求体进行解析。使用非常简单,以下两行代码已经覆盖了大部分的使用场景。 app.use(bodyParse
阅读全文
摘要:个人总结:这篇文章讲解了Nodejs中自带模块的MD5加密算法的使用,读完这篇文章需要15分钟,其实还有一个叫utility的包在npm上,也非常好用。 摘选自网络 简介 MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法),主要用来
阅读全文
摘要:个人总结:这篇文章主要讲解了Nodejs处理服务器乱码及编码的知识,读完这篇文章需要10分钟。 摘选自网络 写在前面 在web服务端开发中,字符的编解码几乎每天都要打交道。编解码一旦处理不当,就会出现令人头疼的乱码问题。 不少从事node服务端开发的同学,由于对字符编码码相关知识了解不足,遇到问题时
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide 自己过一遍: 模块简介 string_decoder模块用于将Buffer转成对应的字符串。使用者通过调用stringDecoder.write(buffer),可以获得buffer对应的字符串。
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:模块概览 nodejs的核心模块,基本上都是stream的的实例,比如process.stdout、http.clientRequest。 对于大部分的nodejs开发者来说,平常并不会直接用到stream模块,只需要了解stream的运行机制即可(非常重要)。 而对于想要实现自定义stream实例
阅读全文
摘要:debuglog(section) 很有用的调试方法。可以通过 util.debuglog(name) 来创建一个调试fn,这个fn的特点是,只有在运行程序时候,声明环境变量NODE_DEBUG=name,才会打印出调试信息。 可以看下面的例子,直接运行 node debuglog.js,没有任何输
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:模块概览 readline是个非常实用的模块。如名字所示,主要用来实现逐行读取,比如读取用户输入,或者读取文件内容。常见使用场景有下面几种,本文会逐一举例说明。 文件逐行读取:比如说进行日志分析。 自动完成:比如输入npm,自动提示"help init install"。 命令行工具:比如npm i
阅读全文
摘要:模块概览 在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块。部分因为文档说的不够清晰,部分因为接口的平台差异性。 将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了。 获取路径/文件名/扩展名 获取路径:path.dirname(filepath) 获取文件名:path.
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:模块概览 events模块是node的核心模块之一,几乎所有常用的node模块都继承了events模块,比如http、fs等。 模块本身非常简单,API虽然也不少,但常用的就那么几个,这里举几个简单例子。 基础例子 下面一共是6个例子,都非常简单,可以直接拷贝出来运行。例子5比较有意思,虽然也并不复
阅读全文
摘要:https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:文章地址 https://github.com/chyingp/nodejs-learning-guide
阅读全文
摘要:写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码。 在进入主题之前,首先会对三种调试方式进行入
阅读全文
摘要:模块概览 console模块提供了基础的调试功能。使用很简单,常用的API主要有 console.log()、console.error()。 此外,可以基于Console类,方便的扩展出自己的console实例,比如把调试信息打印到文件里,而部署输出在控制台上。 直接看例子。 基础例子 无特殊说明
阅读全文
摘要:cluster模块概览 node实例是单线程作业的。在服务端编程中,通常会创建多个node实例来处理客户端的请求,以此提升系统的吞吐率。对这样多个node实例,我们称之为cluster(集群)。 借助node的cluster模块,开发者可以在几乎不修改原有项目代码的前提下,获得集群服务带来的好处。
阅读全文
摘要:原文: https://github.com/chyingp/nodejs-learning-guide/blob/master/README.md 自己的跟进学习: 父进程,子进程,线程之间的关系 父进程,子进程,线程之间的关系 2016年09月13日 09:57:07 2016年09月13日 0
阅读全文
摘要:作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是
阅读全文
摘要:模块概览 Buffer是node的核心模块,开发者可以利用它来处理二进制数据,比如文件流的读写、网络请求数据的处理等。 Buffer的API非常多,本文仅挑选 比较常用/容易理解 的API进行讲解,包括Buffer实例的创建、比较、连接、拷贝、查找、遍历、类型转换、截取、编码转换等。 创建 new
阅读全文
摘要:模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单。 模块总共有四个方法,绝大部分时,我们只会用到 .parse()、 **.stringify()**两个方法。剩余的方法,感兴趣的同学可自行查看文档。 .parse():对url查询参数(字符
阅读全文
摘要:写在前面 本章节写得差不多了,不过还需要再整理一下(TODO)。 hash例子 hash.digest([encoding]):计算摘要。encoding可以是hex、latin1或者base64。如果声明了encoding,那么返回字符串。否则,返回Buffer实例。注意,调用hash.diges
阅读全文
摘要:模块概述 nodejs中,提供了url这个非常实用的模块,用来做URL的解析。在做node服务端的开发时会经常用到。使用很简单,总共只有3个方法。 正式讲解前,各位同学先把下面这个图记在心上(来自nodejs官网),先对URL有一个直观的认识。 模块方法概述 url模块三个方法分别是: .parse
阅读全文
摘要:模块概览 dgram模块是对UDP socket的一层封装,相对net模块简单很多,下面看例子。 UPD客户端 vs UDP服务端 首先,启动UDP server,监听来自端口33333的请求。 server.js // 例子:UDP服务端 var PORT = 33333; var HOST =
阅读全文
摘要:模块概览 net模块是同样是nodejs的核心模块。在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net.Socket)。也就是说,做node服务端编程,net基本是绕不开的一个模块。 从组成来看,net模
阅读全文
摘要:模块概览 这个模块的重要性,基本不用强调了。在网络安全问题日益严峻的今天,网站采用HTTPS是个必然的趋势。 在nodejs中,提供了 https 这个模块来完成 HTTPS 相关功能。从官方文档来看,跟 http 模块用法非常相似。 本文主要包含两部分: 篇幅所限,本文无法对 HTTPS协议 及
阅读全文
摘要:http服务端概览 创建server 几行代码搞定 var http = require('http'); var requestListener = function(req, res){ res.end('ok'); }; var server = http.createServer(reque
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: ClientRequest概览 当你调用 http.request(options) 时,会返回 ClientRequest实例,主要用来创建HTTP客户端请求。 在前面的章节里,已
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: 概览 http模块四剑客之一的res,应该都不陌生了。一个web服务程序,接受到来自客户端的http请求后,向客户端返回正确的响应内容,这就是res的职责。 返回的内容包括:状态代码
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: 概览 本文的重点会放在req这个对象上。前面已经提到,它其实是http.IncomingMessage实例,在服务端、客户端作用略微有差异 服务端处:获取请求方的相关信息,如requ
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: http模块概览 大多数nodejs开发者都是冲着开发web server的目的选择了nodejs。正如官网所展示的,借助http模块,可以几行代码就搞定一个超迷你的web serv
阅读全文
摘要:域名解析:dns.lookup() 比如我们要查询域名 www.qq.com 对应的ip,可以通过 dns.lookup() 。 var dns = require('dns'); dns.lookup('www.qq.com', function(err, address, family){ if
阅读全文
摘要:原文:https://github.com/chyingp/nodejs-learning-guide/blob/master/%E6%A8%A1%E5%9D%97/fs.md#%E9%80%9A%E8%BF%87%E6%96%87%E4%BB%B6%E6%B5%81%E8%AF%BB%E5%8F%
阅读全文
摘要:原文: https://github.com/chyingp/nodejs-learning-guide/blob/master/README.md 自己的跟进学习: 概览 做过web性能优化的同学,对性能优化大杀器gzip应该不陌生。浏览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源
阅读全文
摘要:什么是 indexedDB IndexedDB 是一种使用浏览器存储大量数据的方法.它创造的数据可以被查询,并且可以离线使用. IndexedDB对于那些需要存储大量数据,或者是需要离线使用的程序是非常有效的解决方法. MDN 上面是MDN上对于IndexedDB的介绍.其简单而言,indexedD
阅读全文
摘要:https://segmentfault.com/a/1190000004003055
阅读全文
摘要:第三天 01:在组件中使用style行内对象并封装样式对象: CmtItem.jsx: import React from 'react' //第一层封装 将样式对象和UI结构分离 // const itemStyle = { border: '1px dashed #ccc', margin: '
阅读全文
摘要:第二天 01 关于Vue和React中key的作用 在循环的时候一定要为组件加key 02关于jsx语法的注意事项 jsx中的注释 {/* */} class要写成className label标签的for要写成htmlFor 所有节点必须要有唯一根元素进行包裹 03创建组件的第一种方式并为组件传递
阅读全文
摘要:第一天 从webpack到babel再到React.js Vue是如何实现组件化的: 通过.vue文件,来创建对应的组件: ·template 结构 ·script 行为 ·style 样式 React如何实现组件化: React中有组件化的概念,但是,并没有像vue这样的模板文件。 React中一
阅读全文
摘要:Flux架构区别于传统的MVC架构 在facebook实践中, 当用户接收到新消息时,右上角会弹出你有一条新消息, 右下角的对话框也会提示有新消息, 如果用户在对话框中查看了新消息,那么右上角的这个新消息的提示也应该被正确的置空, 这就引起了不同view和controller之间剪头互相的指向(被称
阅读全文
摘要:个人总结: 脏检查的全名是 脏数据检查。是AngularJS命名的。 脏数据也就是产生了变化的数据。 脏检查因一个原因而被称为脏。它定时检查而不是直接监听属性变化。我们把这个检查称为摘要周期(digest)。 angularJS监测对象变化不是像vue.js那样通过Object.defineprop
阅读全文
摘要:个人总结: 这篇文章介绍了几种监测DOM变化的方法,重点介绍的是一个新浏览器API叫做MutationObserver。 注意:不要和Vue.js种 Object.defineProperty() 的Getter,Setter弄混,还有proxy...那些是监测对象的变化,这个说的是监测DOM的变化
阅读全文
摘要:结论: 第一个问题,转换语法,其实我们可以通过babel来做。核心步骤也就是: 通过babylon生成AST 通过babel-core将AST重新生成源码 第二步需要处理模块依赖的关系,那就需要得到一个依赖关系视图,babel-traverse提供了一个可以遍历AST视图并做处理的功能,通过 Imp
阅读全文
摘要:数组是可迭代的 var a = []; console.dir(a); 发现这里有一个Symbol.iterator ,说明它是可迭代的。 object 是不可以迭代的 var a = {} console.dir(a); 发现这里没有iterator set weakset map weakmap
阅读全文
摘要:个人总结:map对key强引用,当map引用了一个key的时候,(内存堆空间的)实际key内容不会被垃圾回收掉。 (有内存泄漏风险)weakmap对key弱引用,实际的key可能在某次垃圾回收操作时被清除掉,导致weakmap中的这对key-value也会消失掉。引用计数:https://zh.wi
阅读全文
摘要:内存模型 JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量,堆存放复杂对象,池存放常量。 基础数据类型与栈内存 JS中的基础数据类型,这些值都有固定的大小,往往都保存在栈内存中(闭包除外),由系统自动分配存储空间。我们可以直接操作保存在栈内存空间的值,因此
阅读全文
摘要:个人翻译 原文:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ The Node.js Event Loop, Timers, and process.nextTick() What is the Event Loo
阅读全文
摘要:个人总结: 1.介绍了网页消息推送通知机制 全文地址:https://github.com/Troland/how-javascript-works 这是 JavaScript 工作原理的第九章。 现在让我们把注意力转移到网页推送通知:我们将会查看其构造,探索发送/接收通知背后的过程以及最后分享一下
阅读全文
摘要:个人总结: webworker有以下三种: Dedicated Workers 由主进程实例化并且只能与之进行通信 Shared Workers 可以被运行在同源的所有进程访问(不同的浏览的选项卡,内联框架及其它shared workers)。 Service workers 是一个由事件驱动的 w
阅读全文
摘要:个人总结: 1.webworkers实现了用多线程浏览器来进行多线程操作js的能力。 2.web workers不能操作dom,window,document等对象,一般用于cpu计算型的任务。 Web Workers 分类及 5 个使用场景 这是 JavaScript 工作原理的第七章。 现在,我
阅读全文
摘要:个人总结: 1.webassembly简介:WebAssembly是一种用于开发网络应用的高效,底层的字节码。允许在网络应用中使用除JavaScript的语言以外的语言(比如C,C++,Rust及其他)来编写应用程序,然后编译成(提早)WebAssembly。 这是 JavaScript 工作原理的
阅读全文
摘要:个人总结: 1.长连接机制——分清Websocket,http2,SSE: 1)HTTP/2 引进了 Server Push 技术用来让服务器主动向客户端缓存发送数据。然而,它并不允许直接向客户端程序本身发送数据。服务端推送只能由浏览器处理而不能够在程序代码中进行处理,意即程序代码没有 API 可以
阅读全文
摘要:个人总结: 1.讲解了JS引擎,webAPI与event loop合作的机制。 2.setTimeout是把事件推送给Web API去处理,当时间到了之后才把setTimeout中的事件推入调用栈。 3.Promise与Async/Await 这是 JavaScript 工作原理的第四章。 现在,我
阅读全文
摘要:个人总结: 1.两种垃圾回收机制: 1)引用标记算法:如果检测到一个对象没有被引用了,就清除它。 ***这种算法不能处理循环引用的情况*** 2)标记—清除算法:从根(全局变量)开始向后代变量检测,任何根变量所到达不了的变量会被标记为内存垃圾。 这是 JavaScript 工作原理的第三章。 我们将
阅读全文
摘要:JavaScript使用词法作用域(lexial scope)又叫静态作用域: 词法作用域(lexial scope)/静态作用域(static scope)是在书写代码或者说定义时确定的,而动态作用域是在运行时确定的。 词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用,其作用域链是基于
阅读全文
摘要:个人总结: 一个Javascript引擎由一个标准解释程序,或者即时编译器来实现。 解释器(Interpreter): 解释一行,执行一行。 编译器(Compiler): 全部编译成机器码,统一执行。(减少了切换和调度的开销,更快。) V8引擎是一种即时编译器。 V8引擎的优化策略: 1.内联:将函
阅读全文
摘要:个人总结:该系列文章对JS底层的工作原理进行了介绍。 这篇文章讲了 运行时:js其实是和AJAX、DOM、Settimeout等WebAPI独立分离开的 调用栈:JavaScript的堆内存管理 和 调用栈的简介 原文:https://blog.sessionstack.com/how-does-j
阅读全文