V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changwei
V2EX  ›  程序员

打算自学前端,求资深前端工程师给本小白指明一条道路

  •  
  •   changwei ·
    cw1997 · 2017-01-07 21:29:52 +08:00 · 5179 次点击
    这是一个创建于 2875 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位晚上好,我是武汉一名大二学生(按照知乎的标准,我的学校在武汉本地算是最低级的专 A 吧),学的软件技术专业。

    之前上大学之前自学过一些服务端语言,比如 php , asp (最原始的用 vbscript 写的那个 asp ,不是现在的 asp.net )等语言,然后平时做一些前端页面都是用的 bootstrap 和 Amaze UI 。

    现在学校要做结业项目(学校教的 JAVA ),然后自己也想业余做一些项目充实 github ,想尝试一下前后端分离开发,打算系统的自学一下前端,学了几天 vue.js 发现自己对于 ECMAScript 以及 JavaScript 基础都不是很牢(因为之前学 html , css , JavaScript,jquery 看的书都是那种地摊上很简单的入门到精通系列,只讲最基础的 JavaScript 语法, dom , bom 就完了,什么闭包,原型链,面向对象之类的都没提到过,这类烂书大家几年前也都看过吧),打算从头再学一学前端。

    现在学 vue.js ,涉及到单.vue 组件开发的时候就要用到 webpack ,发现涉及到了一些 node.js 的知识,比如说 npm 以及一些插件的配置等等,感觉学前端的话 JavaScript 是一定要学好的,目前网上自己查了查发现 JavaScript 高级程序设计这本书口碑很好,请问大家觉得怎么样呢?然后学完之后 node.js 该怎么学?有什么书推荐吗?网上推荐深入浅出 node.js 的比较多,各位有什么看法(我看过一些视频,但是比较喜欢实体书,当手册查查也好,看着也舒服), ECMAScript6 我打算看看阮一峰的 ECMAScript 6 入门,后面 vue.js 应该会比较好学一点吧。

    各位看看对于我的学习路线有什么需要改进的地方吗?求指点迷津,谢谢!

    整理好书单寒假回家就下单了!!!

    21 条回复    2017-01-17 21:24:14 +08:00
    zbinlin
        1
    zbinlin  
       2017-01-07 21:34:17 +08:00
    现在是大二,我觉得先不用急着学 vue 和 node.js ,可以先把 javascript 的基础打实再说,顺便也把 HTML 和 CSS 也学下。
    murmur
        2
    murmur  
       2017-01-07 21:38:49 +08:00
    按 0 基础么?个人推荐还是国内的 w3school ,虽然很多人批判,但是你要知道
    ( 1 )按照 w3s 能很快做出东西来,这是坠重要的,基础看再多没有产出很容易有挫败感
    ( 2 )他写的不全,有的过时,但是在浏览器上跑着没错就行,而且旧的东西又不是不兼容
    等做出点东西,然后开始用 bootstrap ,这个框架是很好的,简单,不需要多少 js 代码,网上有大把主题和模板可以用,试着用 bs 做点东西,就知道各个标签是干嘛用的了,这个时候你 js 和 css 包括 html 应该已经有个比较完整的认识了,再回来补基础
    就跟没人推荐新人直接看 thinking in java 一样,哪里有 0 基础就直接学 ecma6 的
    ininit
        3
    ininit  
       2017-01-07 21:39:16 +08:00 via Android
    本科大三🐶都学的不及你的一半,唉~
    changwei
        4
    changwei  
    OP
       2017-01-07 21:53:35 +08:00
    @zbinlin 我一个是自己本身很热爱开发,对这些新奇的东西都很好奇,学校专业学 JAVA 进度很慢,学 JSP 一个月了还没讲到过滤器。所以业余想把前端学好(做个全栈工程师也很酷吧), javscript 基础打牢到比较专业的程度的话一般要多久时间呢?


    @murmur 也不算是 0 基础吧,我对于基本语法, dom 和 bom 的 api 还是懂得。 w3s 我看过,他更多是作为手册来用,不适合用来精通吧。 bootstrap 我有学过,用的也算很熟练,但是现在想先把 js 搞好,没空研究 css , sass 这些,所以这框架我觉得我学到这种程度就够了。如果深入的话你觉得我 sass 该怎么学呢?(比如说怎么把一个页面中相似的公共样式抽象出来,作为一个模块,而不是整个页面里面一个标签就写一个样式)


    @ininit 我一直很好奇,现在很多本科学校学的编程都很基础,对于 js 学得都很基础,更别说各种新奇的 MVC , MVVM 框架了,但是外面企业要求都是各种精通 angularjs , vue.js , sass , less , nodejs 等等,请问这些企业都是哪里招到的人?
    murmur
        5
    murmur  
       2017-01-07 21:58:34 +08:00   ❤️ 3
    接着回复,为什么我那么推荐先学 bootstrap ,因为这东西很大一个好处可以让你学习语义化和规范化,经常看面试说语义化,那语义化到底是什么?很多人 html 基础不牢固,写出来除了 div 就是 div , table 连区分 tbody 和 thead 都不会,也不知道 ul 、 li ,甚至连 a 、 span 这些都用不好,更别说 h5 新增的标签。标签乱用, css 自然写的也西撇,选择器什么也是各种层级嵌套,毫无复用度而言。

    所以打好基本功再学会飞,至于 es6 我感觉你知道就可以,在 ie11 没被淘汰之前(看这样 win7 想淘汰掉很难,因为 win7 的架构实在太屌了,估计比 xp 折腾的更久),浏览器上跑的还是 es5 甚至 es3 的代码, chrome 屌不,再屌你 promise 不挂库能用?所以至少五年内能熟练编写、调试 es5 、 es3 都是基本功(说 codemap 的我就笑笑,真正挂 codemap 你就知道到处起飞这里断点不能打那里断点停不住是个什么感觉了),至于直接上 node 后端的,我想看看互联网大潮退去之后还能活下来几家。

    vue 好、 react 好,可是页面部分不还是你自己来写? js 学的再牢固,让你实现个简单的布局不会、居中不会、动态适配个宽度高度不会,那你说 es6 学再好有什么用?逼站事件告诉我们,人家做页面被称为切图仔的比你做组件的绩效要高,我要是老板我也这样,有大把的轮子不用干嘛花钱造新的,何况这轮子都是新的。
    murmur
        6
    murmur  
       2017-01-07 22:02:26 +08:00
    刚看到回复,那你好厉害哦,大二熟练使用 bootstrap ,你可以测试一下你的基本功,自己写一个基本的组件,比如菜单、选项卡、对话框这些,如果能写出来代表基础没啥问题了,试试加点难度,比如说对话框不用插件自己实现拖动等

    如果这都没问题,真可以回去看犀牛书这些了,或者你要开始学 vue 估计也就是一两个月的事, vue 本来以为很灵活的东西这东西最后看不上 vuex 也得自己实现一个 vuex

    所以我现在开始推 react 了, react 把 redux 扔了一样用,以前学过的东西都没事

    楼主前途无量啊,我大二的时候还在沉迷魔兽台服呢
    hyacinty
        7
    hyacinty  
       2017-01-07 22:02:31 +08:00
    我觉得还是看书,打好基础,基础最重要。

    Javascript : JavaScript 高级程序设计、 JavaScript 语言精粹、你不知道的 JavaScript 。
    CSS : css 权威指南、精通 css 高级 web 解决方案、 css 揭秘。
    至少看一遍吧。
    dantegg
        8
    dantegg  
       2017-01-07 22:56:12 +08:00
    大学二年级难道不应该先学好算法,数据结构,操作系统么(逃~
    anubiskong
        9
    anubiskong  
       2017-01-07 23:14:48 +08:00
    前端学起来其实也没什么, 就是 MVC 除 angular 以外的学一个, 最好选轻型的. 如果只想学怎么用, 那么就做个复杂点的网站, 如果想学架构, 就在会用的基础上读读几个轻型 MVC 的源码, 理解活用就行了.
    前面说的是 JS 前端, css 和 html 啥的没什么好说的, 写多了自然会熟. css 有个兼容性的问题, 但是不碰正式项目磨练不出来, 这个遇到什么解决什么吧
    nodejs 没什么学习的好办法, 那上面的技术和前端技术一样更新非常快, 现在搜出来的博客文章还有书上的内容很多都过期了, 所以不如直接看官网文档了解一下所有的功能, 然后掌握几个著名的框架, 最主要的是多做项目, 实践出真知嘛
    数据库方面, redis 和 mango
    另外好好掌握基本的 linux 服务器搭建和维护
    murmur
        10
    murmur  
       2017-01-08 00:34:24 +08:00
    @dantegg 我也感觉,大一的微积分、线性代数和大二上的概率论如果学不好,尤其是概率,以后想转什么机器学习门都没有
    牛逼的人可以看两眼论文就把公式推出来,我这种 2b 的别人给我讲我都听不懂
    q397064399
        11
    q397064399  
       2017-01-08 07:48:49 +08:00
    @dantegg
    @murmur

    机器学习没那么神,国内单就业需求而言,不那么理想

    另外专科之类的计算机专业的不会教数据结构与算法,
    第一,这玩意要如果要配合讲算法复杂度分析,
    需要点数学功底,但是很多人上大学后连等比数列求和都忘记了
    (实际上我是靠背和翻书的)
    第二,单纯的讲算法 数据结构的实践开发应用,自学的书籍一大把,首推 (算法第四版)
    第三,实际开发中,老板不会给你时间去实现一个 quicksort 或者 优先队列,把框架学好,
    使用更高层次的抽象去实现业务中需要的数据结构,
    像 Java 有 Collection 框架 C++有 STL 容器 boost 中有大量的算法库,
    C 有 Glibc (不过讲道理,很少看到有人用,国内连 glibc 容器翻译的资料都没有)


    实际上操作系统这门课,我觉得大部分搞开发的,没必要一头扎进去,
    需要的时候翻开 CSAPP 找下索引,配合 Google 能解决大部分底层性能问题

    另外现在有几个做业务类应用开发的,敢说自己在最底层的抽象上搞开发的?
    很多写 Java 的,写了 7-8 年,连线程是怎么一回事都不知道,更有甚者连 引用跟值类型都不分,
    当然你不能写了几年 C++连内存堆栈 对象内存模型都搞不清楚,这种 C++程序员肯定是没人敢一起工作的

    一言以蔽之,做应用,就暂时忘记底层吧,专心做好系统设计 后期做好优化 就差不多了
    wly19960911
        12
    wly19960911  
       2017-01-08 11:00:24 +08:00 via Android
    大二和我大三学的一样。寒假准备啃掉 es6 和 vue.js 看看,

    关于面向对象我感觉你还是看 Java 吧,我试着学了一个月的安卓做了个简单抓取页面并且展示出来的 demo 才感觉到了一点面向对象的好处,共勉吧
    hrong
        13
    hrong  
       2017-01-08 17:07:47 +08:00 via Android
    不理解楼主为什么会去学习 asp 这样过时的东西?
    jiyinyiyong
        14
    jiyinyiyong  
       2017-01-08 20:55:43 +08:00
    不代表公司观点, 我在饿了么的感觉是对开发业务本身会更看重, 比如 Vue 的话, 做页面, 建构工具公司有现成的, UI 组件公司有现成的, 需要开发的主要是路由, API, 数据抓取, 以及各种场景的调试, 这会需要比较多的经验和相关领域的理解. 然后对于编译工具本身, 对组件的底层实现和优化, 对 Node.js 开发如果有经验, 那么你还能做些其他的东西.

    ES6 的话会常用到, 但工作当中也不会抠细节, 还是根据团队规范. 算法在前端遇到比较少, 当然算法方面的意识还是需要有, 只是说在 js 当中很难直接用到. 面相对象, 闭包, 原型链, 之类的, 某种程度算是敲门砖吧, 业务开发当中更多是把 js 当做 DSL, Vue 有 Vue 的用法, React 有 React 的用法, js 语言特性太杂, 没人开心全都去用.

    能找机会参与写写实际的项目积攒点经验用处会更大一些.
    fecho
        15
    fecho  
       2017-01-12 09:33:02 +08:00
    肠胃 = =
    changwei
        16
    changwei  
    OP
       2017-01-14 21:40:05 +08:00
    @hrong 因为我学的第一门编程语言是 VB6.0 ,然后 asp 的服务端语言推荐使用的就是 vbscript ,所以直接拿来用了
    @wly19960911 我有学过 php ,也阅读过一些框架的源代码,对面向对象有所了解,但是对于 js 里面的那些面向对象的 api 不是很了解,包括闭包,作用域这些我在写 php 的时候完全没有用到过这些概念。都是顺手写下来一气呵成,也可能是我写的项目都比较小,不是很规范吧。
    @jiyinyiyong 我看过一些人放出的前端工程师面试题,发现问到了很多 ECMAScript 的一些语法细节,我还是想系统的学一学。况且我也没有 nodejs 基础,涉及到 SSR 服务端渲染等功能我都懵逼了。。。
    @fecho 啊?你是?
    @anubiskong 我看见知乎重构用的是 react ,但是听说 react 需要多学一个 JSX 语法对吗?我希望先学一个简单的可以直接用的,能学的东西越少越好,毕竟我还半年就要去实习了。
    @dantegg 这些我们专科基本上不学,都是学一学怎么使用 IDE 啊怎么使用各种现成的轮子。其实专科学的东西真的很浅,不课外自学的话,去外包公司我觉得现在的大专生技术都很成问题。
    anubiskong
        17
    anubiskong  
       2017-01-14 21:46:28 +08:00
    @changwei
    别学大公司的工作方式, 他们是根据业务来的
    我说的基本上就是最短学习路线.
    wly19960911
        18
    wly19960911  
       2017-01-15 00:50:04 +08:00 via Android
    @changwei 面向对象我感觉更讲究思路吧,目前我体会到最大的好处就是封装,每个实例化对象就是一个模块,互相间不干扰,同时面向对象设计也是设计模板,稍加修改在任何相同场景都能使用比如 Ajax ,减少了重复写代码的量又美观,有兴趣的话你去看一下对象( object )的数据结构吧

    就目前来说我感觉 node.js 还是学完了 es6 再说吧,里面带有 es6 的语法,关于作用域的话 es6 有说,还有就是阮一峰的 es6 教程关于 babel 可以不看做个了解,因为配置他说的太多太多了,一下我差点转不过来。
    dantegg
        19
    dantegg  
       2017-01-15 09:44:54 +08:00
    @changwei 哈哈,那至少学好英语
    jiyinyiyong
        20
    jiyinyiyong  
       2017-01-15 12:04:07 +08:00
    @changwei 嗯, 服务端渲染这种原理性的东西真是铺得越来越广了, 我当时社区一点点刷出来这个技术, 一边跟着看. 没想到对你们来说反而是一瞬间要学大量的东西, 是挺不一样.
    fecho
        21
    fecho  
       2017-01-17 21:24:14 +08:00
    哈哈 你的崇拜者,贴吧知乎都知道你的。你可是大神 = =
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5259 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:06 · PVG 15:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.