JavaScript 学习历程和心得分享


Posted in Javascript onDecember 12, 2010

一、前言

在过去,JavaScript只是被用来做一些简单的网页效果,比如表单验证、浮动广告等,所以那时候JavaScript并没有受到重视。自从 AJAX开始流行后,人们发现利用JavaScript可以给用户带来更好的体验,甚至利用这一优点开发了大型网页游戏,于是这门小语言被重视了起来。现在,很多公司会招专门的JavaScript工程师,通常JavaScript是WEB前端开发的必备技能。简单介绍了JavaScriptr的好处,并不代表大家就会去学习甚至把它学好,兴趣是很关键的,我认为兴趣是最好的老师,它是你专心做一件事并把它做好的动力。另外,大家要相信小语言有大作为,我就曾用Greasemonkey 写过一些非常实用的工具,比如你可以用JavaScript+Greasemonkey写在线网页游戏的外挂程序。下面说说本人学习JavaScript的历程和心得吧。

二、入门

1、学会DIV+CSS布局

使用DIV+CSS布局标准网页,可以使前端XHTML代码更少、结构更清晰,这有利于轻松用JavaScript操作DOM,比如,要展示一个3 行3列的列表,如果用传统的表格布局,现在要你用JavaScript动态生成这个列表,那么就需要一个循环嵌套,如果采用li结构加CSS浮动布局,一次循环就好了。当然,WEB标准化不是一定不能使用表格,我的意思是结构清晰的XHTML更易于把JavaScript效果或功能整合到项目中。

2、掌握几种开发测试工具

做为一个开发人员,熟悉测试工具是必须的,这有助于提高你发现问题和解决问题的效率,对于特别大的项目更是如此。JavaScript和XHTML开发测试利器我就先推荐两个最常用的,它们是:Web Developer 和Firebug 。

3、熟悉JavaScript每一个方法的作用

这一要求听起来似乎有点不太实际,我想这个要求对于像C#、JAVA这些大型语言来说确实是,因为这些语言类库实在太庞大了,相信没有人可以全面记住它,而且也是没有必要全部记住,比如用JAVA做网页与手机开发所关注的类库是不一样的。而JavaScript则不是,它的内置方法函数真的不多,先全面熟悉一下,开发起来也将得心应手,比如,你一开始可能认为JavaScript有trim()这个很多语言都有的去行头行尾空格的方法,当你了解 JavaScript内置函数库后你会发现原来在JavaScript中这些方法是要自己去实现。再比如,如果你是从其它比较强大的语言转过来玩 JavaScript,你又可能认为JavaScript应该有MD5加密的方法,当然这也是没有的,但有人用JavaScript实现了这样的方法,即JavaScript MD5 。说到底JavaScript内置方法少的可怜,但很多牛人写了一些新方法增加JavaScript功能,比如prototype 框架主要是对JavaScript基础函数进行原型扩展的。

4、了解DOM编程

了解DOM编程算是学习JavaScript过程比较重要的课程,因为JavaScript除了编写一些纯数据处理的逻辑外,更多的是在动态更改XHTML的结构和内容,以达到界面动态更新的目的,而这些工作都要依赖DOM编程。jQuery 框架在这方面封装的相当好,提供了丰富的DOM操作方法,可以让你轻松找到页面任何地方的一个DOM节点(XHTML标签),然后进行相关操作(增、删、改、查)。对于有过用其它语言操作XML文档经验的朋友,相信这一块很快上手。

5、接触并使用AJAX

在今天,学习了JavaScript而不使用AJAX,那是埋没JavaScript优势了(AJAX本身并不能算是JavaScript内容)。 AJAX对于用户以及服务器来说都是有好处的,对于用户,提供更好的用户体验,最典型的一个应用场景:注册页面的用户名可用性预检测,传统的可能会遇到这样的问题:用户填写了一堆资料后提交表单,结果被服务器告知这个用户被注册了,要用户重新填写资料注册,这对于大型多用户网站那是很致命的,因为用户输 10个用户名可能有一半已被使用了。对于服务器来说,减少网页流量,因为AJAX后,一般是按需加载数据的,不会因为局部更新而重新加载整个页面。比如一个网页占三屏高,我们可以默认只加载第一屏的内容,当用户拉动滚动条往下的时候,再加载二三屏的内容。另外像WEB在线地图应用也是AJAX使用的典范。

三、提高

1、深入理解JavaScript this关键字

JavaScript this的作用与指向跟很多真正面向对象的开发语言是有很大差别的,它不始终指向当前对象,是会变化的。如果不注意这个问题,就有可能遇到看似没错的代码报错或不执行等问题。

2、学习JavaScript OOP编程

