YAOHAIXIAO.COM

HTML(5),CSS(3),JavaScript,DOM,Ajax,JSON,Front-end technologies & Yaohaixiao

热门标签:JavaScript Performance 前端开发 前端性能优化 原创

Rss

Home » Frontend » JavaScript » 写给想学JavaScript朋友的一点经验之谈

写给想学JavaScript朋友的一点经验之谈

逛论坛时看到有朋友问是否有专门教Javascript的学校。这里我想把自己几年来的前端 JavaScript 开发的经验跟大家分享下,也给出几本个人认为不错的书来做为大家学习的参考资料。当然只是个人的经验,有什么不对的也请高手见谅和指正。

关于到培训学校学习的忠告:别说现在没有这样的学校,就是有专门的学校也不要去,因为不会有好的老师的。不要浪费你自己(很可能是你父母的)钱和时间,死了这个念头。

说关于培训学校的话题,这个我要比一般的朋友有发言权。因为我本人干英语培训将近2年,我很清楚培训市场的情况,你很难碰到一个好的老师。英语可能还好些,毕竟英语说得好的老师还比较多,长期跟老外泡在一起,确实对口语能力的提高很显著,但是代价也是很昂贵的。而现在你要学的是 JavaScript ,呵呵,好的前端工程师可不多!

我的个人观点,有资格和有能力的教好 JavaScript 的老师,一定要是个好的,有着丰富的前端开发经验的前端工程师。大学里的老师,教授可能他们中很少有人符合这个要求(请允许我这么说)。而好的前端工程师,都忙着自己的工作去了。剩下的有时间去教 JavaScript 的人,呵呵,就不多说了。

这里我也发点牢骚,我们在大学校园里学习的东西,你学的时候根本不知道这个东西有什么意义,你自己不去钻研,老师基本上他是不会主动告诉你的。在培训学校,呵呵,也差不多。

要教好 JavaScript 如果不是一个好的前端工程师,他很难说清楚为什么我们现在提倡使用闭包把将以前作为全局变量的变量放到闭包中作为闭包函数的局部变量?他也很难对 JavaScript 变量作用域的相关知识跟你讲透彻。在 JavaScript 这门语言里能够形成 scope(作用域)的东西有哪些?为什么说全局变量是魔鬼?闭包又是怎么产生的作用域?等等这样很基础,但很重要的知识的意义,他如果没有长期的前端开发的实战经验,是很难说清楚这些知识点的价值和意义的。当然了,要讲给你听,让你明白这些知识和它们的意义就更困难。

呵呵,所以我的建议是,如果你想学 JavaScript ,还是多跟你的身边认识的朋友,特别是那些从事前端开发的工程师多交流和学习,自己也要多钻研。呵呵,如果你不认识前端工程师,就到蓝色理想这样的专业论坛多逛逛(记住!这可不是广告哦!)。把你不清楚的问题提出来,需求了解这些知识的朋友的帮助。不过我这里想花点时间说说我们该在什么时候提问?

什么时候提问?这个也是问题吗?我的答案是:是的,这是一个问题。很多人,特别是那些还在学校读书的朋友都有一个不好的学习习惯,那就是一遇到问题就问别人请求帮助。难道问问题也是个坏习惯?我个人觉得这是个坏习惯。我认为,你问问题寻求别人的帮助,应该是在你自己已经动脑经,通过各种途径查相关资料都无法获取问题的最终解决办法的情况下再来提问。这样你已经对你要解决的问题做过研究,有一定了解。你可以更详细的告诉别人你想要的答案大概是什么样的,或者说你可以把你想描述的问题讲的更清楚。这样别人来解决你的问题的时候,也可以更快速的作出解答。我想你学起来,对问题的理解也会更深刻些。

好了,好像扯得有些远了。来谈谈怎么学习 JavaScript 吧!先给大家泼点冷水,我想告诉你的是,JavaScript 要比其他的开发语言更难学好!

为什么?因为就目前来说,大家(国内甚至是国外的程序员)普遍对 JavaScript 这门编程语言(请允许我这么说)了解和研究得不够深,至少不像大家对 JAVA、C#、C++ 等这样的语言了解的和研究得那么透。所以这个就引起了另一个问题,现在市面上 JavaScript 的书籍对 JavaScript 这门语言的讲解都还不够深入和全面。当然是相对JAVA,C#这样的语言来说。所以这就导致了,学 JavaScript 相对会更困难些。当然学任何一门编程语言,特别是想学好学精都是那么不容易。

