JavaScript有很强的面向对象编程的能力,面向对象编程是目前主流的编程范式。它将真实世界中各种复杂的关系,抽象为一个个对象,完成对真实世界的模拟。那么对象到底是什么?我们常说“new一个对象”,那么对象又是如何被“new”出来的?
angular2 HttpClient
大多数前端应用都需要通过http协议来和后端服务器通信。现代浏览器提供两种不同的API发起http请求:XMLHttpRequest
接口和fetch
API。
基于浏览器的XMLHttpRequest
接口,@angular/common/http
中的HttpClient
类为应用程序提供了一个简化的API来实现http功能。HttpClient
带来的其他优点包括:可测试性、强类型的请求和响应对象、发起请求与接收响应时的拦截器支持,以及更好的、基于可观察(Observeable)对象的错误处理机制。
TypeScript class类
JavaScript使用函数和基于原型的继承来创建可重用的组件,这和常见的一些面向对象语言比如PHP、C#等来讲是有很大差别的,从ES6开始,就可以在js中使用基于类的面向对象的方式。TypeScript提供了类这个特性。
css3矩阵变换
矩阵函数matrix()
和matrix3d()
是理解css3变换的两个重要途径,在大多数情况下面,我们使用css3的变换语法糖函数translate()``skew()``rotate()
以及scale()
等函数来进行元素的变换。然而,每一个变换的语法糖后面都是一个等价的矩阵。了解矩阵变换对于了解css3到底是如何变换的是非常有用的。
css3-transform
css3的transform
属性允许元素样式在二维空间中通过css进行形变。css的视觉格式模型(visual formatting model)给每一个元素的放置(positioned)描述了一个坐标系统。位置和大小在坐标空间中(coordinate space)被认为是以像素表示的,开始于原点由确定的(positive)值至右至下。
坐标空间可以通过transform
属性来修改。使用transform
属性,元素可以被移动(translate)、旋转(rotate)、缩放(scale)、扭曲(skew)。
css3 border属性特殊用法
css的border属性是一个用于设置各种元素的边界样式的属性。比如我们常用的给一个元素设置边框:
1 | border: 1px solid #ccc; |
上面设置了一个宽度为1px,实线并且颜色为ccc
灰色的边框。但除了这些简单的用法,我们还可以经过特殊设置,画出一些特殊的东西来,比如三角形或者其他不规则的东西。
typescript 接口
TypeScript的核心原则是对所有值具有的结构进行类型检查,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。比如:
1 | interface HeroInterface { |
我们定义的HeroInterFace接口好比一个名字,用来描述我们的需要参数的样子,在这里我们可以看到,我们需要个有属性name
和zh_name
属性的对象,且对象属性的类型也要正确。如果传入的对象满足上面的条件,那么它就是被允许的。
解决在webstorm中编写nodejs时的代码提示问题
在webstorm中编写node代码,需要引入一些库比如:
1 | // 提供http服务端和客户端功能 |
发现引入的语句上面的都有提示:unresolved function or method require
,包括在使用库里面的方法的时候,都没有相应的提示,而且在方法上都有波浪号,也提示:unresolved function or method require
,这就很蛋疼了。怎么解决呢?
树莓派起步
javascript复制文本到剪贴板
最近遇到个需求,需要在页面上点击一个复制按钮,然后复制对应的文本信息到剪贴板。脑子里完全是懵懵的,一般的处理都是页面的逻辑处理,还没有涉及过这方面的。
如何复制一段文本?当我们复制的时候,是先用鼠标选中某一段文字,然后按下ctl+c进行复制,那JavaScript如何操作浏览器呢?