文章插图
作者 | Alexandre Lion
译者 | 王强
【为什么我不再用Vue react什么意思】策划 | 李俊辰
转发链接:https://mp.weixin.qq.com/s/OvzPWFMw4NECgPeMVjoRsA
前言当我走进现代前端开发行业的时候,我做了一个每位开发人员都要做的决策:选择一个合适的框架 。当时正逢 jQuery 被淘汰 , 前端开发者们不再用它编写难看的、非结构化的老式 JavaScript 程序了 。前端正在走向一个时髦的,流行的,模块化的 JavaScript 框架的新时代 。所以我选择了 VueJS 。
本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享 。
下面就是我热爱(现在还是爱着)VueJs 的原因所在 。
1. 它将 HTML/CSS/JS 结构结合到一起目前来看,这是 VueJS 最吸引人的优势 。
Vue 文件对初学者非常有吸引力 。它易于理解 , 而且我们很容易将整个 HTML 模板分解为许多 Vue 文件 。我一眼就能看出来结构(模板)、行为(脚本)和外观(样式) 。
<template><div id="myComponent"> <Counter /> <span v-if="reading">Hello reader !</span></div></template><script>import Counter from "@/components/Counter";export default { name: "myComponent", components: { Counter }}</script><style>#myDiv { display: block;}</style>
2. Vuex 我开始了解状态管理系统时是从 Redux 入门的 。它很难学,而且似乎过于复杂 。但有了 Vuex,体验就太棒了 。Redux 需要 action、reducer 和 store , 而 Vuex 只有 action、mutation 和 store 。相比 mutation,reducer 的逻辑实在很难理解,因为在我学习后者时,很少见到优秀的学习资源 。在我看来,Vuex 对于新手来说更容易上手 。
3. NuxtJS老实说,受 React NextJS 启发的 NuxtJS 是我在 Vue 项目中的默认框架 。我喜欢 Nuxt 项目的约定优于配置的架构 。
页面位于 page 目录下 。组件位于 component 目录 。存储在 store 目录中 。中间件则在 middleware 目录里 , 依此类推 。
所有注入都是透明的 。所有配置都在 nuxt.config.js 里 。太棒了!它使你可以轻松构建启用 SSR 的网站和 SPA 。
然而,我又试了一下 React
在学习 Vue 之前我也尝试过 React,但后者初看上去太难学了 。随着时间推移,我更深入了解了状态管理机制和 ES6 语言规范,于是我对 React 的看法也有了变化 。
我看到有很多文章在推荐 React,甚至我周围的人都在谈论 React , 所以我尝试了一下 。结果很不错,于是我开始在项目中使用这个框架 。下面是我眼中 React 一些最明显的优势 。
1. 对 ES6 和 TypeScript 友好开发人员掌控类、接口和枚举 。所以我很容易就能理解 React 组件的工作机制,并知道该如何将其集成到应用程序中 。
你也可以在 Vue 中使用 ES6 语法,但是 React 比 Vue 设计得更好 。看一下如何在 React 中注册组件:
class MyComponent extends React.Component { render() { return(<div />) }}
对于 VueJS,你将一个对象传递给 Vue Component 函数:Vue.component({ template: `<div></div>`})
也就是说,现代 React(2020 年)不再用到 class,而是使用函数式组件(和 hooks) 。VueJs 现在提供了 TypeScript 支持 。但这种支持不像 React 那样自然,后者只需 一条命令 就能使用 CRA(Create React App)获得 TS 支持 。
在 Vue 这边 , 我们仍然需要一些带有自定义装饰器和特性的第三方包来创建一个真正完善的 TypeScript 应用程序,并且它的官方文档并未包含入门所需的所有信息 。
2. JSXJSX 并非恶魔 。有两个流派:亲 JSX 和反 JSX 。我不想卷进他们的战争 。JSX 可以是天使也可以是恶魔,具体取决于你要如何使用模板 。
从我的角度来看 , 对于开发人员来说,编写像下面这样的 JSX 更加合乎逻辑:
return ( <div> {students.map(student => <p>{student}</p>)} </div>)
比 Vue 的方式更像 HTML:<div> <p v-for="student in students">{{ student }}</p></div>
萝卜青菜各有所爱;在我个人看来,JSX 更强大,更灵活 。2. 省事的 Hooks我开始学习使用 React 组件做开发 。问题在于,要创建单个组件作为一个 React 组件类是很费事的 。
class MyComponent extends React.Component { constructor(props) { super(props) this.state = { counter: 0 } } render() { return(<div/>) }}
函数式组件让你可以使用带有 hooks 的局部状态 。它移除了很多样板和无用的构造器 。function MyComponent() { const [counter, setCounter] = useState(0) return(<div />)}
React Hooks 简化了状态和其他 React 部件(如 useEffect)的应用,现在我们用不着 componentDidMount 和 componentDidUpdate 了 。一些开发人员喜欢 OOP 方法,所以继续使用 class;而其他开发人员则偏爱函数式方法 。你可以在项目中同时使用两者!3. 社区伟大的项目背后都有很多伟大的头脑 。
根据我的经验,React 的文档、第三方工具和模块要比 Vue 多得多 。有时 , 我会为很多 Nuxt 问题而挣扎许久 , 搜索解决方案的过程中还会发现很多 Next(React)主题 。
看看 Github 仓库,数字可以说明一切 。
文章插图
文章插图
或它们各自的框架:
文章插图
文章插图
如果社区能 更快 地修复错误,那么你的代码也就会更可靠 。和你遇到相同问题的人越多,你解决问题的速度也会越快 。
Vue 3 即将到来……
Vue 3 中有很多重大更改,其中之一是 Composition API,有了它你就可以无需 Vuex 来管理状态;还有很多很棒的特性即将到来!
四月份,尤雨溪曾在直播中表示 , 目前的 Vue 3.0 已经可以投入使用,但是要求开发者自己对稳定性负责 。他建议生产项目暂时不要上,新的、小的项目可以试水 。
《聊聊昨晚尤雨溪现场针对Vue3.0 Beta版本新特性知识点汇总》
那么,我喜欢 VueJS 吗?是的 。我喜欢 React 吗?喜欢 。React 比 Vue 更好吗?那就见仁见智了 。
推荐Vue学习资料文章:《让Jenkins自动部署你的Vue项目「实践」》
《20个免费的设计资源 UI套件背景图标CSS框架》
《Deno将停止使用TypeScript,并公布五项具体理由》
《前端骨架屏都是如何生成的》
《Vue原来可以这样写开发效率杠杠的》
《用vue简单写一个音乐播放组件「附源码」》
《为什么Vue3.0不再使用defineProperty实现数据监听?》
《「干货」学会这些Vue小技巧,可以早点下班和女神约会》
《探索 Vue-Multiselect》
《细品30张脑图带你从零开始学Vue》
《Vue后台项目中遇到的技术难点以及解决方案》
《手把手教你Electron + Vue实战教程(五)》
《手把手教你Electron + Vue实战教程(四)》
《手把手教你Electron + Vue实战教程(三)》
《手把手教你Electron + Vue实战教程(二)》
《手把手教你Electron + Vue实战教程(一)》
《收集22种开源Vue模板和主题框架「干货」》
《如何写出优秀后台管理系统?11个经典模版拿去不谢「干货」》
《手把手教你实现一个Vue自定义指令懒加载》
《基于 Vue 和高德地图实现地图组件「实践」》
《一个由 Vue 作者尤雨溪开发的 web 开发工具—vite》
《是什么让我爱上了Vue.js》
《1.1万字深入细品Vue3.0源码响应式系统笔记「上」》
《1.1万字深入细品Vue3.0源码响应式系统笔记「下」》
《「实践」Vue 数据更新7 种情况汇总及延伸解决总结》
《尤大大细说Vue3 的诞生之路「译」》
《提高10倍打包速度工具Snowpack 2.0正式发布,再也不需要打包器》
《大厂Code Review总结Vue开发规范经验「值得学习」》
《Vue3 插件开发详解尝鲜版「值得收藏」》
《带你五步学会Vue SSR》
《记一次Vue3.0技术干货分享会》
《Vue 3.x 如何有惊无险地快速入门「进阶篇」》
《「干货」微信支付前后端流程整理(Vue+Node)》
《带你了解 vue-next(Vue 3.0)之 炉火纯青「实践」》
《「干货」Vue+高德地图实现页面点击绘制多边形及多边形切割拆分》
《「干货」Vue+Element前端导入导出Excel》
《「实践」Deno bytes 模块全解析》
《细品pdf.js实践解决含水印、电子签章问题「Vue篇」》
《基于vue + element的后台管理系统解决方案》
《Vue仿蘑菇街商城项目(vue+koa+mongodb)》
《基于 electron-vue 开发的音乐播放器「实践」》
《「实践」Vue项目中标配编辑器插件Vue-Quill-Editor》
《基于 Vue 技术栈的微前端方案实践》
《消息队列助你成为高薪 Node.js 工程师》
《Node.js 中的 stream 模块详解》
《「干货」Deno TCP Echo Server 是怎么运行的?》
《「干货」了不起的 Deno 实战教程》
《「干货」通俗易懂的Deno 入门教程》
《Deno 正式发布,彻底弄明白和 node 的区别》
《「实践」基于Apify+node+react/vue搭建一个有点意思的爬虫平台》
《「实践」深入对比 Vue 3.0 Composition API 和 React Hooks》
《前端网红框架的插件机制全梳理(axios、koa、redux、vuex)》
《深入Vue 必学高阶组件 HOC「进阶篇」》
《深入学习Vue的data、computed、watch来实现最精简响应式系统》
《10个实例小练习,快速入门熟练 Vue3 核心新特性(一)》
《10个实例小练习,快速入门熟练 Vue3 核心新特性(二)》
《教你部署搭建一个Vue-cli4+Webpack移动端框架「实践」》
《2020前端就业Vue框架篇「实践」》
《详解Vue3中 router 带来了哪些变化?》
《Vue项目部署及性能优化指导篇「实践」》
《Vue高性能渲染大数据Tree组件「实践」》
《尤大大细品VuePress搭建技术网站与个人博客「实践」》
《10个Vue开发技巧「实践」》
《是什么导致尤大大选择放弃Webpack?【vite 原理解析】》
《带你了解 vue-next(Vue 3.0)之 小试牛刀【实践】》
《带你了解 vue-next(Vue 3.0)之 初入茅庐【实践】》
《实践Vue 3.0做JSX(TSX)风格的组件开发》
《一篇文章教你并列比较React.js和Vue.js的语法【实践】》
《手拉手带你开启Vue3世界的鬼斧神工【实践】》
《深入浅出通过vue-cli3构建一个SSR应用程序【实践】》
《怎样为你的 Vue.js 单页应用提速》
《聊聊昨晚尤雨溪现场针对Vue3.0 Beta版本新特性知识点汇总》
《【新消息】Vue 3.0 Beta 版本发布,你还学的动么?》
《Vue真是太好了 壹万多字的Vue知识点 超详细!》
《Vue + Koa从零打造一个H5页面可视化编辑器——Quark-h5》
《深入浅出Vue3 跟着尤雨溪学 TypeScript 之 Ref 【实践】》
《手把手教你深入浅出vue-cli3升级vue-cli4的方法》
《Vue 3.0 Beta 和React 开发者分别杠上了》
《手把手教你用vue drag chart 实现一个可以拖动 / 缩放的图表组件》
《Vue3 尝鲜》
《总结Vue组件的通信》
《Vue 开源项目 TOP45》
《2020 年 , Vue 受欢迎程度是否会超过 React?》
《尤雨溪:Vue 3.0的设计原则》
《使用vue实现HTML页面生成图片》
《实现全栈收银系统(Node+Vue)(上)》
《实现全栈收银系统(Node+Vue)(下)》
《vue引入原生高德地图》
《Vue合理配置WebSocket并实现群聊》
《多年vue项目实战经验汇总》
《vue之将echart封装为组件》
《基于 Vue 的两层吸顶踩坑总结》
《Vue插件总结【前端开发必备】》
《Vue 开发必须知道的 36 个技巧【近1W字】》
《构建大型 Vue.js 项目的10条建议》
《深入理解vue中的slot与slot-scope》
《手把手教你Vue解析pdf(base64)转图片【实践】》
《使用vue+node搭建前端异常监控系统》
《推荐 8 个漂亮的 vue.js 进度条组件》
《基于Vue实现拖拽升级(九宫格拖拽)》
《手摸手 , 带你用vue撸后台 系列二(登录权限篇)》
《手摸手,带你用vue撸后台 系列三(实战篇)》
《前端框架用vue还是react?清晰对比两者差异》
《Vue组件间通信几种方式,你用哪种?【实践】》
《浅析 React / Vue 跨端渲染原理与实现》
《10个Vue开发技巧助力成为更好的工程师》
《手把手教你Vue之父子组件间通信实践讲解【props、$ref 、$emit】》
《1W字长文+多图,带你了解vue的双向数据绑定源码实现》
《深入浅出Vue3 的响应式和以前的区别到底在哪里?【实践】》
《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》
《基于Vue/VueRouter/Vuex/Axios登录路由和接口级拦截原理与实现》
《手把手教你D3.js 实现数据可视化极速上手到Vue应用》
《吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【上】》
《吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【中】》
《吃透 Vue 项目开发实践|16个方面深入前端工程化开发技巧【下】》
《Vue3.0权限管理实现流程【实践】》
《后台管理系统,前端Vue根据角色动态设置菜单栏和路由》
作者 | Alexandre Lion
译者 | 王强
策划 | 李俊辰
转发链接:https://mp.weixin.qq.com/s/OvzPWFMw4NECgPeMVjoRsA
- 父亲的脚步_跟随父亲的脚步,我不停地走,走进茂密可怕的大森...
- 父亲和女儿_为什么普遍女儿都是和爸爸比较亲?
- 父亲 吉他谱_吉他 父亲的扫弦我不会啊 求指点
- 宝宝为什么会吐奶 宝宝吐奶如何护理
- 爱耳日主题_为什么把爱耳日选定在三月三日
- 爱笑的眼睛徐若瑄_请问一首歌比如爱笑的眼睛 是徐若宣唱的为什么林俊...
- 爱的越真伤的越深_爱的越真伤的越深 歌词
- 为什么近义词 为什么近义词是什么
- 爱的小星星_求一首歌,歌名是什么我不知道。只知道声音很好听...
- 爱的勇气歌词_一首歌,歌词近似“我不想放弃爱的勇气”