打算自学前端,求资深前端工程师给本小白指明一条道路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
changwei
V2EX    程序员

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

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

    各位晚上好,我是武汉一名大二学生(按照知乎的标准,我的学校在武汉本地算是最低级的专 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     Solana     3118 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 12:16 PVG 20:16 LAX 04:16 JFK 07:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86