<?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>每一天，为明天 &#187; 前端开发</title>
	<atom:link href="http://blog.liuweifeng.net/archives/tag/%e5%89%8d%e7%ab%af%e5%bc%80%e5%8f%91/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.liuweifeng.net</link>
	<description>追随我心，乘月待晓</description>
	<lastBuildDate>Tue, 31 Aug 2010 14:27:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom:link rel='hub' href='http://blog.liuweifeng.net/?pushpress=hub'/>
<cloud domain='blog.liuweifeng.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>从Nicholas C. Zakas如何面试看前端工程师基本技能</title>
		<link>http://blog.liuweifeng.net/archives/386</link>
		<comments>http://blog.liuweifeng.net/archives/386#comments</comments>
		<pubDate>Sat, 09 Jan 2010 16:02:00 +0000</pubDate>
		<dc:creator>刘巍峰</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[前端开发]]></category>

		<guid isPermaLink="false">http://blog.liuweifeng.net/archives/386</guid>
		<description><![CDATA[今天读到为之漫笔翻译的一篇文章——《Nicholas C. Zakas如何面试前端工程师》，反省了一下，自己距离前端开发工程师的目标还有很大的差距。这篇文章中总结的前端开发工程师面试时涉及的基... ]]></description>
			<content:encoded><![CDATA[<p>今天读到<a title="为之漫笔，李松峰，《JavaScript高级程序设计》、《JavaScript DOM 高级编程》、《Dojo权威指南》等书的译者" href="http://www.cn-cuckoo.com" target="_blank">为之漫笔</a>翻译的一篇文章——《<a href="http://www.cn-cuckoo.com/2010/01/08/how-nicholas-c-zakas-interviewing-the-front-end-engineer-1332.html">Nicholas C. Zakas如何面试前端工程师</a>》，反省了一下，自己距离前端开发工程师的目标还有很大的差距。这篇文章中总结的前端开发工程师面试时涉及的基础问题，我想，是很有必要再回头总结下了。</p>
<blockquote><p>我们生活在互联网时代，你想知道的任何事情几乎都能在15分钟内找到相关信息。可是，能找到信息并不等于你会使用它。我认为所有前端工程师至少都应该掌握某些基本的知识，才能有效地完成自己的工作。如果一遇到问题，就停下工作上网四处搜索解决方案，怎么可能保证按期完成工作呢？听听，还有谁在说“我不知道，但我可以上网搜到。”请这些同学把手举起来，让大家认识一下（immediately raises a flag for me.）。下面我列出一些基本的知识点，这些都是我认为一名前端工程师（无论工作年头长短）在没有任何外来帮助的情况应该知道的。</p>
<ul>
<li><strong>DOM结构</strong>——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。 </li>
<li><strong>DOM操作</strong>——怎样添加、移除、移动、复制、创建和查找节点。 </li>
<li><strong>事件</strong>——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。 </li>
<li><strong>XMLHttpRequest</strong>——这是什么、怎样完整地执行一次GET请求、怎样检测错误。 </li>
<li><strong>严格模式与混杂模式</strong>——如何触发这两种模式，区分它们有何意义。 </li>
<li><strong>盒模型</strong>——外边距、内边距和边框之间的关系，IE &lt; 8中的盒模型有什么不同。 </li>
<li><strong>块级元素与行内元素</strong>——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。 </li>
<li><strong>浮动元素</strong>——怎么使用它们、它们有什么问题以及怎么解决这些问题。 </li>
<li><strong>HTML与XHTML</strong>——二者有什么区别，你觉得应该使用哪一个并说出理由。 </li>
<li><strong>JSON</strong>——它是什么、为什么应该使用它、到底该怎么使用它，说出实现细节来。 </li>
</ul>
<p>重申一下，上述这些知识点都应该是你“想都不用想”就知道的东西。我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。虽然上面列出的这些知识点并没有面面俱到，但我觉得你至少应该掌握这些，才有可能跟我坐到一间办公室里来。</p>
</blockquote>
<p>上面这几点，可以总结为前端开发人员必备的基础知识。对于如何通过Nicholas C. Zakas的面试，为之漫笔还翻译了另一篇文章《<a href="http://www.cn-cuckoo.com/2010/01/09/surviving-an-interview-with-nicholas-c-zakas-1346.html">如何通过Nicholas C. Zakas的面试</a>》，值得一看。</p>
<p><map name='google_ad_map_386_283235bb80dfcb3d'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/386?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_386_283235bb80dfcb3d' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=386&amp;url= http%3A%2F%2Fblog.liuweifeng.net%2Farchives%2F386' /></p><div style="float:left;margin:0px 0px 0px 0px;"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-url="http://blog.liuweifeng.net/archives/386"></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div><hr />
<p><small>&copy; 刘巍峰 for <a href="http://blog.liuweifeng.net">每一天，为明天</a>, 2010. |
<a href="http://blog.liuweifeng.net/archives/386">Permalink</a> |
<a href="http://blog.liuweifeng.net/archives/386#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://blog.liuweifeng.net/archives/386&amp;title=从Nicholas C. Zakas如何面试看前端工程师基本技能">del.icio.us</a>
<br/>
Post tags: <a href="http://blog.liuweifeng.net/archives/tag/%e5%89%8d%e7%ab%af%e5%bc%80%e5%8f%91" rel="tag">前端开发</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuweifeng.net/archives/386/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>淘宝UED招聘题解（前端开发部分）</title>
		<link>http://blog.liuweifeng.net/archives/278</link>
		<comments>http://blog.liuweifeng.net/archives/278#comments</comments>
		<pubDate>Mon, 13 Oct 2008 10:05:07 +0000</pubDate>
		<dc:creator>刘巍峰</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[UED]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[淘宝]]></category>

		<guid isPermaLink="false">http://www.liuweifeng.net/archives/278</guid>
		<description><![CDATA[这是2007年淘宝用户体验设计团队（Taobao.com UED），招聘前端开发工程师的题目，解答来源于淘宝UED博客。 小贤是一条可爱的小狗(Dog)，它的叫声很好听(wow)，每次看到主人的时候就会乖乖叫一声... ]]></description>
			<content:encoded><![CDATA[<p>这是2007年<a target="_blank" href="http://ued.taobao.com/job">淘宝用户体验设计团队</a>（Taobao.com UED），招聘前端开发工程师的题目，解答来源于<a target="_blank" href="http://ued.taobao.com/blog/2007/11/20/job_test_explanation/">淘宝UED博客</a>。</p>
<blockquote><p><em>小贤是一条可爱的小狗(Dog)，它的叫声很好听(wow)，每次看到主人的时候就会乖乖叫一声(yelp)。</em></p>
<p><em>从这段描述可以得到以下对象：</em></p>
<p><em>function Dog() {        <br />this.wow = function() {         <br />alert(’Wow’);         <br />}         <br />this.yelp = function() {         <br />this.wow();         <br />}         <br />}</em>       <br /><em>小芒和小贤一样，原来也是一条可爱的小狗，可是突然有一天疯了(MadDog)，一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。</em></p>
<p><em>请根据描述，按示例的形式用代码来实现（提示关键字: 继承，原型，setInterval）。</em></p>
</blockquote>
<p><strong>题解：</strong></p>
<pre>function MadDog() {
    this.yelp = function() {
        var self = this;
        setInterval(function() {
            self.wow();
        }, 500);
    }
}
MadDog.prototype = new Dog();
//for test
var dog = new Dog();
dog.yelp();
var madDog = new MadDog();
madDog.yelp();</pre>
<p>以上是较为规范的一个解法，我们希望通过此题，检查应聘者对JS的语言基础及的面向对象开发的理解程度。其中的难点在于闭包的应用。</p>
<p>(...)<br/>Read the rest of <a href="http://blog.liuweifeng.net/archives/278">淘宝UED招聘题解（前端开发部分）</a> (107 words)</p>
<hr />
<p><small>&copy; 刘巍峰 for <a href="http://blog.liuweifeng.net">每一天，为明天</a>, 2008. |
<a href="http://blog.liuweifeng.net/archives/278">Permalink</a> |
<a href="http://blog.liuweifeng.net/archives/278#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://blog.liuweifeng.net/archives/278&amp;title=淘宝UED招聘题解（前端开发部分）">del.icio.us</a>
<br/>
Post tags: <a href="http://blog.liuweifeng.net/archives/tag/ued" rel="tag">UED</a>, <a href="http://blog.liuweifeng.net/archives/tag/%e5%89%8d%e7%ab%af%e5%bc%80%e5%8f%91" rel="tag">前端开发</a>, <a href="http://blog.liuweifeng.net/archives/tag/%e6%b7%98%e5%ae%9d" rel="tag">淘宝</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuweifeng.net/archives/278/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web 前端优化最佳实践</title>
		<link>http://blog.liuweifeng.net/archives/277</link>
		<comments>http://blog.liuweifeng.net/archives/277#comments</comments>
		<pubDate>Fri, 10 Oct 2008 12:01:09 +0000</pubDate>
		<dc:creator>刘巍峰</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[前端开发]]></category>

		<guid isPermaLink="false">http://www.liuweifeng.net/?p=277</guid>
		<description><![CDATA[本文作者Fenng，转载自其博客。版权声明 根据 Yahoo 开发中心的 &#8220;Best Practices for Speeding Up Your Web Site&#8221; 翻译整理。   面向内容的优化规则目前有 10 条。 1. 尽量减少 HTTP 请求 (Make Fewer HTTP R... ]]></description>
			<content:encoded><![CDATA[<p>本文作者<a href="http://www.dbanotes.net/">Fenng</a>，转载自其<a href="http://www.dbanotes.net/">博客</a>。<a href="http://creativecommons.org/licenses/by-nc-sa/2.5/">版权声明</a></p>
<p>根据 Yahoo 开发中心的 &#8220;<a href="http://developer.yahoo.com/performance/rules.html">Best Practices for Speeding Up Your Web Site</a>&#8221; 翻译整理。</p>
<p> </p>
<p><span style="color: #ff0000;">面向内容的优化规则目前有 10 条。</span></p>
<h4>1. 尽量减少 <acronym title="HyperText Transfer Protocol&lt;br /&gt; ">HTTP</acronym> 请求 (Make Fewer <acronym title="HyperText Transfer Protocol&lt;br /&gt; ">HTTP</acronym> Requests)</h4>
<p>作为第一条，可能也是最重要的一条。根据 Yahoo! 研究团队的数据分析，有很大一部分用户访问会因为这一条而取得最大受益。有几种常见的方法能切实减少 <acronym title="HyperText Transfer Protocol&lt;br /&gt; ">HTTP</acronym> 请求：</p>
<ul>
<li>1) <strong>合并文件</strong>，比如把多个 <acronym title="Cascading Style Sheets&lt;br /&gt; ">CSS</acronym> 文件合成一个；</li>
<li>2) <strong><acronym title="Cascading Style Sheets&lt;br /&gt; ">CSS</acronym> Sprites</strong> 利用 <acronym title="Cascading Style Sheets&lt;br /&gt; ">CSS</acronym> background 相关元素进行背景图<strong>绝对</strong>定位；参见：<a href="http://alistapart.com/articles/sprites">CSS Sprites: Image Slicing&#8217;s Kiss of Death</a></li>
<li>3) <strong>图像地图</strong></li>
<li>4) <strong>内联图象</strong> 使用 <a href="http://tools.ietf.org/html/rfc2397">data: URL scheme</a> 在实际的页面嵌入图像数据.</li>
</ul>
<h4>2. 减少 <acronym title="Domain Name System&lt;br /&gt; ">DNS</acronym> 查找 (Reduce <acronym title="Domain Name System&lt;br /&gt; ">DNS</acronym> Lookups)</h4>
<p>必须明确的一点，DNS 查找的开销是很大的。另外，我倒是觉得这是 Yahoo! 所有站点的通病，Yahoo！主站点可能还不够明显，一些分站点，存在明显的类似问题。对于国内站点来说，如果过多的使用了站外的 Widget ，也很容易引起过多的 <acronym title="Domain Name System&lt;br /&gt; ">DNS</acronym> 查找问题。</p>
<h4>3. 避免重定向 (Avoid Redirects)</h4>
<p>不是绝对的避免，尽量减少。另外，应该注意一些不必要的重定向。比如对 Web 站点子目录的后面添加个 / (Slash) ，就能有效避免一次重定向。http://www.dbanotes.net/arch 与 http://www.dbanotes.net/arch<strong>/</strong> 二者之间是有差异的。如果是 Apache 服务器，通过配置 Alias 或mod_rewrite 或是 DirectorySlash 能够消除这个问题。</p>
<h4>4. 使得 Ajax 可缓存 (Make Ajax Cacheable)</h4>
<p>响应时间对 Ajax 来说至关重要，否则用户体验绝对好不到哪里去。提高响应时间的有效手段就是 Cache 。其它的一些优化规则对这一条也是有效的。</p>
<h4>5. 延迟载入组件 (Post-load Components)</h4>
<h4>6. 预载入组件 (Preload Components)</h4>
<p>上面两条严格说来，都是属于<strong>异步</strong>这个思想灵活运用的事儿。</p>
<h4>7. 减少 <acronym title="Document Object Model&lt;br /&gt; ">DOM</acronym> 元素数量 (Reduce the Number of <acronym title="Document Object Model&lt;br /&gt; ">DOM</acronym> Elements)</h4>
<h4>8. 切分组件到多个域 (Split Components Across Domains)</h4>
<p>主要的目的是提高页面组件并行下载能力。但不要跨太多域名，否则就和第二条有些冲突了。</p>
<h4>9. 最小化 iframe 的数量 (Minimize the Number of iframes)</h4>
<p>熟悉 <acronym title="Search Engine Optimization&lt;br /&gt; ">SEO</acronym> 的朋友知道 iframe 是 <acronym title="Search Engine Optimization&lt;br /&gt; ">SEO</acronym> 的大忌。针对前端优化来说 iframe 有其好处，也有其弊端，一分为二看问题吧。</p>
<h4>10. 杜绝 http 404 错误 (No 404s)</h4>
<p>对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪能有效减少 404 错误，亦能提升用户体验。值得一提的是，CSS 与 Java Script 引起的 404 错误因为定位稍稍&#8221;难&#8221;一点而往往容易被忽略。</p>
<p>(...)<br/>Read the rest of <a href="http://blog.liuweifeng.net/archives/277">Web 前端优化最佳实践</a> (593 words)</p>
<hr />
<p><small>&copy; 刘巍峰 for <a href="http://blog.liuweifeng.net">每一天，为明天</a>, 2008. |
<a href="http://blog.liuweifeng.net/archives/277">Permalink</a> |
<a href="http://blog.liuweifeng.net/archives/277#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://blog.liuweifeng.net/archives/277&amp;title=Web 前端优化最佳实践">del.icio.us</a>
<br/>
Post tags: <a href="http://blog.liuweifeng.net/archives/tag/css" rel="tag">CSS</a>, <a href="http://blog.liuweifeng.net/archives/tag/javascript" rel="tag">JavaScript</a>, <a href="http://blog.liuweifeng.net/archives/tag/%e4%bc%98%e5%8c%96" rel="tag">优化</a>, <a href="http://blog.liuweifeng.net/archives/tag/%e5%89%8d%e7%ab%af%e5%bc%80%e5%8f%91" rel="tag">前端开发</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.liuweifeng.net/archives/277/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
