一个家伙与javascript的故事

十二年前,他刚开始接触web开发,于是在google和ide之间不停的切换,自学c#,sqlserver,js开干。

这时他无非用js做了下面几件事:

1.简单的操作dom位置颜色等;

2.一些数据验证;

3.尝试写简陋的ajax,做了一个类似游戏中装备栏的组件,用js绑定事件;

4.ajax写了个省市县三级联动,又尝试着将数据做成xml一次全发给浏览器,这样联动可以更快。

在这里,他完成了javascript常用功能的学习与练习。不过只用到了javascript 最简单那部分能力,并且有时会做一些错误的决定(滥用)。

后来出现了在浏览器上裁剪图片的应用,他觉得很神奇,用一些原始的技巧把别人的js代码扒下来,一点一点去掉无用代码,集成到了自己的站点上。

在这个过程中,他第一次仔细地大段阅读别人写的代码。很多地方看不懂,但是觉得很屌的样子。

于是他决定认真看几本js的书补补课。

他越来越多的使用google,有一天突发奇想:他要做个浏览器插件,可以用键盘操作google:

1.打开firefox后,双击ctrl打开google,输入框获得焦点;

2.在搜索结果前加上数字序号;

3.按数字n,在新页签打开第n个结果,并调到这个新页签;

4.按ctrl+数字n,在新页签打开第n个搜索结果;

5.按ctrl+shift+数字n,在新页签打开前n个结果;

firefox的插件是用js写的,他完成了以上功能。

然后从别人那收到了用同样的操作来使用百度的需求。

虽然有点生搬硬套c#经验,他第一次在自己的js代码中使用了类和对象来重构代码实现了这个需求。

后来他加入一个大型公司,负责erp的技术平台中单据组件的开发维护,这个工作有以下几个特点:

1.大量的逻辑放在浏览器端,入职时就已经有了数万行js代码量;

2.这个组件最初是购买了一个商业软件的混淆版本,所以其中的两万余行javascript核心代码是混淆的(变量方法名都是a3,e5这种);

3.他的工作是维护好这个足够抽象的组件,不停的添加新的功能。然后业务平台会将其业务化后提供给业务开发人员使用。

在这个工作中,他的js技能得到了一些演化,包括但不限于:

1.总结并学习了一些调试技巧,如:在不阅读源码的前提下(太花时间),如何在页面发生某件事时定位到触发的代码上。或是利用条件断点在不改源码的条件下修改代码逻辑;

2.设计抽象抽象再抽象;

3.产出简单简单再简单,甚至为每一个功能制作使用demo,用最直白的方式展示如何使用这个新功能;

4.身在最下层的技术平台,帮助上层业务平台和业务实现调试问题;

5.不停的重构;

6.由于复杂度庞大,有意识地使用设计模式;

7.时间分配发生了很大的变化:原来很短的设计耗费时间变长;开发耗费时间没有较大变化;调试耗费时间在调试难度大幅增加的情况下却变短了。

有次因为朋友推荐,到一家不错公司面试js开发,面试官听说很厉害。

他问了一些如var a=[1,2,]中最后一个逗号有啥名堂,constructor关键字的作用等偏门问题。

他觉得被恶意刁难,有点恼怒,于是不欢而散(确实也没答太好)。

后来他知道这个面试官是司徒正美,顿时之前的恼怒变成了懊悔。

有些东西他觉得太偏门并不代表它没有存在的意义,在有些人的工作中,这些偏门知识是必须的。

已经好几年的工作经历还没有教会他谦卑,他错过了一次进入更广阔世界的机会。

后来的工作中,js用的越来越少。有两个事值得一说:

有次做内部研发项目管理软件,他想做一个可视化很强的源代码管理控件和一个更方便的多时间组件。

他用了flotchat来在主流浏览器中用canvas,低版本ie中用VML绘制来搞定了它。

另外两次由于刚从微软系阵营出来就要在linux实现一些需求,使用了nodejs(当时我学其他语言的学习成本会高一些)。

这就是我这个非专职前端开发人员十二年里使用javascript的故事。模仿维特努威一句有名的话,我觉得:

理想的jser应该既是工程师又是艺术家,他还应通晓产品,热衷于服务别人,精通厨艺,懂得后端知识,具有慈悲胸怀,深谙演讲技巧及与人打交道。

(原话:理想的建筑师应该既是文学家又是数学家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算。)

(好吧我知道我模仿的很烂,大家知道我厨艺好就行啦~)

我用了很长的时间才学会这些知识,我希望能帮助我厂的刚入行同学们更快地学会他们。

我不是一个专职的jser,而且离开一线js开发已经有段时间,这期间涌现了新的更好的框架与编程理念。

但是在js的每个方面,我厂都有足够强大与专业的高手来帮助大家。

那,现在问题来了:

我想给我厂十来位刚入行的同学们做js方面的培训,大家有啥好建议么~

我的初步想法是:

1.带动大家按照统一节奏看犀牛书(或选本别的),每个周期看一个指定章节;

