一个JavaScript工程师必须掌握的几个方面(转)

作为一个JavaScript工程师,在写一个工具库时,一般来说,需要提供如下的模块。

核心模块:core.js

$namespace 注册命名空间:

$namespace(‘human.software.dom‘); // window.human.software.dom

$package 多模块共存,引入

//对于一个模块文件 Event.js $pack(function(TT){     //这里传入的TT是顶级命名空间     //引入其他模块     var $D = TT.type,         $S = TT.support;      // code here;     // var event = { ... };      //暴露访问接口     TT.event = event; });

当然我也不反对使用AMD,或者CMD来处理依赖。

函数bind,AOP支持:

Function.prototype.bind = function(context){...} Function.prototype.after = function(f){...} Function.prototype.before = function(f){...} Function.prototype.once = function(){...}

 变量类型检测模块:

$type(foo)  // returns variable type

DOM的一些操作:

查找: $id(), $tagname(),$className(), $closest(); dom操作: $append(), $prepend(), $after(), $before(); 样式操作: $addClass(), $removeClass(), $toggleClass, $css(getter [,setter]) 特性检测: $getVendorPropertyName() //出产商前缀,  $isSupprot3d() //不多说

对于现在的浏览器来说,出产商前缀检测可以独立成模块,方便使用:

$prefix = {             dom: dom,             lowercase: pre,             css: ‘-‘ + pre + ‘-‘,             js: pre         };

浏览器类型检测模块:

B: (function () {         var d = {},             c = navigator.userAgent;         d.win = c.hasString("Windows") || c.hasString("Win32");         d.ie6 = c.hasString("MSIE 6") && !c.hasString("MSIE 7") && !c.hasString("MSIE 8");         d.ie7 = c.hasString("MSIE 7");         d.ie8 = c.hasString("MSIE 8");         d.ie = c.hasString("MSIE");         d.opera = window.opera || c.hasString("Opera");         d.safari = c.hasString("WebKit");         d.chrome = c.hasString("Chrome");         d.ipad = c.hasString("iPad");         d.mac = c.hasString("Mac");         d.firefox = c.hasString("Firefox");         return d })(),

 cookie操作:

$setCookie(...),$getCookie(...), //一些附加的如: // expires, path, domain

 datetime,Number操作:

//$date(d, "YYYY-MM-DD hh:mm:ss"); $date = function(date, formatString){...} $formatFloat = function(num,type){...} //当然还有一些Date或者Number上面比较细节的处理

http,ajax操作:

$ajax(opt),或者对URL,params的操作 //或者提供,加载js回调 $loadJs: function (file, callback, charset) {..} //jsonp:  callback({"name":"tom"}) $asynJSON: function (file, methodName, callback, charset) {...}

对事件的操作:

$on, $off, $once, $fire,$fixEvent //mobile端当然还有 $tap, $hold, $swipe $transform //2个指头 $scrollstart,$scrollend $orientationchange //事件的处理细节兼容性比较多,这里面也涉及到position

对位置的计算:

//这里的位置包括:元素的基于document的位置,基于screen的位置,基于offsetParent的位置,和事件触发时候的位置 getPosDoc: function (el) {...} getPosWin: function (el) {...} getOffsetParentPos:function(el){...} //当然还有一些doc,window的位置计算函数 //还可能包括元素自身的各种计算

动画的处理:

//动画的处理就相对复杂了, //老式的浏览器采用js队列动画的方式, //这里主要是对于日趋的modern Browser来说 //会考虑到优先使用css3来做动画,或是最新的api..  js系列作为垫片 //我发现zepto的anim-plugin源码很清晰

来源:human

转载请注明:程序猿 » 一个JavaScript工程师必须掌握的几个方面

时间: 2024-10-01 04:33:17

一个JavaScript工程师必须掌握的几个方面(转)的相关文章

作为一个前端工程师,CSS是最基本的入门课,你都能做出来吗?

