我理解的架构:关键词不是“高精尖”,而是“合适”javascript
全文html
Kissy5.0前端
NEJjava
要验证的组件node
1. treejquery
2. datagridwebpack
3. combo/autocompletegit
要验证的方面github
1. API(特性)支持程度web
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
而虚拟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 讲稿