这个回答是尤大在quora上的一个回答
翻译不好,请多指教。
让我感到很烦的是,很多回答直接跳到技术比较或是用某某框架的上去了,而没有问OP(操作系统?)到底是要实现什么呢?
所以让我们先提出一个问题:通过挑选框架你到底想实现什么呢?
如果你的目的只是1的话,那你最好去关注Angular 或者是React(作者注明:不是Angular 2,至少现在是这样的)
因为这两个都是非常成熟,并且使用的都非常广泛,还能给你非常好的雇佣资历。
Angular 1 being a bit more enterprise-y while React being more startup-y.
而目标2,则更加依赖于你要做的APP的类型。它到底一个很大程序上依赖于后台渲染的应用程序,还是一个纯粹的单页web应用?
就前者而言,你可能会比较轻松的使用一些轻量级、非侵入性(?哈?)的东西,而且也不需要特殊的工具,和html交互很好(作者提示:vue)。
而对于单页web应用,那么我们需要在性能、功能、API的友好性、工具支持、生态系统成熟度等等问题上通过实际的技术比较。但这本身就是一个相当大的话题,它也可以是主观的并且高度依赖项目。
至于第3个目标,你最好从一些轻量级的东西开始入手,因为全解型框架,像Angular/Ember 会在前期引入太多的概念,而只要你将控制权交给框架的话,那你几乎会以学习框架特定APIs和约定结束,而不是学习广泛适用的技术。另一方面,比较小的库,因为他们比较小的API面,会强迫你去做出更多的控制,并了解如何把不同的块实际的结合在一起(这个实际上是帮助你在以后能去拿起较大的框架)。
所以,这里最实际的建议就是:最先学习JavaScript,然后把它学的特么的非常好。
这是最安全的下注。
有了扎实的基础,你就应该可以在一段时间里捡起Vue/React/Mithril/Riot的基础。
然后,你最好可以用每个框架做一个小应用程序,不要使用太过复杂的工具,
只是为了
1、理解这些框架到底解决了什么问题
2、明白你自己的偏好,举个例子,就是搞清楚什么API的风格会让你更有生产力
然后你就可以去尝试更大的框架,因为你现在已经做了非常充足的准备了。
这一整个过程,将会非常花时间。
但和花好几个月一头扎入一个框架里最终意识到这个并不适合你比起来,这是非常值得投资的一条途径。
另一方面,你也应该学习一些和框架无关的东西,
比如ES2015,
基本的node.js,
npm是如何工作的,
模块系统/打包工具(browserify/webpack/system.js),
不管你使用什么框架,这些工具在大型单页web应用里是不可或缺的部分。
核心的想法,就是不要把你所有的鸡蛋都放在一个篮子里。
挑选一个JS框架不只是一个 非此即彼的情况。
你也不需要永远只坚持一个。
无论别人怎么说,
如果不亲自尝试那些框架去获得第一手经验的话,对你来说很难做出最好的决定。
如果你只是使用一个,而忽略其他的话,那么你几乎是做错了。