2.大家一起开一个学习会,检查大家关于这个知识点的自学情况,结合工作中的案例扩展这个知识点,附带讲解调试技巧,编程理念,设计,权衡;

3.前两步骤由浅入深重复多次,覆盖工作中常用的基础js知识点。这应该包括犀牛书第一部分中除过于基础或正则等偏门知识外的所有内容,争取一个月完成;

4.讲解常用框架,设计模式,nodejs;

5.项目总结会,技术分享会,多样化专才培养。

时间: 2024-10-24 22:17:55

一个家伙与javascript的故事的相关文章

一个程序员的真实故事(下)

这几天比较忙,时间不够用,本来想天天更新一篇文章的,最后还是食言了,看来自己对时间的安排还是不够游刃有余. 今天就来揭晓一个程序员的真实故事的下集,上周写了上集,反响还是不错的,有好多朋友都在期望着下集呢. 回到故事中,上周一,检查结果出来了.小Z带着媳妇去拿结果,他带着一种很忐忑的心情去的. 检查报告一共有三张,当从自助机取出检查报告的那一刻,小Z匆忙.紧张地大致扫了一下三张报告,手都紧张地在发抖,......,还好,上边大部分指数还是在正常范围的,他松了一口气.他们接着去找医生分析检查结果去

一个程煦媛的故事

故事是这样的: 程煦媛背着一堆书(n>10)出图书馆. 警报响了,扫地老太太让她看看是哪本书把警报弄响,煦媛把书倒出来,准备一本一本的测. 扫地老太太见状急了,把书分成两部分,第一份过了一下,响了. 又把这一份分成两份接着测,三回就找到了,扫地老太太用那雷人的眼神,好像在说O(n)和O(log2n)都分不清. 这个故事好像在说连扫地老太太都会二分算法(高手在民间),身为程序员的程煦媛竟然还要一本一本的测... 其实故事的真相是这样的: 身为程序员的程煦媛岂能不会二分算法,她巧妙地借助扫地老太太会

一个通用的JavaScript分页

1.JavaScript代码 Java代码   Pagination=function(id) { var totalNum=0; var maxNum=10; var pageUrl=""; var breakpage = 5; var currentposition = 0; var breakspace = 2; var maxspace = 4; var currentpage=1; var perpage=10; var id =id; this.initPage = fun

一个关于依赖注入的故事

1.关于控制反转和依赖注入的理解: 控制反转:一般的,当实体类被使用时,调用者需要创建实体类的实例.控制反转的意思即是调用者不再实例化实体类了,而只是声明类对象和封装对象的使用.具体的实例化由容器来实现.依赖注入:依赖注入是控制反转这种设计模式的一个关键步骤.把对象的实例化交给容器时,容器负责生成具体的实体类对象,并把对象注入到调用者类中,那么此时,调用者就实现了实体类的声明.定义.和使用了. 作用:达到削减计算机程序的耦合度的作用. 2.故事角色以及职责 类名 备注(职责) seed.Pine

一个人和没有人的故事

高中时在读者上面上看的.突然想起. 转自:http://domestic.kankanews.com/c/2013-08-16/0042466996.shtml 一个人和没有人的故事

发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser

发布一个高效的JavaScript分析.压缩工具 JavaScript Analyser 先发一段脚本压缩示例,展示一下JSA语法压缩和优化功能. try { //xxxx(); } catch (e) { yyyy(); function f1() { } } finally { zzzz(); } function f2(var1) { var var2 = 2; var var3 = 3; var withObject = {var2:-2} with(withObject){ alert

一个简单的javascript深拷贝

var extendDeep = function(parent,child){ var i, toStr = Object.prototype.toString, astr = '[object Array]'; child = child || {}; for( i in parent){ if(parent.hasOwnProperty(i)){ if(typeof parent[i] === 'object'){ child[i] = toStr.call(parent[i])=== a

有趣 GIF 动图集 - 仿佛每张小动图都诉说了一个小笑话或者小故事

点这里 来自法国南特(Nantes)的 Guillaume Kurkdjian 目前还是个学生.Kurkdjian 擅长创作一些平面动态图像,这些有趣的小动图仿佛每张都诉说了一个小笑话或者小故事,像个极其微型的小电影…… GUILLAUME KURKDJIAN 有趣的 GIF 动图集

一个硬盘的感人爱情故事(转)

我是一个硬盘. 在一个普普通通的台式机里工作.别人总认为我们是高科技白领,工作又干净又体面,似乎风光得很.也许他们是因为看到洁白漂亮的机箱才有这样的错觉吧.其实象我们这样的小台式机,工作环境狭迫,里面的灰尘吓得死人.每天生活死水一潭,工作机械重复.跑跑文字处理看看电影还凑活,真要遇到什么大软件和游戏上上下下就要忙的团团转,最后还常常要死机. 我们这一行技术变化快,差不多每过两三年就要升级换代,所以人人都很有压力而且没有安全感.每个新板卡来的时候都神采飞扬踌躇满志,几年光阴一过,就变得灰头土脸意志