一个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工程师必须掌握的几个方面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要成为一个前端工程师,你需要研究前端开发技术,包括 HTML、CSS、JavaScript 和其他相关的技术,并熟悉现代的前端开发流程和工具。你还需要学习如何使用现代的前端开发框架,如 React 和 Vue,以及如何使用流行的前端构建工具,如 Webpack 和 Gulp。 ### 回答2: 成为一个前端工程师需要掌握一定的技能和知识。首先,需要学习HTML、CSS和JavaScript等基本的前端技术掌握它们的语法和用法。可以通过阅读相关的书籍、参加培训班或者自学的方式来学习。 其次,需要了解和熟悉常用的前端框架和库,如React、Vue等。这些框架和库可以提高开发效率和代码质量,对于成为一个优秀的前端工程师至关重要。 此外,对于前端工程师来说,关注用户体验和界面设计也是必不可少的。了解基本的设计原则和UI/UX的基本概念,能够设计出符合用户期望的界面和交互效果。 另外,不断学习和保持更新也是成为一个优秀前端工程师的关键。前端技术日新月异,需要不断了解新的技术和趋势,保持学习的动力和能力。 最后,实践经验也是成为一个优秀前端工程师不可或缺的一环。通过参与实际的项目和项目经验的积累,可以提高自己的开发能力和解决问题的能力。 总之,成为一个前端工程师需要学习基本技能、掌握框架和库、关注用户体验、保持学习和不断实践,通过不断的努力和提升自己的能力,才能成为一个优秀的前端工程师。 ### 回答3: 成为一个前端工程师需要掌握以下几个关键的步骤: 1. 学习基础知识:前端工程师需要具备HTML、CSS和JavaScript的基础知识。可以通过自学、参加培训班或在线课程来学习。同时,了解一些常用的前端框架和工具也是必要的,如React、Vue、Bootstrap等。 2. 实践项目:在学习过程中,通过实践项目来巩固所学知识,并且建立自己的作品集。可以尝试制作一些简单的网页或小型的网站,逐渐提升自己的技能和经验。 3. 理解用户体验:前端工程师需要关注用户的需求,了解用户体验设计,并能够将其转化为可执行的代码。学习用户体验原则和交互设计将有助于提升你的前端技术。 4. 网络资源:加入前端开发者社区,如GitHub、Stack Overflow等,这些平台可以帮助你与其他开发者交流、学习和分享经验。同时,关注一些前端技术博客和网站,了解最新的前端技术和趋势。 5. 不断学习和更新:前端技术更新迅速,需要保持持续的学习和更新自己的技能。参加技术交流议、研讨或在线研讨,阅读最新的前端技术书籍和文章,将有助于保持竞争力。 6. 练习和挑战自己:参加一些编程挑战和比赛,这些活动可以提供实际的编程经验,并让你在和其他开发者竞争的过程中不断提升自己的技能。 总之,成为一个前端工程师需要不断学习和实践,并保持对新技术的敏感度。通过这些步骤,你可以逐渐成为一个有竞争力的前端工程师
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值