2017 年,从零开始学前端开发,有推荐的技术栈么?

2016 年 12 月 29 日
 gevin

如题,想知道各位大神有何建议?(方向是前后台分离)

ps :我个人有 N 年后台开发经验,基于传统的 html+jquery+css 那套,也能写点前端。近几年前端爆发式的发展,而我近两年的焦点是微服务架构相关的,已经和前端技术的发展脱节,想再跟进一下前端的发展潮流却不知从何入手,求各位大神指点

12750 次点击
所在节点    程序员
80 条回复
loading
2016 年 12 月 30 日
先上 jQuery ,真的。
loading
2016 年 12 月 30 日
哦,没看帖……那就,一起 vue 吧!
fengliu222
2016 年 12 月 30 日
讲真,这种问题别上 V2EX 问。
fengliu222
2016 年 12 月 30 日
peneazy
2016 年 12 月 30 日
Vue,官网首页写得很明白,渐进式框架,刚开始学可以不用管组件什么的,因为需要一个体系的知识。我在使用 Vue 半年后,才开始写组件的。
fds
2016 年 12 月 30 日
react 新手套餐 https://github.com/barbar/vortigern
不过 redux 可以用 mobx 代替吧
yunmoxue
2016 年 12 月 30 日
感谢 @HerrDu @fengliu222 的连接, 感谢楼上各位的讨论.谢谢.
clino
2016 年 12 月 30 日
正在学国产 avalonjs2
sox
2016 年 12 月 30 日
学什么栈啊,学好 javascript 本身就好了
g67261831
2016 年 12 月 30 日
培养学习的能力和兴趣,公司用什么就学什么,工作之余学点自己感兴趣的就行了。同意楼上,学透 javascript 就够了。
yongjing
2016 年 12 月 30 日
看楼主的介绍,水平应该停留在初级前端,楼主想要跟上现今前端的行业水平,不如先了解一下前端这几年都发生了什么
lulin
2016 年 12 月 30 日
看红皮书《 JavaScript 高级程序设计》和 CSS 好好学。
lulin
2016 年 12 月 30 日
框架学 React 和 Vue ,生态学 Webpack, NodeJS, Gulp 等等,只要你忙的过来。。。都可以。
lulin
2016 年 12 月 31 日
@zhghaha 你开发大点的纯 vue 不行的,通信会蛋痛。然后 vue 2.0 升级后,去除了周边的支持,都以 plugins 的方式支持,然后 vuex 添加完整了该有的东西: states, actions, mutations, getters ,其实在 vue 1.x 的时候我记得挺简单的,因为那时候 vuex 的声明是放入 new Vue 实例声明的属性中的。然后 vue 2.0 的时候,由于 getter 的概念与 computed 的概念冲突,所以取消了数据 state 的双向 observe ,然后现在的流程就变成了下面的样子:
1. 需要再 vuex 的 store 部分声明以下四个东西:
- state 初始化数据
- actions 执行的动作,这里对应 dispatch 异步模型
- mutations 突变的动作,这里对应 commit 同步模型
- getters 数据操作的方法,其实就是对应 ng2 Services 的大部分功能

2. 在 state 的同步上,需要引入声明的 getters 才能对数据进行映射 view 层

3. vuex 对外主要有两个钩子:
- mapGetter => 返回 getters 的方法,用于 computed
- mapActions => 执行方法的行为描述

之前由于直接绑定给 actions 到当前 Vue 实例 this 上,所以出现重名的情况,这里依然避免不了。
接下来就是要执行操作,有两种方式:
- methods: { ...mapActions([]) } => 这里蛋痛的是又要重新声明一次 action type
- this.$store.dispatch or this.$store.commit => 这是本来的入口

然后上面的东西其实显得累赘和多余,对于 redux + redux-thunk 的用法, React 的用法其实更加简单
1. state 初始化数据,这个肯定需要的
2. actions 这里只是需要声明到 actions 文件
3. mutations 其实这个就没多大必要的了,你 action 过去,同步和异步都是可见的声明代码
4. getters 其实尤小右也说了,就是 function ,然后这里提取了概念,其实在 redux 中的 reduce 本身就是 function , function 之间的调用其实已经不足以是一个概念,并且如果你不注意,由于 vue 的计算属性,你需要声明到计算属性中,其实这就相当于 React 的 setState 方法,当时从声明和代码本身来说, React 的更加直接暴力,直接在组件声明一次即可。

