<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>刘钢的博客 - 我是UED &#187; 框架</title>
	<atom:link href="http://www.iamued.com/tag/%e6%a1%86%e6%9e%b6/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:51:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>如何量身打造一个前端框架</title>
		<link>http://www.iamued.com/qianduan/1404.html</link>
		<comments>http://www.iamued.com/qianduan/1404.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 07:00:38 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1404</guid>
		<description><![CDATA[转一篇：taobao拔赤的一篇文章 写的很好 查看原文 程序层面，重点是？ 框架包含：核心(core)、适配器(adapter)、基础接口(public api)、代码管理(sandbox &#38; plugin)、组件库(widgets)，显然，框架的重点在于基础接口、和代码管理机制的设计。widget的实现是基于框架提供的public api，public api interface一旦定型尽量不要更改，也就是说，设计要遵循编程基本原则：面向接口，而不是面向实现，这个原则的基本要求是接口的稳定性。因此，框架版本升级导致接口更改的情况可以不考虑？ 框架设计师应当将有限的精力放在adapter、public api、sandbox &#38; plugins上，以保证框架基础逻辑设计思路清晰，widget和外部plugin的实现则是纯粹工作量的堆积，可以由更多的人参与开发，以分担框架设计师的工作。 需不需要对core进行重构？ 比较纠结的问题是，要不要对core进行重构？即将适配器以下都由自己重构，完全放弃现有的jquery或者yui，这个看情况，个人认为，使用现成的“库”是比较聪明的选择，开源的初衷不也是这样吗？我们要做的，只是将jquery式的api或者yui式的api转换成我想要的api格式即可，api的实现，有什么重要呢？ 开发者的角色？ 框架设计：框架设计师着力设计public api和sandbox &#38; plugin，adapter可以另有人做，只要对adapter有规范完整的黑盒测试即可。 widget开发：可以由更多的人基于pbulic api开发大量的widget，入库保证有code review即可。 应用开发：任何人基于sandbox和widget都可以开发app了。 各自的视野？ 对于框架的使用者来说，他们的视野仅限于sandbox、plugin usage、widgets，手旁只要准备一本public api手册就天下无敌了。对于框架开发小组来说，着重维护widget和api，把项目中的widgets不断抽离、code review并入库。对于工程师来说，他们的视野是一本手册和一些demo，没有必要理解框架的细节。对于那些业余的人来说，让他们一眼看到这个框架有这么多widget和demo，他们就会傻乎乎的开始用了。。。 因此，框架的开发，在于专业、在于坚持、在于团队，三者缺一不可。。。]]></description>
			<content:encoded><![CDATA[<p>转一篇：taobao拔赤的一篇文章 写的很好 <a href="http://www.uedmagazine.com/ued/index.php?entry=entry100412-135038">查看原文</a></p>
<p><strong>程序层面，重点是？</strong></p>
<p>框架包含：核心(core)、适配器(adapter)、基础接口(public api)、代码管理(sandbox &amp; plugin)、组件库(widgets)，显然，框架的重点在于基础接口、和代码管理机制的设计。widget的实现是基于框架提供的public api，public api interface一旦定型尽量不要更改，也就是说，设计要遵循编程基本原则：面向接口，而不是面向实现，这个原则的基本要求是接口的稳定性。因此，框架版本升级导致接口更改的情况可以不考虑？</p>
<p><a href="javascript:openpopup('/ued/getpic.php?p=http://fmn.xnimg.cn/fmn040/20100412/1245/p_large_wG5X_7685000444862d11.jpg',800,600,false);"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/04/150358kfX.jpg" border="0" alt="" /></a></p>
<p>框架设计师应当将有限的精力放在adapter、public api、sandbox &amp; plugins上，以保证框架基础逻辑设计思路清晰，widget和外部plugin的实现则是纯粹工作量的堆积，可以由更多的人参与开发，以分担框架设计师的工作。</p>
<p><strong>需不需要对core进行重构？</strong></p>
<p>比较纠结的问题是，要不要对core进行重构？即将适配器以下都由自己重构，完全放弃现有的jquery或者yui，这个看情况，个人认为，使用现成的“库”是比较聪明的选择，开源的初衷不也是这样吗？我们要做的，只是将jquery式的api或者yui式的api转换成我想要的api格式即可，api的实现，有什么重要呢？</p>
<p><strong>开发者的角色？</strong></p>
<p>框架设计：框架设计师着力设计public api和sandbox &amp; plugin，adapter可以另有人做，只要对adapter有规范完整的黑盒测试即可。<br />
widget开发：可以由更多的人基于pbulic api开发大量的widget，入库保证有code review即可。<br />
应用开发：任何人基于sandbox和widget都可以开发app了。</p>
<p><strong>各自的视野？</strong></p>
<p>对于框架的使用者来说，他们的视野仅限于sandbox、plugin usage、widgets，手旁只要准备一本public api手册就天下无敌了。对于框架开发小组来说，着重维护widget和api，把项目中的widgets不断抽离、code review并入库。对于工程师来说，他们的视野是一本手册和一些demo，没有必要理解框架的细节。对于那些业余的人来说，让他们一眼看到这个框架有这么多widget和demo，他们就会傻乎乎的开始用了。。。</p>
<p>因此，框架的开发，在于专业、在于坚持、在于团队，三者缺一不可。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1404.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

