Javascript/Typescript
文章平均质量分 83
择思
专注技术积累
展开
-
理解 TypeScript 类型
引言这篇文章谈谈有关 TypeScript 类型的一些概念和原理。学习资料来源于网络,欢迎讨论。感兴趣的朋友可以阅读参考资料中的原始文章。如何理解 TypeScript 类型首先,我们可以将TypeScript的类型理解为一组值(Values)的集合。如果变量a属于A类型,那么所有可以赋值给变量a的元素就组成了A类型的集合。例如:let a: A; /* a is of type A ...原创 2020-04-09 10:30:52 · 378 阅读 · 0 评论 -
Angular 碎片 —— 自定义Directive
目录前言代码预览代码详解前言我们知道,AngularJS框架中,directive是一个重要的概念,是代码重用的基础。不过,该框架中directive的用法和配置稍显复杂。1.6版本后定义了新的component方法后,组件化编程相对更自然些。到了Angular框架中,component开始大行其道,出色的设计思想让组件化编程更为自然和易用了,而directive似乎销声匿迹了...原创 2018-08-25 22:55:57 · 394 阅读 · 0 评论 -
Angular 碎片 —— 样式封装
目录综述不封装仿真(Emulated)封装原生(Native)封装参考资料综述本文介绍Angular中的样式封装机制,以及背后的基本原理,供您参考。我们在写一个Angular Component的时候经常要指定该Component需要的样式。样式可以通过inline的方式在styles属性中定义,也可以通过指定一个外部样式文件定义需要的CSS。无论哪种方式,定义的样...原创 2018-08-26 19:52:35 · 1052 阅读 · 1 评论 -
ES6入门(一):块级作用域
我们知道,在ES5及之前的JavaScript标准中是没有定义块级作用域的。这导致在编程时会意外地犯一些微妙的错误。例如,局部变量提升会将全局变量的定义覆盖;for循环的局部变量在循环结束后依然有效等等。ES6标准引入了块级作用域的概念,结合let关键字,可以解决上述问题。一般的用法如下:function func() { let n = 1; if (true) { le原创 2016-10-29 12:13:17 · 1817 阅读 · 0 评论 -
AngularJS Scope 继承解析
AngularJS中scope之间的继承关系使用JavaScript的原型继承方式实现。本文结合AngularJS Scope的实现以及相关资料谈谈原型继承机制。基本原理在JavaScript中,每创建一个构造函数(constructor),就会同时给该函数生成一个指向原型对象的属性prototype。每个原型对象又获得一个constructor属性指向相应的构造函数,原型对象的其他属性和原创 2016-04-16 15:06:12 · 5046 阅读 · 0 评论 -
AngularJS Digest 过程解析
本文结合相关资料剖析Angular中的Digest过程。一、Digest 基本概念和原理Digest过程是Angular实现双向数据绑定的基础。由于对scope对象的改动需要及时反映的到HTML元素的属性上,Angular要不时地检查每个scope变量的变化,这个检查过程就是Digest(翻译中文为’消化‘,顾名思义,消化掉新的改变)。该过程由scope对象的$digest方法完成,通常不原创 2016-04-10 18:35:05 · 4540 阅读 · 0 评论 -
AngularJS 依赖注入解析
本文结合一些资料,谈谈AngularJS的依赖注入机制。主要参考资料有:1. AngularJS官方文档:https://docs.angularjs.org/guide/di2. Github文章:https://github.com/angular/angular.js/wiki/Understanding-Dependency-Injection3. 专著:Pro Angular原创 2016-03-26 16:42:15 · 21034 阅读 · 2 评论 -
从 AngularJS 模块定义说起
最近的项目使用了AngularJS作为主要前端框架,在使用模块时遇到一些有意思的问题,本文围绕模块的定义与加载的话题,小结一下我的体会。首先,定义一个Angular模块(module)很简单,直接使用angular模块的module方法即可,如:var myApp = angular.module('myApp', []);值得注意的是,module函数的第二个参数定义了该模块所依赖的原创 2016-03-15 21:32:53 · 11993 阅读 · 0 评论 -
深入浅出NodeJS笔记(五)---- Promise的序列执行
书中第四章异步编程介绍的内容比较丰富,今天读到支持序列执行的Promise一节,为加深理解,将代码和体会整理如下。让Promise支持序列执行的初衷是减少编码量。如书中所言,直接使用回调函数嵌套或者事件监听(Emitter)会导致大量的重复或者丑陋代码。而Promise有then方法,如果级联起来,代码逻辑清楚,内容简洁。首先,定义Promise和Deferred对象:var Prom原创 2016-04-04 19:09:04 · 4748 阅读 · 0 评论 -
JavaScript函数的四种调用模式
最近读到《JavaScript语言精粹》一书有关函数调用时this参数的阐述,总结如下:总的来说,JS的函数有4种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。四种模式的一大区别在于this参数的初始化方式不同。1. 方法调用模式当函数作为对象的一个属性,并通过点操作或下标操作提取时,就是当作方法来调用。此时this参数被绑定到该对象。这个绑定发生在函数调用原创 2015-12-19 21:25:07 · 835 阅读 · 0 评论 -
深入浅出NodeJS笔记(四)--- 事件订阅与雪崩问题
第四章 异步编程(一)异步编程的主要解决方案有三种:事件发布/订阅模式Promise/Deferred模式流程控制库Node中广泛使用了事件发布/订阅模式。在Node提供的核心模块中,有近半数都继承自EventEmitter类,在Web服务器编程常用的Response对象即是如此。雪崩问题:在高访问量、大并发量的情况下,如果缓存失效,大量的请求同时涌入数据库中,原创 2015-09-05 16:55:25 · 1951 阅读 · 0 评论 -
深入浅出NodeJS笔记(三)
第3章 异步I/O阅读了这章内容后,最大的收获是更好地理解了阻塞/非阻塞I/O和Node中异步I/O的含义。以前,谈到Node的异步I/O机制时,我就简单地理解为非阻塞I/O。实际上,这是不准确的。所谓I/O的阻塞与非阻塞,是操作系统对I/O操作的区分。执行阻塞I/O时,调用要等到所有相关的操作都结束时才算结束。这期间,CPU一直在等待I/O,不能处理其他任务,资源被浪费。执行非阻塞I/O原创 2015-07-25 18:25:28 · 857 阅读 · 0 评论 -
深入浅出NodeJS笔记(一)
*这个系列是阅读并实践朴灵的著作《深入浅出NodeJS》一书的笔记*第1章 Node简介1.在底层构建了很多异步I/O的API,意义在于可以从语言层面很自然地进行并行I/O操作。2. JavaScript是一门图灵完备的语言。3. Node的结构与Chrome相似,都是基于事件驱动的异步架构。4. Node将前端浏览器中广泛且成熟的事件引入后端,配合异步I/原创 2015-06-13 20:46:29 · 1437 阅读 · 0 评论 -
深入浅出NodeJS笔记(二)
第2章 模块机制1. JavaScript 先天缺乏的功能:模块。(如Java中的类,Python的import机制等)2. CommonJS规范的提出,为了弥补当前JavaScript没有标准的缺陷,使其具备开发大型应用的能力,包括服务端JavaScript应用程序,命令行工具,桌面图形界面应用程序,混合应用。3. Node借鉴了CommonJS的Modules规范实现了一套模块系统原创 2015-06-27 13:38:09 · 1145 阅读 · 0 评论