最后 map 其实这里 React 你只需要在 Containers 容器中进行操作,样板代码。最后顺势 props 的传递过程, vue 那边有 v-bind 和普通的方式,所以其实对于 dump 类的组件,对于外部更新的接口是好声明的,并不需要 bind 的概念。

由于这次升级,其实 vue 1.x 之前的简单优势并不明显,如果你是对视图层依赖,不引入过多, React 其实更加简单,可调试性更强,每一个环节都是入口声明,然后走 function 这个流程,直接 debugger ,对于 vue computed 那层其实对于调试已经是黑盒,如果 getters 那里你声明掉了,你会发现不报错,并且不知道从哪里调试入手。

好吧,我最后只是来安利一下 React~还有就是表示 vue 2.0 早已不是简单当初宣传的 vue 1.x 形态。对于中小型项目选择来讲意义并不大,工程化的解决方案至少都应该是中大型项目,比如以前网页很简答的时候,也没人说需要 MVC(Backbone) 之类的东西, jQuery 足以,都是代码量上去了,长期迭代,才会想用一些手段来做优化和迭代平稳的事情。

综上: vue 2.0 基本上最终是 React 。就像尤小右说过,需求的雷同,导致框架趋同,所以学 React 吧,方向是一直对的。
hweining
2016 年 12 月 31 日
@Lpl TypeScript 2.0 七年才出 绝对是前端技术里少有的。。。
Miy4mori
2017 年 1 月 1 日
ts 和 ng2 才是适合符合人类思维的……
zhghaha
2017 年 1 月 10 日
@lulin 目前 vue 开发的项目确实不太大,不过 vue 的拓展性,对于插件外部插件的支持也是他的优点吧。 react 的话基本都是自己的一套生态,想要用一个外部的东西很难整合,比如 Swipe 这种东西, react 的话也有相关的别人封装好的组件 ReactSwipe(当 slide 项为两个的时候会有问题),但是难免会有很多 bug 而且很难更改,自己写一个封装的插件费时费力不是一般开发者能干的事,赶项目也没时间。。。当然原因还是基于 jsx 的原因这些插件必须得提供 jsx 语法支持的封装好的 react 组件给开发者调用。还有就是 react , react-redux , react-redux-router , react-router 动态路由这一套整合起来的项目搭建新手肯定是无法完成的,目前网上的案例都 react 得教程和案例都是简单的,没看到能把这些完整结合起来的,也没有一个真正实现 react-router 的动态路由的案例(至少我没看到)。所以真正接触到这些东西发现 react 真是太难了,还有就是基于 redux 的异步封装,貌似 react 也没有好的提供的异步库,反正我当时用的时候没有,也好久没写了,也可能是我没找到,然后就是自己写的一个异步的中间件,实现还是挺麻烦的。所以无论如何对于刚接触的人 vue 都是极好的入门,简单实用, 很多思想可以从中学习,然后再回来看 react 就会简单很多,但是 redux 的坎是过不去的,建议看看 redux 的源码,反正也不多几百行。明白 redux-thunk 的作用,了解 react 的路由是如何与 react-router 结合,还有如何通过 webpack 与 react-router 动态路由实现按需加载,为什么 webpack 那么适合 react 或者说是 jsx 。
WispZhan
2017 年 2 月 17 日
有后端经验选 Angular2 配合 TypeScript ,会更得心应手。
xiaoke0718
2017 年 2 月 27 日
@onlyice 自己自学完 CSS 和 HTML ,又去学了些天 JS 、感觉不难,突然想做个静态网页,不用 js 那种,发现特别乱,一点头绪都没有,感觉就像前面一双筷子,不知道怎么用, 2 天( 1 天 10 个小时)模仿了个百度和腾讯静态的,还各种问题,排版什么的我感觉也明白了,写网页就是写不好,初学者都这样么,还是我比较笨,还是方法不对,求指点,哎
onlyice
2017 年 2 月 27 日
@xiaoke0718 我觉得正常,本来前端的知识就多且杂,我一开始做 Web 也做得很差,现在依然不会

我觉得新手最大的矛盾还是,如果想快速上手,做点东西给自己看给自己信心,那么往往会学得不够系统,导致后面容易卡壳;如果想一开始就学得系统,又容易很枯燥乏味。。你需要自己把握好这个度,知道哪些资源是比较系统的,同时在学习过程中融合进实践

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/330948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX