1,学习js分几个阶段,没入门,入门初学者,中级水平,高级水平,ppt水平。

2,没入门的如何学习?

我当初是先学jquery,有css和html基础,有css基础看jq的语法很简单,就是选择符,jq的api懂高中英语就够了,猜也猜的出来意思,然后下载基本jq的chm手册,对着挨个看一遍。(这个挨个看一遍的意思就是一行一句的逐个看一遍,看不懂的别死扣,先看完再说)。

看完一遍之后,心中有数,哦,原来有个ajax函数可以访问网络资源,有个success可以写回调方法,超时怎么办?几个一起同时发怎么办?不管了,用到再说。哦,原来有个find函数可以查找dom节点,哦,原来有个serialize函数可以序列化表单值,哦,原来有个toggle函数可以做切换用,哦,有个fn可以挂着写插件用,哦,切换cls这样做就行了,哦,请求json数据这样配置参数就可以了。

做到了解,你就成功了,用到的时候知道jq能干什么,不能干什么,干什么的时候去看哪一章,再去仔细研究,做东西开始有点慢,做起来几个东西之后就手熟了。

同理,我学习yui2,kissy,mootools,nodejs,react,ng,甚至swift部分也是这样对着手册来的,反复几遍就可以了。

入门的意思就是概括一下,我知道有哪些api能干什么,具体怎么干,用的时候再说。

2,入门初学者。

我看完手册了,也写了几个小项目了(切换切换class,套几个jq插件,ajax取完数据又html放到指定位置了类似这种需求)。我感觉我可牛逼啦,终于会写交互js啦,感觉什么都不怕啦,其实就是刚入门而已。

我们来看看入门初学者怎么提升js编程技巧,个人经验,切勿照搬模仿,我们会使用框架工具库完成简单需求的同时,我们无法理解一些复杂功能的开发原理。比如一个简单的放大镜特效,一个裁切头像大小的功能,一个轮播组件,一个搜索智能提示,一个at圈人功能,甚至一个回到顶部的fixed按钮,或者输入框计数,表单验证组件,动态表格,长连接聊天功能,浮出层,移动端的swiper,动画函数,选择器,字符串模板,富文本编辑器?太多啦?一点也不多,我还没说全呢,几乎所有你在网页里见到的一些现成交互,其实有个学名,慢慢看,挨个写一遍,两遍,三遍,先不谈封装成组件,api是否优美,就说能不能写出来,刚入门的人一定say no。

说白了,经验的积累是前端开发非常重要的一条,有些东西你没写过你还真就是不会写,或者你知道怎么写,但是你没写过也别轻易说自己会,因为兼容问题,很多东西细节上你还是没有体会。所以,我第一次工作写一个头像裁切功能,我想了好多个夜晚,也没弄明白原理,查了好多文章,又写了许多demo,最后还是做了出来,但是会有一些极限情况下的bug?一个组件一个组件的撸,一遍又一遍的撸,是初学者最好的提升方法。

等你做到基本网页里任何一个功能看一眼就知道怎么写或者都亲自写过的时候(不是demo级别,是上线级别),你就已经不是初学者了,大概这个速度快也要1年左右时间,这也就是为什么一些功能招聘都要3年以上的原因了,经验包的积累不是看几本书就搞的定的。

3,中级水平。

你发现你在编写javascript功能时已经没什么好怕的东西了,也就是说,衡量一个需求时,你从来不会说no,而只是预估时间的时候,基本就已经达到中级水平了,这个时候你明确的知道自己在写的是什么,也能读懂别人写的是什么,而且拥有了一些自己平时积累所写得插件,组件,并封装的好好的,那么,就完美了么?你发现你遇到了瓶颈,不知道如何提高自己了,打开了知乎,可能问下了这个问题:《如何提高javascript编程高级技巧》

这个时候你需要往高级一步了,你可能熟练使用jq或者某一框架,基于某些框架二次开发了非常炫酷的插件组件,并且了解了设计模式,一些高大上的名词,业务需求无法满足你,自动化工具grunt和gulp用的妥妥的,总之,很多事情在你眼里自己无所不能,哎呀我操,为什么呢,我是不是凯瑞了全场?

这个时候,你需要的是开始思考,从最开头开始撸你的东西了,比如我们往往喜欢使用jq或者zepto,我们的插件往往是基于他们或者说我们的经验都是在某一个领域框架下实现的,回过头来看,这些东西真的好吗,他们是如何实现的?为什么要这样设计,一个超过5000行的抽象类怎么组织,设计模式你真的理解吗,js的奇淫技巧你会几样,有没有见过一些根本看不懂的js代码,那些大牛们到底在说什么呀,es6的api到底有多少个呀,那些新手都看得懂jq(真的懂?),为毛自己写不出来?grunt到底是怎么运行的啊,v8的源码是什么样的啊,测试用例是什么鬼啊?

