只要是代码就好
暂时未有相关通用技术能力~
阿里云技能认证
详细说明除了惯例的面对对象的思想,另一种较流行的通过可复用组件创建类的方法是将简单的类混合到一起。你可能对这种混合的方式比较熟悉或对Scala语言的特性有理解,这种模式在JavaScript社区也有一定的人气。
软件工程的一个主要部分就是构建组件,构建的组件不仅需要具有明确的定义和统一的接口,同时也需要组件可复用。支持现有的数据类型和将来添加的数据类型的组件为大型软件系统的开发过程提供很好的灵活性。 在C#和Java中,可以使用"泛型"来创建可复用的组件,并且组件可支持多种数据类型。
在JavaScript中,函数是构成任何应用程序的基础块。通过函数,你得以实现建立抽象层、模仿类、信息隐藏和模块化。在TypeScript中,虽然已经存在类和模块化,但是函数依旧在如何去"处理"事件的问题上起关键作用。
本文概述了TypeScript中如何使用模块以各种方式来组织代码。我们将涵括内部和外部的模块,并且讨论他们在适合在何时使用和怎么使用。我们也会学习一些如何使用外部模块的高级技巧,并且解决一些当我们使用TypeScript的模块时遇到的陷阱。
类型检查专注于解析值所具有的"形态",这是TypeScript的核心原则之一。这个有时候被称为"duck typing"或者"structural subtyping"。在TypeScript中,Interface中写入这些类型的命名规范,并且也是一种强有力的方式来对你的代码或者项目的外部代码进行约束。
传统的JavaScript注重用函数和基于原型的继承来创建可复用的组件,但这可能让用习惯面对对象方式的程序员感到棘手,因为他们的继承和创建对象都是由类而来的。从JavaScript的下一个版本,ECMAScript 6开始,JavaScript程序员就能够用基于这种基于类的面对对象方式来创建编写自己的程序了。
在学习TypeScript之前,我们需要先知道怎么才能让TypeScript写的东西正确的运行起来。有两种方式:使用Visual studio 和使用 NodeJs。 这里我选择的是NodeJs来编译TypeScript,因为我笔记本上的VS是2012的,在TypeScript的官网看到下载是TypeScript for VS2013和TypeScript for VS2015。
后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译、持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译、持续更新 ) JavaScript 上分小技巧(二) 第三篇地址:( 译、持续更新 ) JavaScript 上分小技巧(三) #59 - ES6,var vs let var关键字定义的变量根据定义的环境用于function内,function外或者全局;而let定义的变量只用于"块"范围。
最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL)、(学习)TypeScript,(基础操作)MongoDB。
考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译、持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译、持续更新 ) JavaScript 上分小技巧(三) 第四篇地址:( 译、持续更新 ) JavaScript 上分小技巧(四) #30 - 将true的/false的值转换成boolean类型你可以通过!!操作将为true/为false的值转换为boolean类型。
前段时间花时间看了大半的《High Performance JavaScript》这本书啊,然后就开始忙项目了,庆幸最忙的一周已经熬过去了。由于空不出时间,这个月写的学习笔记也不多,忙完最苦X的一周,这两天晚上也算是挑灯夜读了...终于是在残血之际将这本书shut down了... 既然读完了,总归是要学到些什么的。
最近项目比较忙额,白天要上班,晚上回来还需要做Angular知识点的ppt给同事,毕竟年底要辞职了,项目的后续开发还是需要有人接手的,所以就占用了晚上学习的时间。本来一直不打算写这些第三方插件的学习笔记,不过觉得按需加载模块并且成功使用这个确实是个好处,还是记录下来吧。
针对jQuery随便写些觉得还挺实用的一些东西,也没系统的去理一番,只是想到哪写到哪,写的不完全也请多见谅。 jQuery和其他javascript库产生$符号冲突了?$符号想必用jQuery的人都不生疏,$即代表着jQuery函数。
之前有写过一篇关于Angular自带的路由:ngRoute。今天来说说Angular的第三方路由:ui-router。那么有人就会问:为什么Angular有了自带的路由,我们还需要用ui-router呢?这里简单明了的说明下ngRoute和ui-router的区别吧,其实也没很大的区别,主要的就是ngRoute针对于单视图,而ui-router可用于多视图(这里说的视图是指在页面内我们可控制的,可变化的区域)。
众所周知,Javascript是单线程执行的,这也就是说:JavaScript在同一个时间上只能处理一件事。他不像C,Java等这些多线程的,可以开不同的线程去同时处理多件事情。 那么为什么别的语言都可以这么方便的去开多个线程去同时执行多个任务,JavaScript却不行呢? “天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能” --《孟子》 正是因为JavaScript背负着重大的使命,所以他只能默默的看着别人拥有多线程。
首先,还是用比较官方的文字描述来解释下JavaScript: JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
今天突然就想写写$digest和$apply,这些都是脏值检查的主体内容。 先以普通js来做一个简单的监控例子吧: var div = ducoment.getElementById("myDiv"); div.addEventListener("click",function(e){ console.log(e); }) 在这里,我们给一个div绑定了个点击事件,并且给这个绑定事件一个回调函数。
$cookiesProvider 使用$cookiesProvider改变$cookies服务的默认行为。 默认属性 path:字符串,cookies只在这个路径及其子路径可用。默认情况下,这个将会是出现在你基础标签上的网址路径。
ngRoute $routeProvider 配置路由的时候使用。 方法: when(path,route); 在$route服务里添加一个新的路由。 path:该路由的路径。 route:路由映射信息。
$resource 创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互。 需要注入 ngResource 模块。angular-resource[.min].js 默认情况下,末尾斜杠(可以引起后端服务器不期望出现的行为)将从计算后的URL中剥离。
Filter Ng里的过滤器。 currency:把一个数字格式化成货币模式(如$1,234.56)。当没有提供任何货币符号时,默认使用当前区域的符号。 使用: HTML:{{ currency_expression | currency:symbol:fractionSize}} JS:$filter(“currency”)(amount,symbol,fractionSize); amount:数值,过滤的值。
$templateCache 第一次使用模板,它被加载到模板缓存中,以便快速检索。你可以直接将模板标签加载到缓存中,或者通过$templateCache服务。 通过script标签: This is the content of the template 备注:script标签模板不需要包含在文档头部。
$sce $sce 服务是AngularJs提供的一种严格上下文转义服务。 严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式。
$q 一个帮助处理异步执行函数的服务。当他们做完处理时,使用它们的返回值(或异常)。 受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用。 $q的两种方式---这是一个更类似于Kris Kowal Q或jQuery的递延实现,另一种在一定程度上类似的ES6承诺。
$location $location服务解析浏览器地址中的url(基于window.location)并且使url在应用程序中可用。将地址栏中的网址的变化反映到$location服务和$location的变化反映到浏览器地址栏。
$interpolate 将一个字符串编译成一个插值函数。HTML编译服务使用这个服务完成数据绑定。 使用:$interpolate(text,[mustHaveExpression],[trustedContext],[allOrNothing]); text:需要被编译的字符串。
$animate $animate服务提供了基本的DOM操作功能如在DOM里插入、移除和移动元素,以及添加和删除类。这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画。
$http $http是Angular的一个核心服务,它有利于浏览器通过XMLHttpRequest 对象或者 JSONP和远程HTTP服务器交互。 $HTTP API 是基于 $q服务暴露的deferred/promise APIs。
$anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素。 监听$location.hash()并且滚动到url指定的锚点的地方。可以通过$anchorScrollProvider.disableAutoScrolling()禁用。
form.FormController FormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始。 每个表单指令创建一个FormController实例。
angular.Module Angular模块配置接口。 方法: provider(name,providerType); name:服务名称。 providerType:创建一个服务的实例的构造函数。
这里讲的是一些scope的操作,如创建/注销/各种监听及scope间的通信等等。 $rootScope.Scope 可以使用$injector通过$rootScope关键字检索的一个根作用域。 可以通过$new()方法创建子作用域。
$compile 这是个编译服务。编译一段HTML字符串或者DOM的模板, 产生一个将scope和模板连接到一起的函数。 编译服务主要是为指令编译DOM元素,下面的一大段也是主要介绍指令的。 下面是一个被声明的带指令定义对象的指令的示例: var myModule = angular.
可能之前的api写的有些枯燥吧,因为不烧脑,不需要很多逻辑思维来做处理,那么之后的文章会有趣很多,慢慢的开始烧脑了,准备好大量脑细胞的死亡吧~ 先来篇简单的缓存服务。 本文将api文档里的$cacheFactory和 $cacheFactory.Cache 放到一起学习,其实就差不多的东西。
这两个都是HTML DOM嵌入指令 ngInclude 读取,编译和插入外部的HTML片段。 格式:ng-include=“value” class=”ng-include:value” value:string类型 模板id或者模板url ex:表达式,载入的时候执行。
在组合这些ng指令写到一篇文章里的时候,基本是有规则的,本兽会将功能相似相近的一类整合到一篇文章,方便理解和记忆。 这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断。 ngIf ngIf指令会根据指定的表达式返回的boolean类型值对该元素做添加到/移除出Dom树的操作。
ngReadonly 该指令将input,textarea等文本输入设置为只读。 HTML规范不允许浏览器保存类似readonly的布尔值属性。如果我们将一个Angular的插入值表达式转换为这样的属性,那么当浏览器删除该属性时,绑定信息就会丢失。
ngList 在文本输入的分隔的字符串和字符串数组间做转换,可以是一个固定的字符串分隔符(默认逗号)或正则表达式。 格式:ng-list=”value” value:表达式 通过这个值分隔字符串。
ngKeydown/ngKeypress/ngKeyup 该指令在按键按下/按键按下/按键松开时执行指定表达式。 ngKeydown和ngKeypress略有不同,目前的测试是ngKeypress针对系统按键是无效的,而ngKeydown可以。
ngHref 在Angular程序没完成改变链接上用{{hash}}方式绑定的href值的时候,当用户点击该链接会跳到一个错误的页面。 格式:ng-href=”value” value:表达式。 使用代码: 点击进入xxxxx网站 如果href绑定的url是动态绑定(从就是代...
ngCsp 处理CSP(上下文安全策略)的支持。 当开发如google浏览器的扩展时候这个就必须使用。 CSP禁止应用程序使用eval和Function(string)生成的函数。如果我们需要兼容,我们只需要使用$parse执行getterfn而不违反这些限制。
ngCloak ngCloak指令是为了防止Angular应用在启动加载的时候html模板将会被短暂性的展示。这个指令可以用来避免由HTML模板显示造成不良的闪烁效果。 格式: ng-cloak class=“ng-cloak“ 使用代码: {{'Hello World'}} ...
这几个都关于样式及类名修改的,所以先把样式代码贴上吧。 .red{color:red} .blue{color:blue} 写案例用到的样式就这么简单的两个,下面进入正题。 ngClass ngClass指令允许在HTML标签上通过绑定一个代表所有将被添加的类的表达式去动态的设定CSS类名。
ngChange 当用户更改输入时,执行给定的表达式。表达式是立即进行执行的,这个和javascript的onChange事件的只有在触发事件的变化结束的时候执行不同。 格式:ng-change=”value” value: 表达式。
ngApp 使用这个指令自动启动一个AngularJS应用。ngApp指令指定了应用程序的根节点,通常会将ngApp放置在网页的根节点如或标签的。 格式:ng-app=”value” value:当前应用程序模块的名称。
angular.isArray 判断括号内的值是否为数组。 格式:angular.isArray(value); value: 被判断是否为数组的值。 --------------------------------------------------------------- angular.isDate 判断括号内的值是否是一个时间。
angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入。 格式:angular.injector(modules); modules: Array 注入的模块(一个或多个)。
angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组。迭代器函数与迭代器(value、key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关键或数组元素索引。
angular.identity 函数返回本身的第一个参数。这个函数一般用于函数风格。 格式:angular.identity() 使用代码: (function () { angular.
angular.equals 对比两个对象/值是否相等。支持值类型、正则表达式、数组和对象。 如果下列至少有一个是正确的,则将两个对象/值视为相等。 两个对象/值能通过===比较。 两个对象/值是同一类型/他们的属性一致并且通过angular.equals详细比较。