Javascript

ECMAScript6 (4) 类

Submitted by Lizhe on Thu, 03/08/2018 - 15:50

类的声明

ECMAScript6中有一种与其他语言中类似的类特性: 类声明

同时它也是ECMAScript6中最简单的类形式

要声明一个类

class Student{
    constructor(name){
        this.name = name;
    }
    sayName(){
        console.log(this.name);
    }
}

new Student('Li').sayName();

然后强调一下构造器中的this

其值会被绑定到调用this的函数的最近的父对象

ECMAScript6 (3) 对象

Submitted by Lizhe on Thu, 03/08/2018 - 15:21

ECMAScript(5) 中如果为对象添加方法, 必需通过指定名称并完整定义函数来实现, 例如下面的例子

var person = {
    name:"Li",
    sayName: function(){
        console.log(this.name);
    }    
}

person.sayName();

在ECMAScript6中等价于

ECMAScript6 (2) 函数

Submitted by Lizhe on Thu, 03/08/2018 - 12:18

Javascript 中, 无论函数定义中声明了多少形参, 都可以传入任意数量的参数,

也可以在定义函数时添加针对参数数量的处理逻辑, 当已定义的形参无对应的传入参数时为其指定一个默认值

在ECMAScript5 和早期版本中, 你可以通过以下方式创建函数并赋上默认值

function testArguments(a,b,c){
    b = "default b ";
    c = "default c ";
    
    console.log(a + b + c);
}

testArguments("a ");

上面的代码会输出

ECMAScript6 (1)

Submitted by Lizhe on Wed, 03/07/2018 - 17:23

 

ES6 中使用let和const 都可以声明变量, 但是它们与var不同

虽然var可以声明局部变量但是无论在哪里声明都会被当成在当前作用域顶部声明的变量, 这就是提升机制

function getValue(condition){

    if(condition){

        var value = "blue";

        return value;

    }else{

        return null;

    }

}

上面的代码编译后等价于

function getValue(condition){

    var value;

    if(condition){

React 入门 (1)

Submitted by Lizhe on Mon, 03/05/2018 - 10:07

本文将讨论如下问题

•Nodejs, NPM, Server, React 之间的关系

•异步IO模型

•FR Admin 项目结构

•如何从头创建一个自己的React项目

•React的模块化思想

•什么是JSX

 

Node.js 就是运行在服务端的 JavaScript(java)

webpack-dev-server是一个小型的Node.js Express服务器(tomcat)

NPM是随同NodeJS一起安装的包管理工具(mvn)

React主要用于构建UI

 

syncio

 

 

每线程/每请求的方式目前还被Apache所采用.

Nodejs (5) 异步编程

Submitted by Lizhe on Fri, 01/05/2018 - 14:53

服务端异步编程的核心思想在于: 事件发生会触发响应逻辑. 在Node的世界里流行两种响应逻辑管理方式: 

回调和事件监听

回调通常用来定义一次性响应的逻辑

事件监听器 本质上也是一个回调, 不同的是它跟一个事件相关联. 

var http = require('http');
http.createServer(
    function(req,res){
        res.writeHead(200,{'Content-type':'text/plain'});
        res.end('helloworld\n');
    }
).listen(3000);

回调是一个函数, 它被当做参数传给异步函数, 它描述了异步操作完成之后要做什么.

上面例子中的创建了一个HTTP服务器,并用回调定义响应逻辑

Nodejs (4) 异步I/O

Submitted by Lizhe on Thu, 01/04/2018 - 12:32

单线程同步编程模型会因阻塞I/O导致硬件资源得不到更优的使用

多线程编程模型也因为编程中的死锁, 状态同步等问题让开发人员头疼.

Node在两者之间给出了它的方案, 利用单线程, 远离多线程死锁, 状态同步等问题, 利用异步I/O, 让单线程远离阻塞, 以更好的使用CPU

异步I/O可以算做Node的特色 , 因为它是首个大规模将异步I/O应用在应用层上的平台, 它力求在单线程上将资源分配得更高效

 

为了弥补单线程无法利用多核CPU的缺点, Node提供了类似前端浏览器中Web Workers的子进程, 该子进程可以通过工作进程高效地利用CPU和I/O

 

Node 自身的执行模型为 事件循环, 正是它使得回调函数十分普遍

在进程启动时, Node便会创建一个类似于while(true)的循环, 每执行一次循环体的过程我们称为Tick. 每个Tick的过程就是查看是否有事件需要处理, 如果有, 就取出事件及其及相关的回调函数. 如果存在相关的回调函数, 就执行它们, 然后进入下一次循环, 如果不再有事件处理, 就退出进程.

 

观察者

Nodejs (3) NPM与包

Submitted by Lizhe on Wed, 01/03/2018 - 15:39

包和NPM是将模块联系起来的一种机制

包 由 包结构 和 包描述文件 组成

package.json 包描述文件
bin 用于存放可执行二进制文件的目录
lib 用于存放JavaScript代码的目录
doc 用于存放文档的目录
test 用于存放单元测试文档

 

包描述文件是一个JSON格式的文件 package.json , 位于包的根目录下, 是包的重要组成部分

包规范定义可以帮助Node解决依赖包安装的问题, NPM 正是基于该规范进行了实现