>웹 프론트엔드 >JS 튜토리얼 >Javascript_기본 지식을 배우고 싶은 친구들을 위한 학습 경험 요약

Javascript_기본 지식을 배우고 싶은 친구들을 위한 학습 경험 요약

WBOY
WBOY원래의
2016-05-16 18:15:27818검색

当然只是个人的经验,有什么不对的也请高手见谅和指正。

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

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

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

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

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

呵呵,所以我的建议,想学Javascript,还是多跟你的身边认识的朋友,特别是那些从事前端开发的工程师多交流和学习。自己要多钻研。呵呵,不认识前端工程师,就到脚本之家与蓝色理想来多看看(bbs.blueidea.com,记住!这可不是广告哦!),把你不清楚的问题提出来,但是我这里要说一个好的学习习惯。什么时候提问?

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

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

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

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

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

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

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

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

问几个问题,你清楚jQuery是怎么实现CSS(3)和XML的XPath选择器的吗?jQuery又是怎么实现eventHandle的?怎么处理其中的浏览器兼容性问题的?

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

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

入门的书:

《Javascript高级编程技术》:不要被“高级”这两个字吓到,这个书其实是本很不错的入门的书,因为这本书也很详细的介绍了javascript 的全部内置对象和语法,并且介绍了面向对象的思想,DOM、BOM的知识,正则表达式,高级的DOM处理。Ajax的知识,还是很全面的。而且个人认为这本书对基础知识的介绍并不比其他的同类书逊色。比起《Javascript权威指南》(我当时买点的是第4版),我觉得更详细些和更清楚些。在《指南》的第4版中,我觉得那本书中讲的东西有点混乱。感觉一个知识点还没有讲清楚,就给你一个什么类,看得不明不白的。因为没有看《指南》的第五版,所以这里不推荐给大家。而且《高级编程》这本书要比《指南》便宜不少。《高级编程》中也提出了采用功能(future)探测来取代浏览器版本探测来处理脚本兼容性的处理。个人觉得《指南》有的,这本书也都说了。还有我前面提到的,这本书的作者是YAHOO的资深的前端工程师,你可以在他的网站下载到相关的代码。

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

"CSS에 대한 확실한 가이드" 제3판: 프런트엔드 개발을 하려면 CSS를 이해해야 합니다. 이 책에서는 CSS2를 아주 자세하게 소개합니다. 주의 깊게 살펴보세요. 볼 때마다 새로운 것을 얻게 됩니다.

"웹사이트 재구성"과 "CSS 웹사이트 레이아웃 기록"(중국인이 쓴 유일한 추천 도서): 이 책을 읽고 나면 왜 WEB 표준을 배워야 하는지 알게 되실 겁니다. 프론트엔드 엔지니어라는 직업이 중요하다는 걸 아실 겁니다.

개선 단계:

"Javascript DOM Advanced 프로그래밍": 이 책은 DOM 프로그래밍 기술을 자세하게 소개할 뿐만 아니라, 책에 쓰여진 개발 라이브러리를 관리하기 위한 객체지향 프로그래밍 방법과 네임스페이스의 사용에 대해서도 이야기합니다. 여러분의 개인 DOM Javascript 라이브러리는 지속적으로 풍부해집니다. 하하, 앞서 말했듯이 자신만의 라이브러리를 작성할 수 있습니다. 물론 책에 나오는 코드는 상대적으로 느슨해 실제 기업 수준의 개발에는 적용할 수 없다. 하지만 책에 소개된 클로저와 객체지향 개발 아이디어는 비록 객체지향 개발에 대한 설명이 충분히 깊지는 않더라도 JS에 대한 이해를 한 차원 높여줄 것입니다.

