前端选型材料
2015-09-25 09:56 chen.simon 阅读(330) 评论(0) 编辑 收藏 举报我理解的阿里无线前端“架构”(半鸡汤,少干货)
- 两个中心 (端和效率)
- 八个方向
- 基础库+功能组件+UI框架 (对应“效率”)
- “端”的延伸 (对应“端”)
- 规范和工程流程
- 工具链路
- 数据和性能
- 自动化测试+持续集成
- 前端安全
- 服务和周边
我理解的架构:关键词不是“高精尖”,而是“合适”
构建高可伸缩性的WEB交互式系统(下)
要验证的组件
1. tree
2. datagrid
3. combo/autocomplete
要验证的方面
1. API(特性)支持程度
2. 样式分离难易程度
3. 性能
4. 兼容性
5. 使用广泛程度
相关材料
目前,通行的Javascript模块规范共有两种:CommonJS和AMD。我主要介绍AMD,但是要先从CommonJS讲起。
var math = require('math'); math.add(2, 3);
node.js的模块系统,就是参照CommonJS规范实现的。
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.js和curl.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
- 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
- CMD 推崇依赖就近,AMD 推崇依赖前置。
- AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
- 还有一些细节差异,具体看这个规范的定义就好,就不多说了。
Javascript开发 - 那些构建/自动化/*** 的工具
如今比较流行的单元测试框架有:QUnit,Jasmine,Mocha,项目地址:
webpack: http://webpack.github.io/docs/
但Node.js毕竟是用于服务端的,为了将模块化技术用于浏览器,人们又造出了一大堆工具:RequireJS、Browserify、LABjs、Sea.js、Duo等。同时,由于Javascript的标准没有对模块的规范进行定义,人们又定义了一系列不同的模块定义:CommonJS、AMD、CMD、UMD等。这真是一件令人悲伤的事情,希望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 讲稿