<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title><![CDATA[GreenGnn.ORG - 2009 - 9]]></title>
<link>http://www.greengnn.org/index.php/feed/2009/09/</link>
<language>zh-cn</language>
<description><![CDATA[以HTML为中心的WEB体验]]></description>
<pubDate>Fri, 30 Jul 2010 23:42:33 -0500</pubDate>
<item>
<title><![CDATA[模块化之HTML CSS IMG]]></title>
<link>http://www.greengnn.org/index.php/2009/09/23/mode-with-html-css-images.html</link>
<pubDate>Wed, 23 Sep 2009 08:51:05 +0000</pubDate>
<category><![CDATA[HTML]]></category>
<category><![CDATA[CSS]]></category>
<description><![CDATA[页面模块化的实施，这里指的是针对除去JavaScript部分的页面代码进行模块化实施。通过html css 图片进行模块化。
页面模块化的实施思路是高度耦合的页面片段封装，模块布局作为公开接口，高度...]]></description>
<guid>http://www.greengnn.org/index.php/2009/09/23/mode-with-html-css-images.html</guid>
<slash:comments>9</slash:comments>
<comments>http://www.greengnn.org/index.php/2009/09/23/mode-with-html-css-images.html#comments</comments>
<content:encoded><![CDATA[<p>页面模块化的实施，这里指的是针对除去JavaScript部分的页面代码进行模块化实施。通过html css 图片进行模块化。<br />页面模块化的实施思路是高度耦合的页面片段封装，模块布局作为公开接口，高度耦合的页面进行封装，使用独立的css文件，高度耦合的图片进行封装，给某类相关性强的图片建立文件夹。<br />页面模块化的目的是，实现多人协同开发页面，提高页面研发速度和降低维护难度。研发速度的提升体现在多人协同并行开发，维护难度体现在减少版本的混乱，根据模块区分版本降低版本间代码冲突和文件错误覆盖。</p><p><strong>拆分页面模块，从小到大的分解 </strong><br />1. 拆分页面模块<br />一个页面有很多个小单元模块组成，他来自有原始需求文档，比如<br />logo，导航，内容1，内容2，内容3，内容4，尾部导航，版权信息等等。<br />根据他们就可以拆分出基本的模块。<br />2. 拆分网站模块<br />将整个网站安排频道或者分类进行拆分，比如<br />首页，内容页，文字列表页，图片列表页，频道1页面，频道2页面，分类1页面，分类2页面，后台管理页面，等等<br />3. 每个网站作为一个模块。比如<br />商城站，支付站，论坛，三个站独立为三个大模块。<br /><!--more--><br /><strong>模块化实现</strong><br />1. 高度耦合提取为一个模块，将模块代码作用域进行控制<br />代码1.非继承模块，通过后台选择符方式控制作用域</p><pre>
&lt;div class="mode"&gt;
	&lt;h3 class="title"&gt;title&lt;/h3&gt;
	&lt;div class="con"&gt;
		con
	&lt;/div&gt;
	&lt;a class="more"&gt;more&lt;/a&gt;
&lt;/div&gt;

.mode {}
.mode .title {}
.mode .con {}
.mode .more {}

&lt;div class="footer"&gt;
	&lt;ul&gt;
	 &lt;li&gt;&lt;a href="" title=""&gt;关于&lt;/a&gt;&lt;/li&gt;
	 &lt;li&gt;&lt;a href="" title=""&gt;合作&lt;/a&gt;&lt;/li&gt;
	 &lt;li&gt;&lt;a href="" title=""&gt;招聘&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;Copyright &copy; 2009 某公司 版权所有&lt;/p&gt;
&lt;/div&gt;

.footer {}
.footer ul {}
.footer p {}
</pre><p>代码2.继承模块，提取众多模块中公共部分，具体模块通过优先级进行处理。继承模块方面整站某些模块的批量修改处理，也提高复用性降低代码重复。</p><pre>
.mode .title {}
.mode .con {}
.mode .more {}

&lt;div class="mode mode2"&gt;
	&lt;h3 class="title"&gt;title&lt;/h3&gt;
	&lt;div class="con"&gt;
		con
	&lt;/div&gt;
	&lt;a class="more"&gt;more&lt;/a&gt;
&lt;/div&gt;
</pre><p>2. 页面模块<br />页面模块代码作用域的控制通过css文件来控制。某类具有高度耦合的页面使用自身的css文件。<br />3. 模块间的公开接口<br />上面是模块的封装，公开的接口在页面中表现为什么？<br />首先是reset，base，可继承模块，这些代码是开放接口，必须根据这些代码进行页面代码开发，也就是你的页面代码必须在以上代码基础上开发。<br />其次是css文件，css文件名称和他作用于那些页面。<br />再次是布局、模块class，id命名，模块在页面的哪个位置。在CSS中的表现就是定位，布局，和部分盒模型。float、position、width、height等等。布局通常使用css作为接口实现，如果布局具有高度的逻辑性，完全可以通过html和css组合进行，比如960 Grid System，或者采用YUI grid.css。模块class和id的命名用于区分模块，不能在一个页面的所有css中出现不同模块同用一个class和id名。</p><p><strong>规划整站模块</strong><br />上文提到的基本的原理，真正实施起来还是存在很多问题，模块粒度问题，公共模块与普通模块的区分，继承模块是否值得继承等等，页面模块如何划分。<br />首先，了解你的项目，通过画网站树状图了解你网站的总体结构和页面模块<br />其次，理清结构逻辑和视觉逻辑，结构逻辑就是看你的页面由那些模块组成，视觉逻辑了解可继承模块，布局逻辑（网格布局或者非网格布局）</p><p>附图：<br /><a href="http://www.greengnn.org/index.php/attachment/13/" title="mode.png"><img src="http://www.greengnn.org/usr/uploads/2009/09/3621605561.png" alt="mode.png" /></a></p>]]></content:encoded>
<author><![CDATA[greengnn]]></author>
<dc:creator><![CDATA[greengnn]]></dc:creator>
<wfw:commentRss>http://www.greengnn.org/index.php/feed/2009/09/23/mode-with-html-css-images.html</wfw:commentRss>
</item>
<item>
<title><![CDATA[模块化概念]]></title>
<link>http://www.greengnn.org/index.php/2009/09/08/8.html</link>
<pubDate>Tue, 08 Sep 2009 03:32:13 +0000</pubDate>
<category><![CDATA[HTML]]></category>
<category><![CDATA[CSS]]></category>
<category><![CDATA[JavaScript]]></category>
<description><![CDATA[《设计规则模块化的力量》


模块化就是为了减少循环依赖，减少耦合，提高设计的效率。为了做到这一点，我们需要有一个设计规则，所有的模块都在这个规则下进行设计。良好的设计规则，会把耦合密集的设计参数进行...]]></description>
<guid>http://www.greengnn.org/index.php/2009/09/08/8.html</guid>
<slash:comments>5</slash:comments>
<comments>http://www.greengnn.org/index.php/2009/09/08/8.html#comments</comments>
<content:encoded><![CDATA[<p><strong>《</strong><a href="http://www.douban.com/subject/1737636/" target="_blank"><strong>设计规则模块化的力量</strong></a><strong>》</strong></p><blockquote>模块化就是为了减少循环依赖，减少耦合，提高设计的效率。为了做到这一点，我们需要有一个设计规则，所有的模块都在这个规则下进行设计。良好的设计规则，会把耦合密集的设计参数进行归类作为一个模块，并以此划分工作任务。而模块之间彼此通过一个固定的接口（所谓的可见参数）进行交互，除此之外的内部实现（所谓的隐参数）则由模块的开发团队进行自由发挥。</blockquote><p>程序模块化的目的：</p><ol><li>减少循环依赖</li><li>减少耦合</li><li>提高设计效率</li></ol><p>程序模块化的实施：</p><ol><li>把耦合密集的归为一个模块</li><li>模块间通过固定的接口交互</li><li>模块内部实现自由发挥</li></ol><p><strong>《</strong><a href="http://baike.baidu.com/view/5861.htm#4" target="_blank"><strong>宜家</strong></a><strong>》</strong></p><blockquote>IKEA的研发体制也非常独特，能够把低成本与高效率结为一体。IKEA发明了&ldquo;模块&rdquo;式家具设计方法（宜家的家具都是拆分的组装货，产品分成不同模块，分块设计。不同的模块可根据成本在不同地区生产；同时，有些模块在不同家具间也可通用）。这样不仅设计的成本得以降低（因为基本每一种设计都是可制造的，不会因为大量的设计方案不具备可实施性而去莫明地浪费成本），而且产品的成本也能得到降低（模块化意味着可以大规模生产和大规模物流）。<br />IKEA的设计理念是&ldquo;同样价格的产品谁的设计成本更低&rdquo;，因而设计师在设计中竞争焦点常常集中在是否少用一个螺钉或能否更经济地利用一根铁棍上，这样不仅能有降低成本的好处，而且往往会产生杰出的创意。<br />可能IKEA是唯一能深刻理解&ldquo;简单即美&rdquo;的机构，他用&ldquo;简单&rdquo;来降低顾客让度成本，用&ldquo;美&rdquo;来提高顾客让度价值。</blockquote><p>IKEA模块化目的：</p><ol><li>设计成本降低，都可实现</li><li>产品成本降低，大规模物流和大规模生产</li></ol><p>IKEA模块化实施：</p><ol><li>产品分成不同的模块，分块设计</li><li>有的模块在不同的家具间可以通用</li></ol><p>可以看出，两种模块化的实施都是类似的，耦合密集的区块分为一个模块，独立自由设计，提供开放接口。可以产生低成本，大规模生产和开发的效果。</p><p><strong>互联网研发</strong></p><p>互联网研发的流程，概念、需求产生，设计[产品设计，交互设计，UI设计]，开发[前端开发，后端开发]，测试，发布，然后第二版本 新的概念、需求产生，再执行一次研发流程。在这个环节中，概念的产生总是非常容易，研发的周期总是非常漫长，市场总是稍纵即逝。所以版本迭代的速度也就是提升的敏捷开发是一个企业竞争力的体现。</p><p>在前端开发环节中，如何运用模块化方法提升迭代的速度和开发效率呢？</p><p><!--more--></p><p>首先，管理模块化，将流程进行模块化，分为策划，交互设计，视觉设计，前端开发，后台开发，测试，运维。每个流程都是高度耦合的，作为一个流程，流程之间采用公共接口进行衔接，也就是交付物。</p><p>其实是某一个流程中具体的模块化，就拿我熟悉的前端开发举例：</p><p>现在有某网站v 1.0版本发布，版本计划是这样的</p><ul><li>产品策划 3人天</li><li>交互设计 3人天</li><li>视觉设计 3人天</li><li>前端开发2.5 人天</li><li>后端开发5人天</li><li>测试 2人天</li></ul><p><strong>共计 18.5 人天</strong></p><p>为了在前端开发阶段提高效率，让两个前端负责开发，一人负责一部分页面，彼此没有沟通完全自由独立开发，1.5天后双方将代码合并，发现存在多处样式属性重叠冲突和js变量冲突，约定其中一个代码保持不变，另外一个代码进行调整，耗费1人天。</p><p>而如果两个人在开发前期使用0.5天进行沟通，约定好高度耦合的部分归为一个模块，双方按模块分工，模块内部自由开发，模块外部约定公共接口。然后1.5天后代码合并。提交后端开发工程师。</p><p>&hellip;</p><p>V1.0 版本发布</p><p>V2.0需求已经期待很久，又流程走到了前段开发阶段，需求是对局部功能进行改良优化，还是分两种情况</p><ol><li>非模块化代码设计，开发和解决代码冲突耗费2人天，其实开发只需要1人天</li><li>模块化代码设计，开发耗费1人天</li></ol><p>到了后端开发，进行后台开发，两种情况</p><ol><li>非模块化代码设计，页面html修改多处，模版文件进行多处修改</li><li>模块化开发，仅仅这几个模块进行代码修改，修改模版工作量很少</li></ol><p>从这两个例子可以看出，模块化在研发中版本的迭代速度是很快的，某公司产品以最快的市场应对速度赢得用户的认可和好感，获得可观的pv或者收入。</p><p>[未完待续..]</p>]]></content:encoded>
<author><![CDATA[greengnn]]></author>
<dc:creator><![CDATA[greengnn]]></dc:creator>
<wfw:commentRss>http://www.greengnn.org/index.php/feed/2009/09/08/8.html</wfw:commentRss>
</item>
<item>
<title><![CDATA[A股数据实时查询]]></title>
<link>http://www.greengnn.org/index.php/2009/09/01/7.html</link>
<pubDate>Tue, 01 Sep 2009 09:15:52 +0000</pubDate>
<category><![CDATA[Ajax]]></category>
<category><![CDATA[JavaScript]]></category>
<description><![CDATA[最近研究js的api，就拿sina的股票数据接口练练手，完成了一个简单的A股查询系统。

访问demo

因为这种api的设计是js变量的方式，自己财经网站调用，不适合做api，不想google的ap...]]></description>
<guid>http://www.greengnn.org/index.php/2009/09/01/7.html</guid>
<slash:comments>1</slash:comments>
<comments>http://www.greengnn.org/index.php/2009/09/01/7.html#comments</comments>
<content:encoded><![CDATA[<p>最近研究js的api，就拿sina的股票数据接口练练手，完成了一个简单的A股查询系统。</p><p><a href="http://www.greengnn.org/lab/stock/" target="_blank">访问demo</a></p><p>因为这种api的设计是js变量的方式，自己财经网站调用，不适合做api，不想google的api设计的那么合理，所以采用php动态调用变量，然后ajax存储到php中，再展示出来。其实js能直接展示，但是我后续要做的模拟炒股需要把数据放到服务端运算。</p><p>顺便问下看到这个日志的朋友，谁知道股票的数据来源是从哪里来的?或者有什么代理商没，用sina这种不知道几手的数据怕给封掉ip</p>]]></content:encoded>
<author><![CDATA[greengnn]]></author>
<dc:creator><![CDATA[greengnn]]></dc:creator>
<wfw:commentRss>http://www.greengnn.org/index.php/feed/2009/09/01/7.html</wfw:commentRss>
</item>
</channel>
</rss>