前端javascript的学习历程
来源:互联网 发布:杭州网络教育学校 编辑:程序博客网 时间:2024/05/16 10:05
为什么需要学习javascript
在九天工作时,与同事一起开发一个crm系统,但是公司同事却没有人擅长javascript,所以最开始阶段,使用了大量的全局function来写,后面一个多月之后,逐渐的发现javascript的代码越来越多,项目的复杂度也在不断的增长,导致前端开发效率非常糟糕。基于这一点,我开始尝试使用javascript面向对象的方式来组织代码,开始学习javascript的教程,比如w3c,javacript权威指南等。经过一段时间的尝试,前端的代码写的越来越多后,对javascript有了一定的了解。逐渐的,由于crm系统大部分后台业务都不是很复杂,反而是前端需要考虑到界面排版,易用性等问题,我逐渐花更多的时间到前端。于是乎,前端占用的时间逐渐的超越了后端。
对于一个运营系统而言,由于业务的复杂度,并发性,对性能的要求都不算太高,反而对界面的易用性,排版等有着不小的要求,所以对于有些项目而言,全栈工程师是很有必要的。比如在我经历过的几个团队,由于大家都是后端开发人员,加上资源的限制,也不太可能配备专业的前端,所以就要求小组内大家都必须开发前后端。可能前端的工程师,初步涉猎前端时,都会觉得很简单,不求甚解,所以前端的能力一直处于似懂非懂的状态。熟悉一门语言,将会大大的提高开发的效率,以及完善个人的知识体系,对于web工程师而言,前端还是非常必要的。
javascript的关键:原型链,闭包,面向对象,执行效率
第一阶段:w3c
在最初学习javascript时,通过w3c,快速的知道了javascript时啥,以及基本的语法特性。在这里面存粹就有了一个基本的概念,但是javascript的高级特性基本一无所获。
function xxx(){}function yyy(){}一般初学javascript的代码都是这样子写的,这种代码存在的问题就是对命名空间的污染非常严重,并且随着项目的演进,代码量上来之后,基本就失控了。
第二阶段:jquery
经过使用javascript一段时间后,为了提升工作的效率,又开始学习了jquery,看了jquery相关书籍。
$('#xxx').click(function(){ //});$('#xxx').hide();$('#xxx').show();引入jquery后,可以不用关心浏览器之间的差异,也不用关心IE的特殊语法等,引入jquery后,对dom的操作变得赏心悦目,工作效率瞬间高涨。但是第一阶段的问题还是没有解决。
第三阶段:javascript面向对象
使用了一段jquery后,对javascript有了更深入的了解,但是这时候我们随着项目的发展,我们的javascript的代码量越来越多,function的污染问题也慢慢体现了出来,所以这时候开始学习javascript的面向对象特性,开始研究原型链,犀牛书,jquery的内部源码,面向对象的代码雏形如下所示
function Student(name, age){}Student.prototype = { eat: function(){ }, work: function(){ }, study: function(){ }}引入面向的技术后,我们的function会大大的减少,同时使用领域模型的思想,我们只需要根据业务来构建合适的对象即可,比如一个典型的后端界面,一般就是save,list,load几个属性即可,如下代码所示,对整个window的命名空间,几乎是0污染,这钟技术的使用,基本上能够解决命名空间污染的问题了。
$(function(){ function Role(){ } Role.prototype = { save: function(){ }, list: function(){ }, load: function(){ }, bindEventHandler: function(){ //绑定界面的操作事件 var that = this; $('#save').click(function(){ that.save(); }); $('#load').click(function(){ that.load(); }); $('#search').click(function(){ that.search(); }); } };});
第四阶段:制作jquery插件
有了上面的基础理论与实践后,开始寻找jquery插件来提高开发效率,也开始写一些简单的jquery插件
(function() { //定义Beautifier的构造函数 var Beautifier = function(ele, opt) { this.$element = ele, this.defaults = { 'color': 'red', 'fontSize': '12px', 'textDecoration': 'none' }, this.options = $.extend({}, this.defaults, opt) } //定义Beautifier的方法 Beautifier.prototype = { beautify: function() { return this.$element.css({ 'color': this.options.color, 'fontSize': this.options.fontSize, 'textDecoration': this.options.textDecoration }); } } //在插件中使用Beautifier对象 $.fn.myPlugin = function(options) { //创建Beautifier的实体 var beautifier = new Beautifier(this, options); //调用其方法 return beautifier.beautify(); }})();使用第三方jquery插件,能够节省大量的时间,并且对UI的帮助非常的显著,大家需要的可以查阅jquery插件的官方文档。
第五阶段:使用js template模板技术来渲染界面
由于在渲染界面时,字符串的拼接会带来代码可维护性的问题,所以这时候开水寻找类似freemarker的js技术,后面查找到了js template,然后使用该技术来替换字符串拼接。
<script type="text/html" id="template1"> <tr> <td>${ID}</td> <td>${Name}</td> </tr></script><script type="text/javascript"> var users = [ { ID: 'think8848', Name: 'Joseph Chan', Langs: [ 'Chinese', 'English' ] }, { ID: 'aCloud', Name: 'Mary Cheung', Langs: [ 'Chinese', 'French' ] } ]; $('#template1').tmpl(users).appendTo('#table1')</script>
第六阶段:angular,vue,react框架的引入,gulp等构建工作的引入
由于前端的代码越来越多,项目不得不引入工程管理的管理方式,所以引入gulp构建;angular,vue,react可以的引入是为了提高前端的开发效率,以及项目管理的复杂度
总结
从学习的历程我们可以看到,没学习一个技术,我们都是希望能够解决某个问题,比如jquery解决dom操作的问题,面向对象解决了命名空间污染等问题,js template界面了数据的渲染,有了这个理论的支持,我们队javascript就有了主要的把握,在选型时,方能做到胸有成竹。
附录
学习教材:《锋利jquery》,《javascript权威指南》,《javascript设计模式》
jquery源码解析:http://www.cnblogs.com/nuysoft/archive/2011/11/14/2248023.html
javascript面向对象:https://www.ibm.com/developerworks/cn/web/1304_zengyz_jsoo/index.html
javascript效率:http://www.cnblogs.com/couxiaozi1983/p/3510891.html
阅读全文
0 0
- 前端javascript的学习历程
- 我的前端学习历程
- web前端的学习历程
- 我的前端学习历程
- 浅谈前端的学习历程
- 别人的javascript学习历程
- 前端小白的学习历程
- 我的前端学习历程 (一)
- 前端学习历程1
- 前端学习历程
- 感悟javascript(我的学习历程)
- 前端开发工程师学习历程
- javascript学习历程
- 记录转行学习前端的历程(缘由)
- 我的前端学习历程,你认同吗
- 我的前端历程开端
- 前端猿的成长历程
- 记录自学前端的历程
- C++中的const关键字的用法
- 聊聊我的高效编程之路
- 函数的参数
- codeforces 822D My pretty girl Noora
- 接口,抽象类,内部类
- 前端javascript的学习历程
- Linux操作系统原理与应用(陈莉君)
- 神舟zx8sp7s2装linux
- arm64的一种错误
- [bzoj2502]清理雪道 最小流
- Hadoop--Federation集群搭建
- 分布式大数据sql查询引擎Presto初识
- 给JAVA初学者的部分笔记!
- 继承