tinajs / tina

:dancer: 一款轻巧的渐进式微信小程序框架
https://tina.js.org
Apache License 2.0
1.33k stars 133 forks source link

与其他同类框架相比,有什么优势或亮点? #3

Open michaelzx opened 6 years ago

michaelzx commented 6 years ago

看了文档感觉作者还是蛮用心的。 所以想了解下,与其他同类框架相比,有什么优势或亮点? 比如wepy、mpvue之类。

imyelo commented 6 years ago
  1. 与目前同类的主流框架相比,首先最明显的不同点是:Tina 的 API 并不偏向 React 或 Vue 的风格,而是在小程序自身框架 (MINA) 的基础上做扩充。这样设计的目的是希望减少开发者在上手时的学习成本 —— 因为小程序自身框架、语法、运行环境的限制非常多,在其基础上难以还原 React / Vue 的所有 API (尤其是 Vue);对于开发者而言,即便使用了 React-like / Vue-like 的框架,如果在实际开发过程中遇到了这些限制,还是不得不从上层框架和小程序官方框架的资料中寻查原因,这样一来开发者的学习成本非但没有减少,反而还增加了;另一方面,实现 MINA-like Framework 相比 React-like / Vue-like 可以减少很多不必要的开发量,从而也便减少了框架自身出 bugs 的概率(大雾

  2. 针对小程序官方框架中的各个缺陷,Tina 以 Unix philosophy 的方式逐一解决 —— do one thing and do it well·。例如:

    • @tinajs/mina-webpack 负责解决工程的问题,即借助 webpack 支持加载 npm 包、使用自定义预编译器、代码压缩等;
    • @tinajs/tina 负责弥补 MINA 主框架的缺陷,即优化 setData、支持组件间复用代码 (mixin);
    • @tinajs/tina-redux@tinajs/tinax 负责解决跨组件通讯的问题,即借助 @tinajs/tina 扩展出 Redux / Vuex-like 的全局状态管理器;
    • wxio 负责优化小程序 API,即把 { success, error, complete } 的 ajax 风格 API 转换为更现代的 Promise;
    • @tinajs/template-mina@tinajs/template-tina 负责帮助开发者快速搭建小程序项目。

    基于这样的设计哲学,开发者可以非常自由地组合使用各个部件 —— 如果你不喜欢全家桶,甚至不使用 @tinajs/tina,你也能够轻松地使用 wxio 或者 @tinajs/mina-webpack

  3. 从以上两点也可以看出,相比同类框架,Tina 更多地是在做一些本应由小程序官方框架自身来完成的事情 —— 这样的设计偏好可以使 Tina 更不容易受小程序官方框架的更新所影响。例如当小程序迭代出新的官方组件 (如 <i-like-it />) 时,使用 Tina 框架的开发者无须做任何改动便可以直接支持。其次如果小程序官方框架可以向着好的设计方向发展 —— 也就是当官方着手处理目前各项最主要的缺陷时,Unix philosophy 的 Tina 框架便是官方很好的一个参考例子。

strange-fish commented 5 years ago

感觉挺好的,对于我来说只需要单文件这个特性,其他真的没什么所谓。其他特性反而增加了bug出现的概率和降低性能。

Hezhong123 commented 5 years ago

其实,我的诉求只是单文件,语法不用偏向谁。大佬加油

GzhiYi commented 4 years ago

非常支持,准备拿来写线上项目了😄