怎样选择前端框架
怎样选择适合自己的前端框架,并在高产但良莠不齐的前端社区中保持理性
翻译自:http://fse.guru/
介绍
Hello,开发朋友们!
下面你将看到一些比较主观的工具和框架。
但不要害怕!
你可以选择任何你所熟悉的,或者忽略他们直接用你自己喜欢的就好了。
本文希望帮助你了解前端社区中海量的工具。
当然,这些只是一些可选的列表,当你需要做出选择的时候帮助你抉择。
我自己使用它吗?
是的,当我需要开始项目的时候,我用它来作为提醒。
同时,每当有人问“我该使用什么框架呢?”的时候,我就会把这篇文章给他看。
因为,正如你明白的,事情没有绝对的对与错,但是有一些优质的框架能够帮助做出我们更好的选择。
另外,我也会不时的更新本文,因为有时候当我学习更多后也会改变当初的想法。
我应该怎样开始?
如果你的项目不是很小,你应该需要下面几件事:
-
项目模块化 我个人比较喜欢 Component-based architecture,因为他适用于 various-frameworks
同时,考虑一些其他的例子,比如 BOT 、 Elm Architecture 或者 re-frame 或者 CycleJS
-
模块加载器(RequireJS,Browserify, Webpack, ComponentJS, SystemJS)
这些东西能够帮助我们保持Javascript(或者components)彼此独立和可维护。
-
我个人一直比较喜欢 npm ,似乎他是javascript和nodejs真正的标准。另外我会考虑bower来做补足,因为他是一个很好的下载静态资源的工具,但它在管理组件和依赖又不如npm强大。
-
自动部署/编译/构建流水线(grunt/gulp/brunch/broccoli)
因为,如果一直做重复的事情的话生命是很短暂的。
-
CSS预处理(jss/stylus/sass/css-modules)和 postprocessors(css0, autoprefixer, postcss)
这些工具使css更美好,去除了一些浏览器兼容的问题。是的,我是从2015知道这些的,但是不论如何,它在过去确实是痛点。
-
构建框架(Bootstrap, Zurb Foundation, Elemental UI, Material Lite)
这些框架让很多web开发者合作,它们会帮助你处理基本的布局和样式。
尽管,你可以考虑构建你自己的解决方案,如果你感觉构建很厉害或者希望成为前端专家,或者你需要为你的公司构建基本的视觉元素。
如果是这样的话,建议你尽快使用方法论(BEM, OOCSS),它们可以帮助你节约时间。
我个人比较喜欢 BEM 命名方式和基本工作流,你能够从 styleguide for Brainly.com找到一些可以帮助你的灵感。
如果你不构建基本的组成,建议看一看 HTML5 Boilerplate
-
测试工具(jasmine, karma, mocha, tape, itern)
任何人都需要测试,没有例外的。
-
代码质量监控工具(eslint, husky, editorconfig)
-
可以获取帮助的社区(chats, IRC, meetups, twitter)
好了,下一步呢?
在选择你的工具前有一些值得思考的问题需要解决。
准备好了吗?
-
我需要和其他人合作吗?他们是谁?他们想要什么?
这个问题会帮助你选择语言和工作流,这对你和你的伙伴都有帮助。
-
我最关注什么?质量,开发速度,还是可维护性?
这样你可以决定是否试验一些新工具,以及是否能承担失败的风险。
-
是否需要开放给第三方?
面向的团队不同可能会限制我们语言的选择。
-
我是否在处理核心的项目
如果你处理核心项目,请最好选择高稳定性的语言和框架,这更安全,让你睡得更好。
-
是一个可交互的app还是基本的文档页面。
结果很可能是你仅仅需要基本的HTML +CSS + tools,或者静态网站生成器或者CMS。
-
这是一个单一的项目还是其他项目的相关项目?
即使你有一系列项目,你也应该用一些组件和样式引导,这些有不错的文档。
直接减少代码重用,保持一致性。
另外,考虑SEO,和服务端渲染。
语言列表
当你回答完上面这些问题后,就可以和你的队友聊聊,然后选择一个语言了。
因为这里有很多的东西,而不是糟糕的Javascript,你可以选择
-
是否有js开发团队
这会让你的生活简单一些。
-
你是否偏爱typed语言?开发typed是否可以?
考虑 typescript
-
函数式编程是否接受?
-
你是否尝试过函数式编程,想要更好的东西?
试试 elm ,很酷的!
-
你是否能够全栈?
试试 clojurescript,很酷很酷的
-
你喜欢沙拉吗?
试试scalaJS
-
你知道Haskell吗?
试试 purescript,真的很酷
-
想要更多疯狂的?
这里有一个可以编译成javascript的语言列表,选一个然后享受吧。
框架列表
-
你仅仅需要基本的可运行的app?
没有时间做更复杂的工作?
-
你是否经常需要快速的原型开发?
是否能在未来修复一些问题?
-
你是尝试前端开发的后端?
-
你是否需要很快的进行开发和构建,但是同时会丢失一些特点?
-
同样的技术选型,怎样从中型到大型?
把 marionette/chaplin添加到你的backbone里面去,另外可以考虑 Reackjs
-
你是否有一些时间来实验,同时得到很大的性能提升?
-
你是否有不错的前端实验精神,对函数式编程熟悉?
试试 ReactJS+Redux+ImmutableJS+
-
更多函数式编程技巧?或者偏好交互性强的应用?
使用 reactive streams(bacon, rxJS) 或者试试 Cycle.js(实验性)
注意1: add streams any会是很好的选择,可以推荐别人使用。
注意2: 请不要拒绝使用 FRP的reactive streams
-
你想要使用严格的验证和通用处理方式?
你的应用会越来越大?
你计划扩充你的团队?
你有时间学习新东西?
建议花时间学习 EmberJS,他将会是很好的投资!
-
你是否需要“类桌面应用”?
你的应用有表格,图例,或者其他分析功能?你在构建企业应用?
试试 ExtJS
-
你们是一个为其他开发者提供服务的工作室?
你最好有一个不错的工具集,另外,同事之间最好有一些公共用例。
-
你是一个为他人提供工具的自由开发者?
适应他们的选择。
尝试angular,这将不会造成多大麻烦,让其他人得到他们想要的。
注意:如果别人付费,请不要改变客户的需求
-
你正在构建一个有吸引力的产品,它将会很多人使用?
有了明确的需求后我们就从上面的列表中选择一个合适的框架。
-
关于开发什么样的应用你有明确的需求(比如10屏的移动应用)
花两周时间来试验特定的需求(ionic, famous, Sencha Touch)
怎样开始编码?
- 花一些时间阅读你所选择框架或者工具的文档。
- 在社区里面询问一些经验开发者怎样算是优秀项目的开端。
- 准备所有的工具。
- 极客精神。但是我建议更加工程化一点。
- ...
- 成功。
不知道怎么用我介绍的一些不常见框架?
看看 TodoMVC Examples,找到你选择的框架。
但是记住,这些项目只是示例,大多数情况下他们不适合大中型项目。
我不想做决定,告诉我怎么办?
好,好,冷静下来。
如果你不想做决定,你可以选择 EmberJS。或者你胆大,可以尝试 ReactJS + Redux + ES6 + webpack + npm + jss + autoprefixer + eslint + Elemental UI + karma,读这篇文章。
我看到了很多关于ReactJS的讨论,为什么?
这是web开发的未来。
这里有一片很好的文章,来解释这个现象。
同时,很多优秀的开发者在使用它,你可以找出一些好的项目,这一定很棒,我保证!
如果不是,你可以任何时候回到这篇文章,在评论里面留下你的话。
如果你对怎样成为一名前端开发师感兴趣,可以看看这里
原创文章,欢迎转载。转载请注明:转载自Fs21 ' s Home,谢谢!
原文链接地址:怎样选择前端框架