OOP是个好东西,它使程序员思考问题更有组织性,代码的组织也更清晰。JavaScript 也可以OOP,但与一些传统的OOP语言同样存在较大差别,所以要真正用熟JavaScript OOP也是需要下点功夫的。

3、了解闭包

JavaScript闭包也是被谈得比较多的一个话题,闭包使JavaScript变量作用域变得复杂起来,但这一特性又使这门语言变的更灵活了。

4、学习规范开发

团队精神相信大家是听过不少了,就职一个公司做开发,当然离不开团队,团队要想合作愉快,每个成员的编码必需符合一定规范,这也是每个公司对程序员的基本要求。关于规范通常指变量命名、文件组织、注释规范等,这方面知识与其它语言的规范是有相通性的。

5、找本算法的书读一读

我认为学会并使用一门语言并不是什么难事,难的应该是用语言这基本的语法与语句去解决一些复杂的问题。要解决一些复杂的问题,可能会用上一些算法,有些算法实现可能是一个团队在做的,比如中科院中文分词 的具体实现,另外像游戏常用自动寻径A*算法 等。也许你认为你不可能在JavaScript开发上遇到这么复杂的问题,其实这还要看你在做什么项目,如果你是在开发大型网页游戏,通常面临更多具有挑战性的难题,如果你有读过一些算法书籍,了解一些常见问题的解决方法,在开发过程中自然会如虎添翼。另外,熟悉算法显然对于你日后接触其它开发语言也是有帮助的。

四、习惯

1、兼容、BUG问题做好笔记

CSS与JavaScript浏览器兼容问题最好做好笔记,因为这些问题,或者说BUG是比较诡异的,这些问题浏览器不会提示你错在哪里,IDE也不会提示你,特别是CSS兼容问题,这就会导致你在开发过程碰到这样的问题会卡老半天得不到解决。即使之前解决过同类问题,以后可能又会碰上,结果之前没有做好笔记加强记忆,注定你要再受罪一次,因为这些兼容问题不是一两个,临时记忆效果是不明显的。以我经验,很多问题是在IE6下发生的,现在IE6连微软自己都希望加速它灭亡,这对于前端开发的我们来说当然是一个好消息。

2、阅读优秀的代码,比如jQuery

阅读优秀代码绝对也是自我提高的好方法,这不仅可以了解优秀代码的组织规范,更可以了解一些功能的实现思路。比如jQuery 就是一个非常值的学习的JavaScript框架。当然了,要阅读这样专业的JavaScript框架,JavaScript基础要扎实,不然看的过程中会遇到太多疑问,甚至对自己的信心也是一种打击。

四、注意

1、在JavaScript入门之前避免直接使用JavaScript框架做开发

如果你没有任何JavaScript基础,请不要直接使用JavaScript框架做开发,我认为这可能会误导你对一门语言的认识,比如你直接使用了jQuery用点连起来的语句写法,你是否会认为这是JavaScript语法的一种呢?再比如你使了prototype你不要把框架扩展后的基类方法认为是JavaScript内置的。我认为JavaScript框架是用来提高效率的,它绝对不是JavaScript入门应该学习的。

2、网上找的很多例子可能不是跨浏览器兼容的

有很多JavaScript效果源码是N年前某网友写的,N年前是IE的天下,于是一些前端懒得解决脚本跨浏览器兼容问题,使写出来的脚本只适用于 IE。当你得到这样的一段代码,请不要说垃圾,也不要为此发牢骚,因为这些代码并不是没有一点价值的,如果你了解JavaScript跨浏览器兼容问题,相信你可以很轻松通过少需修改使代码有更好的兼容性。

五、相关阅读

《JavaScript开发规范要求》

Javascript 相关文章推荐
JQuery从头学起第一讲
Jul 04 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
Nov 17 Javascript
javascript中的正则表达式使用指南
Mar 01 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
微信开发 微信授权详解
Oct 21 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
Dec 30 Javascript
js放大镜放大购物图片效果
Jan 18 Javascript
原JS实现banner图的常用功能
Jun 12 Javascript
深入浅析Vue.js计算属性和侦听器
May 05 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 Javascript
原生js实现九宫格拖拽换位
Jan 26 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
Dec 12 #Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 #Javascript
JS俄罗斯方块,包含完整的设计理念
Dec 11 #Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
Dec 11 #Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 #Javascript
jQuery ul标签下拉菜单演示代码
Dec 11 #Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 #Javascript
You might like
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
python安装sklearn模块的方法详解
2020/11/28 Python
个人简历自我鉴定
2013/10/11 职场文书
土木工程毕业生自荐信
2013/11/12 职场文书
护理中职生求职信范文
2014/02/24 职场文书
区域经理岗位职责
2015/02/02 职场文书
经理岗位职责范本
2015/04/15 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
MySQL数字类型自增的坑
2021/05/07 MySQL