不过也有好的消息,就是现在大家对 JavaScript 的重视和更深入的研究,现在 JavaScript 书籍里讲解的内容也要比4年前(2005年)的质量高出太多了。可以这么说,你现在开始 JavaScript 正是时候哦!呵呵!所以我在这里也给大家分享一个经验,买 JavaScript 的书,最好不要买4年前,也就是 2005 年以前出版的。最好买近两年出版的书。

说到这里,我想说说一个现象,随这大家近几年对 JavaScript 的重视和研究,主要是很多传统的程序员开始学习和研究 JavaScript ,他们把面向对象编程的思想带入到 JavaScript 程序的开发,极大的促进了 JavaScript 的推广和发展。这点要十分感谢他们。也许是处于这些程序员的传统开发的思想的影响,现在我们的 JavaScript 库也如雨后春笋般的出现。现在流行的 JavaScript 库就有jQueryYUI、Prototyoe、dojo、MooTools等等,我这里就不一一列举了。

呵呵!JAVA 有 JAVA 的库和各种各样的框架,C# 也是模仿 JAVA,也是有着丰富的开发库。这些库为我们的开发带来了极大的方便,这是个很不错的事情。所以这些传统的程序员在从事前端的开发的时候,也为自己的编写了 JavaScript 库。当然这些也为我们的前端开发带来了极大的方便。但是事情都有两面性的,在这些库的出现后,在给我们的开发带来便利的同时,也让我们的很多朋友产生对库的依赖,可能严重点的,如果没有这些 JavaScript 库,给他个记事本(我们姑且不提开发效率)可能就不知道如何下手了。

如果仔细想想,这个可能是一件很可怕的事情。为什么?因为大家都不再去花心思去研究 JavaScript 底层的知识,只是一味的在这些库的帮助下,构建那些炫目的特效。或者干脆直接用别人写好的插件。还好,这些库都基本都是免费的。都不知道万一这些库要是开始收费,会怎么样?(当然,只是瞎想想。)还有就是这些库比如有别有用心的人,在中间加点什么不好的东西,我想也很难有人会从头到尾把一个库研究个透。你怎么办?最重要的,也是最可怕,那就是编程能力的下降。但是给人的感觉是编写 JavaScript 程序入门的门槛很低。不要被 “The Write Less, Do More”这样的广告给迷惑了。因为你加载这个库的同时,别忘了“Size of your web page is much bigger, or say the size is HUGE”。我当然没有针对 jQuery 的意思,我反倒是觉得 jQuery 是个非常帮的 JavaScript 库。

所以我要说的是,当大家使用这些库的时候,我希望大家不仅仅只是一个使用者,更希望大家用心去阅读这些 JavaScript 库的代码。在看这些库的代码时,你会有很大的收获的。而且说不定,你还会发现这些库可个改善地方,甚至是BUG的。(呵呵,这个是很有可能的!)还有就是我刚才提到的,这些库的开发者很多都是从传统的程序员转型过来,或者说是因为开发需要而开始学习 JavaScript ,很可能会有错误,或者说受以前学习语言的影响,写的程序更像是在写其他的语言,而不是写 Javascript 程序。可以有些库的执行效率并不高,所以不要迷信 JavaScript 库。

说到对 JavaScript 库的学习,这里想问几个问题。你清楚 jQuery 是怎么实现 CSS(3) 和 XML 的 XPath 选择器的吗?jQuery 又是怎么实现 eventHandle 的?怎么处理其中的浏览器兼容性问题的?

如果你还不能回答出来我前面提的问题,那么请仔细看看 jQuery 是怎么实现的吧!如果你还读不懂它,还是先看看我要给你介绍的 JavaScript 的书吧。相信在了解 JavaScript 的底层和基础的知识后,你自己能就读懂 jQuery 了。还会让自己不需要 jQuery 也能实现 Dom 的拖动,让自己也能写出自己的 JavaScript 库。当然这话我说得太大了。不过只要你是真正研究 JavaScript 和相关的知识,你也是可以做到的。

绕了这么大一圈,现在让我们正式开始介绍几本学习 JavaScript 的书吧!(以下介绍的书都是本人自己购买阅读过的,对了我并不崇洋媚外,一条真理:最好不要买国人写的 JavaScript 书)

入门级的书:

JavaScript DOM 编程艺术》(第2版)- 作者:Keith J.:(我个人的感觉)这是一本学习 DOM 编程的经典入门书籍,作者Keith J.是 webstandards.org 的创始人之一。资深的前端开发的专家。书中以浅显易懂的语言,教你一步一步的教你使用DOM编程来提升你的网站用户体验。书中一直强调不唐突的脚本开发,强调网站的 JavaScript 程序要向后兼容,强调网站的可访问性。这些观点也是我们在做前端开发时应当努力追求的,也是必须要有的开发指导思想。可惜很多的后台开发的程序员,根本没有这个概念,所以你在开发的时候,一定要给你的程序员多洗脑。呵呵!

JavaScript 权威指南》(第5版)- 作者:费拉纳提:(我当时买点的是第4版)第5版要比我买的第4版讲解的要更详细些,在第4版中,我觉得那本书中讲的东西有点混乱。感觉一个知识点还没有讲清楚,就给你一个什么类,看得不明不白的。这本书是标准的参考手册,把 JavaScript 方方面面的基础知识都涵盖到了。不过这本书比较贵!

JavaScript 高级程序设计》(第2版)- 作者:Nicholas C. Zakas:不要被“高级”这两个字吓到,这个书其实也可以作为不错的入门的书。因为这本书也很详细的介绍了 JavaScript 的全部内置对象和语法,并且介绍了面向对象OOP的编程思想。对DOM、BOM、正则表达式,高级的 DOM 处理、Ajax的知识。对 JavaScript 的介绍是全面的。个人认为这本书对 JavaScript 的基础知识的介绍并不比其他的同类书逊色。还有就是本书的作者 Zakas 绝对是一位资深的国际级的前端工程师。在 YAHOO 工作期间他担任着 YAHOO 的首席前端工程师。

CSS权威指南》(第3版)- 作者:Eric A. Meyer:作者是最权威的 CSS 专家之一了。想学习 CSS 的知识,这本书是必不可少的。而如果你打算做前端开发,你就必须要了解 CSS ,书中对 CSS2 的介绍很详细了。仔细的看吧,我每次看的时候,有会有新的收获。所以也强烈推荐你看看。

《网站重构》、《CSS网站布局实录》(唯一推荐的一个国人写的书):这两本书看完之后,你会知道为什么学WEB标准?你也会知道前端工程师的工作的重要性和意义。不过内容是有些重复的地方。

提高阶段:

《Javascript DOM 高级编程》 – 作者:Jeffrey Sambells 和 Aaron Gustafson:这本书里不光详细的介绍的 DOM 编程的技巧,也讲到了使用面向对象编程的方法,使用命名空间来管理的开发库,在不断的学习中,你的个人 JavasSript 库也不断的充实。呵呵,就像我前面说的,你可以写出自己的库了。当然书中的代码还比较松散,要运用到实际的企业级的开发中,可能还需要优化。但是书中对闭包的介绍和面向对象的开发思想,会使你对 JS 的认识又提高了一个层次,虽然对面向对象开发的讲解还不够深。

Ajax in Action》、《Ajax 高级编程》:介绍 Ajax 技术的书,一定看看。了解什么 XMLHTTPRequest 对象,了解 Ajax 的设计原理。

JavaScript 设计模式》 – 作者:Ross Harmes 和 Dustin Diaz:学习 JavaScript的 OOP 的编程风格,你一定要看看这本书。书里全面的介绍了 JavaScript 程序开发中的OOP的思想,以及如何使用设计模式来优化你的程序。

《XML开发指南》:我们知道 Ajax 中的 X 就是指的XML,所以要了解 XML 的相关知识,你这本书,是一定要看的。看了之后你会发现 XML 要了解的东西实在太多了,可能跟你了解的东西相比,你才知道点皮毛。对了,这里说下,我个人不推荐你使用 XML 来作为你的 Ajax 的程序的数据的载体。为什么?因为个人觉得很不经济。你先要把数据从数据库中转换成 XML 文档,然后再到前端通过 JavaScript 把 XML 文档中的数据提出来,把文档转成数据。而且不同浏览器对 XPath 处理的不一致,你会让你发狂的。现在我们有一个代替他的东西——JSON,当然现在有出现了JSONP。但是由于 XML 已经是很多标准的默认数据通讯载体,比如 RSS 等,所以你还是得掌握。

《精通CSS:高级Web标准解决方案》(第2版) :书里介绍了很多CSS 的 HACK 技巧。想处理浏览器的CSS兼容性问题,这本书要看看的。唉,不过我当时买的第1版的翻译比较烂。第二版不知道好些没有。