CSS在很多程序员看来那只不过是雕虫小技, 实际上CSS3发展到今天已经强大到超乎你的想象, 当然对于低端浏览器使用者来说,还是以前那样——囧 有时候搞CSS开发确实需要很多想象力,下面一组纯CSS3特效足以描述这一点 以下内容转载自[http://design.yesky.com/show/466/11497966_3.shtml] 设计欣赏:纯CSS3「绘制」的图形图标 IE 标志 作者: Andreas Jacob 在 Firefox 3.6+ 以及Safari 5 上显示最佳.使用了圆角

如何成为一个javascript高手【转载】

原文网址: http://www.cnblogs.com/keva/p/how-to-become-a-javascript-badass.html 英文网址:http://www.clientcide.com/deep-thoughts/how-to-become-a-javascript-badass/ 上周我写了一篇相当漫长的文章,感叹要找到一个有天分的前端开发人员是相当具有挑战性的.这篇文章引起了一些评论和电子邮件形式的讨论,我不只是想要在这里抱怨这种客观事实而是想要对该现状发表一下个人

一个JavaWeb工程师的进阶之路

大学毕业之后,凭着一点JAVA知识和J2EE知识,顺利的找到了一份不错的工作,从那时起,我就开始了我的JavaWeb工程师之路. 今天回顾总结一下这几年我学过的编程知识. 一.开发语言 Java:从学习Java开始到现在有8年多时间了,这个是我深入骨髓的一门开发语言,现在依然在使用.对于那些没有对象的同学,学习java之后,可以自己new一个,想要什么样的对象,自己说了算. 二.Web基础 1.HTML:网页包含的元素,网页显示的内容,比如:标题,段落等. 2.CSS:网页元素的样式,负责网页元

一个前端工程师到底需要掌握哪些技能?

作为一名前端想要晋升,需要什么条件? 现在在用 React,要不要也学学 Vue? 有必要学习 Node.js/Flutter/ 函数式吗? 这几个问题看似毫无关联,但是其实它们本质上都是同一个问题,这个问题就是"一个前端工程师到底需要掌握哪些技能?" 其实在行业里面,对前端工程师的能力模型有一个基本的认知,不同公司的定义可能有细微差别,但是它的内核是一致的. 这里我给出一张图,是我自己理解的前端工程师的技能模型. 为了方便你理解,我把这些技能具体放进前端工程师的不同级别里,你可以对照

每天一个JavaScript实例-html5拖拽

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-html5拖拽</title> <style> #drop{ width:300px; height:200px; background-

作为一个软件工程师,在接下来的 5-10 年内应该掌握的技术

这是一个发布在Quora上的问题,提问者问到:“作为一个软件工程师,想要生存下去,在未来的 5-10 年内有哪些必须掌握的技能呢?例如人工智能?高等数学?” 下面是一位曾经在 Facebook 和 Google 工作过,目前在 Uber 就职的程序员 Pedram Keyani 的分享,目前已获得 3500+ 的赞: 如果你的目标是成为一名通用软件工程师,那么未来 5-10 年需要掌握的技能与过去 5-10 年并没有什么太多的差别. 通用技能: 深刻理解计算机科学的基本原理 数据库 网络技术 编

每天一个JavaScript实例-使用带有定时器的函数闭包

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-使用带有定时器的函数闭包</title> <style> #redbox{ position:absolute; left:100px;

famo.us 一个JavaScript游戏引擎初探

好久之前就看到了famo.us的优良特性,尤其是它避开浏览器弊病的跳跃思维,再加上自己使用JQM来开发Web App时的页面切换的白屏bug,又比对了sencha touch,最后还是决定将famo.us作为开发框架,它是基于浏览器的,目标就是使页面呈现性能最大化,而我不会拿它来做游戏,只是做简单的WebApp,要的就是这个界面显示性能. 但悲剧的是国内没有关于famo.us的教程,近些日子Google被天朝打压的挺惨,幸运的是famo.us官网还是可以访问的,所以以下的学习结果都来自官网htt

5G为何采纳华为力挺的Polar码?一个通信工程师的大实话

Polar码被采纳为5G eMBB场景的控制信道编码,这两天连续被这条消息刷屏,连吃瓜群众都直呼好爽. 然而,随着媒体报道的持续发酵,真相在口口相传中变了形,不乏夸大不实之嫌,小编终于坐不住了,也想吐露点心里话,希望尽可能站在客观的角度,在这个浮躁的世界里发出一点微不足道的声音,一个通信工程师的声音. 事件经过我们再回溯一遍- 2016年11月14日至18日期间,3GPP RAN1 #87会议在美国Reno召开,本次会议其中一项内容是决定5G短码块的信道编码方案,其中,提出了三种短码编码方案:T