代码改变世界

前端选型材料

2015-09-25 09:56  chen.simon  阅读(330)  评论(0编辑  收藏  举报

我理解的阿里无线前端“架构”(半鸡汤,少干货)

  • 两个中心 (端和效率)
  • 八个方向
    • 基础库+功能组件+UI框架 (对应“效率”)
    • “端”的延伸 (对应“端”)
    • 规范和工程流程
    • 工具链路
    • 数据和性能
    • 自动化测试+持续集成
    • 前端安全
    • 服务和周边

我理解的架构:关键词不是“高精尖”,而是“合适”

全文

构建高可伸缩性的WEB交互式系统(下)

Kissy5.0

NEJ

要验证的组件

1. tree

2. datagrid

3. combo/autocomplete

要验证的方面

1. API(特性)支持程度

2. 样式分离难易程度

3. 性能

4. 兼容性

5. 使用广泛程度

 

相关材料

 

Javascript模块化编程(一):模块的写法

Javascript模块化编程(二):AMD规范

目前,通行的Javascript模块规范共有两种:CommonJSAMD。我主要介绍AMD,但是要先从CommonJS讲起。

CommonJS

var math = require('math');
  math.add(2, 3);

node.js的模块系统,就是参照CommonJS规范实现的。

JavaSript模块规范 - AMD规范与CMD规范介绍

AMD Asynchronous Module Definition 规范:https://github.com/amdjs/amdjs-api/blob/master/AMD.md

require(['math'], function (math) {

    math.add(2, 3);

  });

目前,主要有两个Javascript库实现了AMD规范:require.jscurl.js

require:https://github.com/amdjs/amdjs-api/wiki/require

RequireJS: http://www.requirejs.org/

含有相对路径的模块搜寻

Relative module ID resolution examples:

if module "a/b/c" asks for "../d", that resolves to "a/d"
if module "a/b/c" asks for "./e", that resolves to "a/b/e"

AMD与CMD标准的区别是什么呢?这里引用玉柏自己的回答,具体可参考:http://www.zhihu.com/question/20351507/answer/14859415

  1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
  2. CMD 推崇依赖就近,AMD 推崇依赖前置。
  3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
  4. 还有一些细节差异,具体看这个规范的定义就好,就不多说了。

 

 

Javascript开发 - 那些构建/自动化/*** 的工具

如今比较流行的单元测试框架有:QUnit,Jasmine,Mocha,项目地址:

webpack: http://webpack.github.io/docs/

但Node.js毕竟是用于服务端的,为了将模块化技术用于浏览器,人们又造出了一大堆工具:RequireJSBrowserifyLABjsSea.jsDuo等。同时,由于Javascript的标准没有对模块的规范进行定义,人们又定义了一系列不同的模块定义:CommonJSAMDCMDUMD等。这真是一件令人悲伤的事情,希望ES6 Module的出现能中止这种分裂的状态。

Webpack同时支持CommonJS和AMD形式的模块,对于不支持的模块格式,还支持对模块进行shimming。举个简单的例子:

React

轻松入门React和Webpack   http://segmentfault.com/a/1190000002767365

而虚拟DOM干了什么?它直接用JavaScript实现了DOM树(大致上)。组件的HTML结构并不会直接生成DOM,而是映射生成虚拟的JavaScript DOM结构,React又通过在这个虚拟DOM上实现了一个 diff 算法找出最小变更

 

就Javascript项目而言,开源社区比较流行持续集成服务就是 Travis CI ,它支持很多种语言,配合单元测试工具。API文档:http://docs.travis-ci.com/user/languages/javascript-with-nodejs/

 

infoq上关于前端的一些材料

小之美好 -- 前端工程产品实践  http://www.infoq.com/cn/presentations/front-end-engineering-product-practice  讲稿

与产品紧密 前端工程师的成与责 http://www.infoq.com/cn/presentations/success-and-responsibility-of-front-engineer  讲稿

 

前端开发体系建设日记 https://github.com/fouber/blog/issues/2 提的述求跟我们部分述求很相近