关于JavaScript库和框架的
API设计的思考两三例

作者
盛大创新院 研究员 贺师俊 (hax)
最后更新时间
Practical API Design

Practical API Design

Cluelessness 无绪

选择性无绪

评价API好坏的标准

评价API好坏的标准:jQuery

评价API好坏的标准:URL route

评价API好坏的标准:某python Web框架

urlpatterns = patterns('',    
  (r'^articles/(?P<year>\d{4})/$', views.year_archive),    
  (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', views.month_archive),    
)	
	

评价API好坏的标准:Grails

static mappings = {  
  "/articles/$year/" (view:'year_archive') {  
	constraints { year(matches:/\d{4}/) }  
  }  
  "/articles/$year/$month" (view:'month_archive') {  
	constraints {  
	  year(matches:/\d{4}/)  
	  month(matches:/\d{2}/)  
	}  
  }  
}  	
	

评价API好坏的标准

(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', views.month_archive)
"/articles/$year/$month" (view:'month_archive') {  
  constraints {  
    year(matches:/\d{4}/)  
    month(matches:/\d{2}/)  
  }
}

评价API好坏的标准:
正则表达式 vs 内嵌变量的字符串

评价API好坏的标准:
正则表达式 vs 内嵌变量的字符串

API演进过程中的兼容性问题

坑爹的getElementsByClassName

坑爹的Object.prototype

对于不支持的功能应该抛异常还是静默失败?

风格

Prototype开创的短名字

Prototype的短名

更多的短名字

更多更多的短名字

还有……

“_”作为占位符

用undefined作为占位符而不是“_”如何?

用undefined作为占位符而不是“_”如何?

重载形式的Accessor

论KISSY中一则API的设计

具体实现对API的影响

具体实现对API的影响

总结