很多时候,我在读一个库的源码时,在看devDependencies的时候,意外又发现了数个不懂的东西,有时候见到一段代码会会心一笑,有时候又会大喊卧槽,从感觉自己什么都知道,到感觉自己什么都不知道,可能就是你突破瓶颈的时候了。

4,高级水平。

我们公司也有高级工程师的技术序列要求,我刚好评过,基本考察点都不在你如何实现一个技术细节了,而是考察你如何从0到1的这个过程,以及可能涉及到2,3,4的预判能力。还有就是在业界都在传一些东西很好很强大的时候,你已经可以把他转换为实际的生产力了,能发现一些好的东西里面不足的地方,并能自己改进,永远不满足,不崇拜大牛,因为自己就是大牛。说白了,你写的东西要能让很多人解决一些经常解决不了的问题,比如怎么能让你的系统更快,依赖更少,代码更小,开发起来更爽,新人如何更好的上手,api设计的美不美,实现的每一行代码都精雕细琢,review别人得东西总能提出自己的看法,总之,Legendary啦!

5,可能你需要多看看《超级演说家》。

Javascript水平提升的更多相关文章

  1. 回归基础: JavaScript 变量提升

    from me: javascript的变量声明具有hoisting机制,它是JavaScript一个基础的知识点,也是一个比较容易犯错的点,平时在开发中,大大小小的项目都会遇到. 它是JavaScr ...

  2. 笔记:Javascript 会提升变量声明

    笔记:Javascript 会提升变量声明 Javascript 会自动提升变量声明,但不会提升变量赋值. 如下代码, 按 F12 控制器显示的是 Hello, undefined 说明只是把 b 了 ...

  3. JavaScript 变量提升

    变量提升(Hoisting):在ES6之前,函数声明和变量声明总是被JavaScript解释器隐式地提升(hoist)到包含他们的作用域的最顶端. 注意: 1. JavaScript 仅提升声明,而不 ...

  4. JavaScript变量提升 面试题

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. JavaScript变量提升和函数声明预解析

    1.首先理解函数作用域 在JavaScript中,变量的定义并不是以代码块作为作用域的,而是以函数作用作用域的.也就是说,如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的.而如果该变量是 ...

  6. 如何有效地提升JavaScript 水平?

    lyuehh 努力学习中.. 9 人赞同 简单的介绍一下, 不一定准确, 大家一起进步... (单词大小写什么的别计较....) 学习js主要是一下几个方面, js语言本身的知识, 和浏览器相关的知识 ...

  7. 关于JavaScript变量提升的理解

    废话不说,直接上代码(这是在JavaScript面对对象编程指南上面看到的一个例子) var a=123; function f(){ alert(a); var a=1; alert(a); } f ...

  8. javascript变量提升

    提升是一种将变量和函数的声明移到函数作用域(如果不在任何函数内的话就是全局作用域)最顶部的机制. 提升影响了变量的生命周期,一个变量的生命周期包含3个阶段: 声明——创建一个新变量,例如var myV ...

  9. 最通俗易懂的javascript变量提升

    a = 'ghostwu'; var a; console.log( a ); 在我没有讲什么是变量提升,以及变量提升的规则之前, 或者你没有学习过变量提升,如果按照现有的javascript理解, ...

随机推荐

  1. sublime text3输入中文的问题.

    1.新建sublime_imfix.c文件 里面输入: /* * sublime-imfix.c * Use LD_PRELOAD to interpose some function to fix ...

  2. 关于sqlserver 2008 远程导入表数据

    /*不同服务器数据库之间的数据操作*/ --创建链接服务器 exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' ex ...

  3. FastFrameWork 快速开发框架

    前言 FastFrameWork 快速开发框架是一款基于敏捷并行开发思想和Microsoft .Net构件(插件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市场快速变化的 ...

  4. 控制器的跳转-modal与push

    一.modal与pushmodal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal push一般是上下文有关 ...

  5. react native ios 开发,基础配置笔记。

    一.获取硬件信息,使用react-native-device-info插件,配置说明: 1.首先需要安装组件:npm install react-native-device-info --save 2 ...

  6. .NET 设计模式之单例模式(一)

    1.简单解释:在创建对象时,无论创建多少次,在堆空间上只会申请一次内存空间. 2.例子(1): public class Singleton{ private static Singleton _si ...

  7. ios专题 - 异步下载加下载进度显示

    [罗国强原创] 今天被刺激了,愤概地要写下这边博文. 说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection  NSURLRequest NSMutableURLReq ...

  8. poj 2763: [JLOI2011]飞行路线(spfa分层图最短路)

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2156 Solved: 818 [Submit][Statu ...

  9. 【CF493E】【数学】Vasya and Polynomial

    Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...

  10. ajax的访问 WebService 的方法

    如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPo ...