Chapter 2: Callbacks. Callbacks are by far the most common way that asynchrony in JS programs is expressed and managed. Indeed, the callback is the most fundamental async pattern in the language. 对于JS来说,回调函数是异步工作的马,它很好地完成它的任务,除了.... callbacks有它的缺点.许多…
Chapter 1: Asynchrony: Now & Later 在一门语言中,比如JavaScript, 最重要但仍然常常被误解的编程部分是如何在一个完整的时间周期表示和操作程序行为. 这是关于当你的程序正在部分运行,其他部分等待运行.--这之间的gap. mind the gap!(比如在subway door and the platform) 异步编程就是这个核心: now and later parts of your program 在JS的发展初级, callback func…
Chapter 3: Promises But what if we could uninvert that inversion of control? What if instead of handing the continuation of our program to another party, we could expect it to return us a capability to know when its task finishes, and then our code c…
JavaScript 数据访问(通译自High Performance Javascript 第二章)   JavaScript 数据访问(翻译自High Performance Javascript 第二章) 计算机科学中一个经典的问题是决定如何存储数据,以便进行快速的读取和写入操作. 在代码执行期间,数据如何存储将会关系到它们的检索速度.在Javascript中,由于只存在少数的操作来进行数据存储, 这个问题似乎 变得简单了.但是,与其他语言一样,Javascript中数据的存储方式将决定它…
一:流程控制 为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种常见流程的处理 集合处理:如何使用异步操作处理集合中的数据 工具类:几个常用的工具类 本文介绍其中最简单最常用的流程控制部分. 由于nodejs是异步编程模型,有一些在同步编程中很容易做到的事情,现在却变得很麻烦.Async的流程控制就是为了简化这些操作. 1. series(task…
Stephen Toub Download the Code Sample Asynchronous programming has long been the realm of only the most skilled and masochistic of developers-those with the time, inclination and mental capacity to reason about callback after callback of non-linear c…
1,js是由ECMAscript ,dom ,bom组成的专为网页交互而设计的脚本语言.js是脚本语言之一. 2,MIME,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开.多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式. 3,外部文件,放在head中的外部文件,会先解释js后呈现body内容,遇上js多的时候,为不让用户久等而现在一般都会把js放到body的内容最后.(p12) defer(延迟脚本):整个页面都…
node.js的世界,从callback开始,不会止于async. 所有人都在骂为什么不能完全进化,其实我感觉这就是老外的细心,为了承上.这也就是为什么async其实就是promise一样,假如不是一样的东西,如何承上启下.node.js异常处理一直为人诟病,其实为什么不能优雅心里没有*数吗?这就是设计得辣鸡....好吧,我只是一个用辣鸡的辣鸡. 有些东西不能改变,只能自己改变自己.google了一番,我大概找出了2种我自己喜欢的方式. 一.我只是console一下,我不处理. async fu…
既然有了promise 为什么还要有async await ? 当然是promise 也不是完美的异步解决方案,而 async await 的写法看起来更加简单且容易理解. 回顾 Promise Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值. Promise 对象是由关键字 new 及其构造函数来创建的.构造函数会,把一个叫做“处理器函数”(executor function)的函数作为它的参数.这个“处理器函数”接受两个函数resolve 和 reject …
async.waterfallasync.seriesasync.parallelasync.auto http://my.oschina.net/huangsz/blog/176203http://blog.csdn.net/jiangcs520/article/details/17350927http://blog.fens.me/nodejs-async/…
async/await 继发执行与并发执行,看如何控制 两个异步函数 foo bar function foo() { return new Promise((resolve, reject) => { setTimeout(() => { console.log('foo:' + new Date().toLocaleString()) resolve('foo') }, 2000) }) } function bar() { return new Promise((resolve, rej…
一.async 带async关键字的函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回的不是promise,会自动用Promise.resolve()包装. async function test() { return 'test' } test(); 返回值为 Promise {<resolved>: "test"}. 二.await await等待右侧表达式的结果,这个结果是promise对象或者其他值.如果它等到的不是一个 promise…
阅读目录 回顾 Promise async await 字面理解 async.await 如何执行 await 操作符 总结 既然有了promise 为什么还要有async await ? 当然是promise 也不是完美的异步解决方案,而 async await 的写法看起来更加简单且容易理解. 回到目录 回顾 Promise Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值. Promise 对象是由关键字 new 及其构造函数来创建的.构造函数会,把一个叫做…
1.避免使用同步代码: // Good: write files asynchronously fs.writeFile('message.txt', 'Hello Node', function (err) { console.log("It's saved and the server remains responsive!"); }); // BAD: write files synchronously fs.writeFileSync('message.txt', 'Hello…
AsyncCallback 意义: 异步操作完成时调用的方法 语法1: 构造异步回调对象 AsyncCallback 异步回调对象名asyncCallback = new AsyncCallback(异步操作完成时调用的方法MyAsyncCallback); 语法2: 定义委托,并进行异步调用,异步调用完成后自动触发 委托类型Action fn委托名 = Run委托定义; 委托名fn.BeginInvoke(异步回调对象名asyncCallback ); 示例: using System; na…
参考:博客 https://www.cnblogs.com/chentianwei/p/10268346.html 参考: mongoose官网(https://mongoosejs.com/docs/models.html) 参考: 英文:Boosting Node.js和MongoDB with Mongoose 简介:mongoose Mongoose is a fully developed object document mapping (ODM) library for Node.j…
2种主要的models for how scope work. 最普遍的是Lexical Scope. 另一种 Dynamic Scope.(在Appendix a中介绍.和Lexical Scope 进行对比) Lex-time lexical scope is scope that is defined at lexing time. lexical scope是基于变量和blocks of scope被创建(被你,在write time). 不知道这是啥玩意! 我的理解就是定义作用域的有效…
前言:这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了..所以还是博客好== 第二章:在HTML中使用JavaScript 2.1 <script>元素: 即在HTML页面插入JS的主要方法.HTML4.01定义了以下JS属性(主要): async :表示立即下载脚本(只对外部脚本文件有效),但不妨碍页面中的其他操作. defer : 表示脚本可以延迟到文档完全被解析和显示之后再执行(只对外部脚本文件有效). src : 表示包含要执行代码的外部文件. type…
本篇目录: 6.1 基本用法 6.2 绑定值 6.3 修饰符 表单类控件承载了一个网页数据的录入与交互,本章将介绍如何使用指令v-model完成表单的数据双向绑定. 6.1 基本用法 表单控件在实际业务较为常见,比如单选.多选.下拉选择.输入框等,用它们可以完成数据的录入.校验.提交等. Vue.js提供了v-model指令,用于在表单类元素上双向绑定数据,例如在输入框上使用时,输入的内容会实时映射到绑定的数据上. 例如下面的例子: <div id="app"> <i…
本篇目录: 5.1 基本指令 5.2 条件渲染指令 5.3 列表渲染指令 v-for 5.4 方法与事件 5.5 实战:利用计算属性.指令等知识开发购物车 回顾一下第2.2节,我们己经介绍过指令(Directive)的概念了,Vue.js的指令是带有特殊前缀v-的HTML特性,它绑定一个表达式,并将一些特性应用到DOM上. 其实我们已经用到过很多Vue内置的指令,比如v-html.v-pre,还有上一章的v-bind. 本章将继续介绍Vue.js中更多常用的内置指令. 5.1 基本指令 5.1.…
本篇目录: 4.1 了解v-bind指令 4.2 绑定class的几种方式 4.3 绑定内联样式 DOM元素经常会动态地绑定一些class类名或style样式,本章将介绍使用v-bind指令来绑定class和style的多种方法. 4.1 了解v-bind指令 在第2章时,我们已经介绍了指令v-bind的基本用法以及它的语法糖,它的主要用法是动态更新HTML元素上的属性. 回顾一下下面的示例: <div id="app"> <a v-bind:href="u…
本篇目录: 2.1 Vue实例与数据绑定 2.2 指令与事件 2.3 语法糖 学习任何一种框架,从一个Hello World应用开始是最快了解该框架特性的途径. 我们先从一段简单的HTML代码开始,感受Vue.js最核心的功能: <!doctype html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport"…
本篇目录: 1.1 Vue.js 是什么 1.2 如何使用Vue.js 本章主要介绍与Vue.js有关的一些概念与技术,并帮助你了解它们背后相关的工作原理. 通过对本章的学习,即使从未接触过Vue.js,你也可以运用这些知识点快速构建出一个Vue.js应用. 1.1 Vue.js 是什么 Vue.js的官方文档中是这样介绍它的: 简单小巧的.渐进式JavaScript框架,是以应付任何规模的应用. 简单小巧是指Vue.js压缩后大小仅有20KB. 所谓渐进式(Progressive),就是你可以…
Getting Node.js Apps Production Ready 部署程序需要知道的方面: Environment variables Express.js in production Socket.IO in production(在线文章缺失这章) Error handling Node.js domains for error handling Multithreading with Cluster Multithreading with Cluster2 Event loggi…
Real-Time Apps with WebSocket, Socket.IO, and DerbyJS 实时程序的使用变得越来越广泛,如传统的交易,游戏,社交,开发工具DevOps tools, 云服务,新闻. 之所以如此是因为技术的进步.更大的带宽用来传输数据和更多的计算来处理和取回数据. HTML5的新实时连接标准叫做,WebSocket. 在浏览器,JavaScript给你一个对象WebSocket.这个对象是一个类,它有各类方法用于生成WebSocket protocol clien…
Building Node.js REST API Servers with Express.js and Hapi Modern-day web developers use an architecture consisting of a thick client and a a thin back-end layer.如AngularJS,ReactJs, VueJS.用来建立厚厚的client. 另一方面,他们使用REST APIs建立thin back-end layer. a repr…
Persistence with MongoDB and Mongoose https://github.com/azat-co/practicalnode/blob/master/chapter5/chapter5.md 学习mongodb的官方网站: https://university.mongodb.com/ (免费课程,-> study guide,-> exam) https://docs.mongodb.com/manual/tutorial/getting-started/ M…
TDD and BDD for Node.js with Mocha TDD测试驱动开发.自动测试代码. BDD: behavior-driven development行为驱动开发,基于TDD.一种自然化的测试语言. 例如,使用expect(response.status).to.equal(200)代替了TDD的assert.equal(response.status, 200) Mocha文档:https://mochajs.org/ chai: 官网文档:  https://www.ch…
Foreword this 关键字和prototypes 他们是用JS编程的基础.没有他们创建复杂的JS程序是不可能的. 我敢说大量的web developers从没有建立过JS Object,仅仅对待这门语言作为一个事件绑定胶水,在按钮和Ajax请求之间. 我也曾是他们的一员,但是当我了解到如何掌握prototypes并创建JS对象,一个世界的可能性对我打开了. Chapter 1: this Or That? Chapter 2: this All Makes Sense Now! Chap…
Chapter4: Hoisting 变量附加到哪个层次的scope,由它们在哪里和如何声明(let, var)来决定. Function scope/Block scope都有相同的法则:任何变量在一个scope内声明,则这个变量附加到这个作用域上. 但有一个细节问题:当声明declarations出现在一个作用域中的不同的位置的时候,scope附加如何与declarations协作? Chicken or The Egg? temptation: a strong desire to hav…