Object Oriented Javascript
类
如何声明一个类
在ES6之前,我们这样声明一个类
function Vehicle(engines) { |
当使用new
操作符调用一个函数(和函数名无关,用作类时习惯首字母大写)时,会使用该函数构造一个对象,大概发生了以下几件事:
在ES6之前,我们这样声明一个类
function Vehicle(engines) { |
当使用new
操作符调用一个函数(和函数名无关,用作类时习惯首字母大写)时,会使用该函数构造一个对象,大概发生了以下几件事:
Array.prototype.includes(value[, index]): boolean |
Why includes
, we have indexOf
already?
Flux is more of a pattern than a framework, and does not have any hard dependencies.
简单的说Flux就是一种前端MV*解决方案(javascript不像Java等后端代码严格独立出Model-View-Controller,一般是指Model和View层的分离)。然而,React声称传统的MVC模式实际上存在很大的弊端,并且不利于大型项目管理,所以FB大牛发明了一种号称优于MVC模式的解决方案 —— Flux。
关于FB给出的官方解释,众说纷纭,各位看官可以仔细琢磨一番。以下是Flux的流程图:
![Flux data flow] (https://github.com/facebook/flux/raw/master/docs/img/flux-diagram-white-background.png)
在React Flux中有三个重要的概念:Dispatcher、Stores、Views。
React是facebook团队打造的前端js框架,现在很多人都在使用React构造自己的前端项目,可见React已经非常成熟了,而且React的生态系统也非常完善。之前在segment fault和tui cool上拜读了很多关于React的文章,有幸能在新项目中来运用React。最开始就参照别人的demo写了一些简单的模块,懵懵懂懂也并没有理解React的优越性。在摸索了一段时间之后,发现React使用起来真是得心应手啊,自己也试着写一点对于React的总结:
React认为一切皆模块,一段js代码是一个模块,一个css样式文件是一个模块。这样一个较复杂的项目就可以分成很多个完全独立的模块,每个同事并行开发,然后再将这些模块组装好。
React支持也推荐使用CommonJs规范编写代码,使用require加载一个模块,使用exports对外暴露接口。如果你写过nodejs应该对这种语法非常熟悉。
#IamFloat{ float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/}
#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
要清楚的了解javascript运行逻辑,必须掌握javascript的作用域。这不仅有助于我们编写健壮的javascript代码,更有利于我们分析产生的代码bug。scope(作用域)、closure(闭包)、this(关键字)、namespace(命名空间)、function scope(函数作用域)、global scope(Global作用域)、lexical scope(词义作用域)、public/private scope(公共/私有作用域)等概念将在本文中介绍到。
在javascript中,scope指的是你代码运行环境的上下文。Scopes可以在全局被定义,也可以在局部被定义。了解javascript的scope有助于提升javascript developer的编码能力。
webpack是一个模块打包工具(module bundler),它可以管理模块间的依赖关系,模块可以是js,也可以是css,text等其它静态资源
安装node.js
通过npm安装webpacknpm install webpack -g
现在webpack已经安装到全局,你也可以通过命令行全局的使用webpack命令了
Web Worker是HTML5中新增的一项技术,用于Web程序实现后台处理。
JavaScript语言采用的是单线程模型,也就是说,所有任务排成一个队列,一次只能做一件事。随着电脑计算能力的增强,这一点带来很大的不便,无法充分发挥JavaScript的潜力。尤其考虑到,File API允许JavaScript读取本地文件,就更是如此了。
Web Worker的目的,就是为JavaScript创造多线程环境,允许主线程将一些任务分配给子线程。在主线程运行的同时,子线程在后台运行,两者互不干扰。等到子线程完成计算任务,再把结果返回给主线程。因此,每一个子线程就好像一个“工人”(worker),默默地完成自己的工作。