个人觉得学 JavaScript看完上面介绍的几本书,你应该已经对 JavaScript 了解得比较清楚了。不过如果你还要提高,下面这基本书,也强烈推荐你看看:

《高性能 JavaScript》 – 作者:Nicholas C. Zakas:Zakas 的又一力作。相对《JavaScript:The Good Parts》,Zakas 给出了更多,更详细的操作技巧来提高我们的 JavaScript 程序的性能。不要错过这本好书!

JavaScript:The Good Parts》 – 作者:Douglas Crockford:个人觉得这本书很不错,看完这本书,你会知道 JavaScript 这门语言中什么东西是好的,什么东西不好?如果避免使用那些不好的部分导致程序出错。按照书里的编写 JavaScript 的代码的编码规范,你会避免很多问题。让你的生活变得更美好一些。

《高性能网站建设指南》、《高性能网站建设进阶指南:Web开发者性能优化最佳实践》 – 作者:Sounders:Sounders 是 YSLOW 的开发者,前 YAHOO 的前端性能分析专家,现在 Google 做前端性能研究工作。这两本书,强烈推荐想学习 JavaScript ,学习前端开发的朋友看看。我现在在阿里巴巴的工作中,就一直坚持着用书里介绍的对前端性能优化的
方法,来优化我所开发的前端程序。

在你看完这些书后,你就了解了 JavaScript 的相关知识,了解了CSS(你会知道CSS都有那些选择器),了解了XML的知识,理解了Ajax的工作原理,知道如何提升 JavaScript 程序的性能,知道如何优化前端程序的性能。呵呵,基础的开发你应该都可以自己解决了。而且你对 JavaScript 的面向对象的开发有了了解,有着向后兼容的开发思想。显然你看完这些书,你对 WEB 标准也会有 一个更深层次的理解,不客气的说,你应该可以做前端工程师了。

当然,想成为一个优秀的前端工程师,你要学习的知识并不只有这些。你也要知道 SEO 的优化知识,因为你写的页面要对搜索引擎也要友好,要有合理的HTML代码结构。你还要了解 SQL 和 数据库,最好还要了解 C# 等后台编程的语言。两个主要原因,要全面的提高自己,而且要充分的理解面向对象的编程,这些传统语言的思想更成熟。同时也要知道 JavaScript 跟这些传统的编程语言的继承机制是不一样的。所以不要用 JavaScript 来写C#,或者其他的语言。另外还有一个重要的原因,你要跟后台的程序员合作,要让他们更坚决的执行你的不唐突的开发思想,你必须要经常给他们洗脑。但是你说的话要让他们听得进去,他说的东西你就一定要了解,最好能给他一些有好的建议,他们才会听你的,当然,大家合作起来也会更愉快。为了开发出更好的前端程序,为了让你的用户在使用你开发的WEB站点时,体验更好。辛苦点就辛苦点吧!

最后就是多动手练习,把你学到知识运用到实际的开发中,常跟朋友多交流。我也希望能跟大家多交流心得。

声明:本文采用BY-NC-SA协议进行授权。转载请注明转自:写给想学JavaScript朋友的一点经验之谈

« »

2 条评论

  • 看了一遍又一遍,但有些自身问题,我总感觉我自己无法去改变他,还希望博主帮助,比如说:现在毕业了,有自己去思考过自已的定位和自身的一些问题,感觉挺了解自己的缺点的,例如:羡慕,嫉妒别人,想不劳而获,想一口吃个胖子,这些问题,我都是知道的,但又改不掉。看见别人干什么自己就想干什么,没有主见,相对JavaScript来说吧,我有学过几个月了,看书对我是一大乐趣,但是,“如何去实践”,成了我的麻烦,我好像自己不会去实践什么,也不知道要做什么,现在时间一长,感觉自己整个人要崩溃了一样,觉得什么也不会,什么也没有做过,什么也不如别人,一系列的问题,还希望如果博主有时间能够和我沟通一下,多多学习gmail你应该看的到,期待您的来信。

    • 动手做,应该不是件难的事情。很简单,你看过的书,就把书上讲的原理和基本的方法自己用代码去实现啊!不能只是坐在那里不停的想。

      一口吃不了一个胖子,要慢慢的来。有空就看看书,做动手写代码。一点一点的积累经验啊。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)