"XML 개발 가이드": 우리는 ajax를 알고 있는데 여기서 X는 XML을 의미하므로 XML 관련 지식을 이해하고 싶다면 이 책을 꼭 읽어야 합니다. 읽고 나면 XML에 대해 이해해야 할 것이 너무 많다는 것을 알게 될 것입니다. 아마도 당신이 알고 있는 것에 비해 조금밖에 알지 못할 수도 있습니다. 그런데 여기서 말씀드리고 싶은 것은 Ajax 프로그램의 데이터 매체로 XML을 사용하는 것을 권장하지 않는다는 것입니다. 왜? 매우 비경제적이기 때문입니다. 먼저 데이터를 XML 문서로 변환한 다음 Javascript를 통해 XML 문서에서 데이터를 추출하여 문서를 데이터로 변환합니다. 그리고 브라우저의 XPath 호환성 처리는 여러분을 미치게 만들 것입니다. 이제 이를 대체하는 JSON이 생겼습니다. 그러나 XML은 이미 RSS와 같은 많은 표준의 기본 데이터 통신 매체이므로 이를 숙지해야 합니다.

개인적으로 자바스크립트를 배우는 것은 기본적으로 이 책을 읽는 것과 같다고 생각합니다. 물론 이 책들은 "Mastering Javascript", "PPK Talks about Javascript", "Advanced CSS Skills", "Ajax in Action", "Ajax Advanced 프로그래밍", "JavaScript: The Good Parts( 복사 버전)".

이 책을 읽은 후에는 Javascript 관련 지식을 이해하고 CSS(CSS에 어떤 선택기가 있는지 알게 됨)를 이해하며 XML에 대한 지식을 이해하게 됩니다. ㅎㅎ 기본적인 개발은 스스로 해결하실 수 있으실 텐데요. 또한 Javascript 객체 지향 개발에 대한 이해가 있고 이전 버전과 호환되는 개발 아이디어도 가지고 있습니다. 분명히 이 책들을 읽고 나면 웹 표준에 대해 더 깊이 이해하게 될 것입니다.

물론 훌륭한 프론트엔드 엔지니어가 되려면 이보다 더 많은 것을 배워야 하고 SEO 최적화 지식도 알아야 합니다. 왜냐하면 당신이 작성하는 페이지는 검색 엔진에 친화적이고 합리적인 수준을 갖춰야 하기 때문입니다. 구조. 또한 SQL과 데이터베이스를 이해해야 하며, C#과 같은 백그라운드 프로그래밍 언어도 이해하는 것이 좋습니다. 두 가지 주된 이유는 자신을 포괄적으로 향상시키고 객체 지향 프로그래밍을 완전히 이해하기 위한 것입니다. 이러한 전통적인 언어의 아이디어는 더 성숙하지만 Javascript의 상속 메커니즘은 이러한 전통적인 프로그래밍 언어의 그것과 다르다는 것을 알아야 합니다. 따라서 C#을 작성하는 데 Javascript를 사용하지 마십시오. 또 다른 중요한 이유는 백그라운드에서 프로그래머와 협력해야 한다는 것입니다. 그들이 눈에 띄지 않는 개발 아이디어를 더 과감하게 구현하도록 하려면 그들을 자주 세뇌해야 합니다. 하지만 당신은 그들이 당신의 말을 듣도록 해야 하며, 그가 말하는 것을 이해해야 하고, 그에게 좋은 제안을 하여 그들이 당신의 말을 듣게 하는 것이 좋습니다. WEB 표준 개발을 위해 더 열심히 노력하십시오!

여기서 추가하고 싶은 점은 프론트엔드 개발을 하려면 JSON과 정규식을 열심히 배워야 한다는 것입니다. 현재 정규식을 자세히 소개하는 책은 없습니다. 그런 다음 JSON의 데이터 캐리어가 있습니다. AJAX 프로그램에서 XML을 대체합니다. XML보다 훨씬 쉽습니다. 마지막으로, 저와 모든 사람이 여러 번 언급한 클로저의 사용과 객체 지향 개발 아이디어가 있습니다.

하하, 마지막으로 더 많이 연습하고, 배운 지식을 실제 개발에 적용하고, 친구들과 더 많은 경험을 교류하고 싶습니다. 함께 발전합시다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.