为什么我会选择React+Next.js,而不是Vue或Angular?

时间: 2018-12-10阅读: 1770标签: react

本文的目的不是要对 reactvue 和 Angular 三者进行比较,已经有许多人对这个话题进行了比较深入的探讨。每个人都有自己的偏好。与其他库和框架相比,我更喜欢使用 react 构建用户界面。在我解释了为什么之后,也许你也会切换到 React,如果你现在还没有用它的话。

几个月前,我正在寻找一个用于 React 的样板文件生成器或是初学者工具包。我向往简单可靠的东西。经过长时间的搜索,我找到了自己想要的东西。那就是名为 Next.js框架。它在 GitHub 上获得了大量的 star 数,这在我看来是一大优势。这意味着这个项目的未来可期,而且如果需要,你可以向社区寻求帮助。在 readme 文件的顶端,有一个指向 learnnextjs.com 的链接。一个大约 1 小时的短教程,教你如何使用 Next.js。我不是说简介,而是让你可以真正地开始构建应用。真的很棒!


为什么是 Next.js? 

我发现,Next.js 比其他可选的方案要简单的多,也更有效率。

Create React App 在 GitHub 上的星数更多,而且承诺零构建配置。但是,它不像看上去那么简单。你需要学习客户端路由、页面布局等等,更不用说服务器端渲染了。

而对于 Next.js,你只要几个小时就可以用它进行开发了。越来越多的人喜欢 vue,即使它在某些方面仍然比不上 React 和 Angular。因为它简单,你可以用最少的时间完成最多的事情。在我看来,Next.js 填补了 React 和 Vue 之间的空白,使 React 一飞冲天。


Vue 似乎是一个不错的选择,Angular 呢?

这两个都是排名很靠前的框架,提供了出色的支持、性能,而且未来可期。但是,在和 Next.js 搭配使用时,我只会选择 React,而不是它俩中的一个。


Vue  

我一直将 Vue 视为入门级应用和网站的最佳选择。我以前甚至还写过几篇文章,但是,React 与 Next.js 的搭配是最省力的。有人可能会说这是孩子的游戏。

公平地讲,React 入门并没有那么难。它的学习曲线稍微有点陡峭,但你最终会得到回报。

考虑到这一点,React 就占了上风。它更成熟、更可靠,有更大的社区和 Facebook 的支持。


 Angular  

在我的印象中,Angular 一直是一个重要而成熟的框架,但是,我不会选择它。因为我不喜欢它。

虽然 TypeScript 也是一个选项,但你似乎是被迫在使用它。整个框架看上去过于复杂,而且没有明确的理由。最糟糕的是,我似乎找不到任何值得我经历这些麻烦去使用它的地方。


Next.js 的特性  

下面是 learnnextjs 上列出的一些很棒的 Next.js 特性:

  • 默认服务器端渲染;

  • 为加速页面加载,自动进行代码分割;

  • 简化客户端路由(基于页面);

  • 基于 webpack 的开发环境,支持热模块更换 (https://webpack.js.org/concepts/hot-module-replacement/)(HMR);

  • 可以通过 Express 或任何其他 Node.js HTTP 服务器实现;

  • 可以通过你自己的 Babel 和 Webpack 配置进行定制;

让我稍微解释下这些特性。

应用被分成块在服务器端渲染,加载时间非常短。甚至,对于不支持客户端渲染的搜索引擎,seo 都没有意义。

路由解决方案和 Webpack 都有了很好的支持。然后是热模块更换(HMR)可以为你节省宝贵的开发时间,因为只需上传变化的代码就可以。最后,它提升了开发者体验(DX)。


它是如何使我的工作变得更轻松的?

每当我开始创建一个新项目时,我必须建立一堆依赖关系和脚本,使一切正常运行。我不得不做一些事情,如安装 node-sas、设置监控、编写 npm 脚本等。

甚至在我真正地开始应用开发的前夕,我还得管理几十个依赖项。Next.js 使我可以跳过这些我每次都会遇到的繁琐工作。它使我可以在几分钟内开始任意一个项目。


样式

Next.js 提供了内置的 css 支持,称为 styled-jsx。我必须承认,我直到最近才使用它,因为它还无法与其他类似的解决方案相比,如 styled-components 或 JSS。但是,最近他们发布了版本 2,比第一个版本有了很大的改进,并且有很大的潜力。

以下是他们列出的一些特性:

  • 完全支持 css,没有电量方面的权衡;

  • 运行时大小仅有 3KB(从 12KB 经 gzip 压缩);

  • 选择器、动画、关键帧完全隔离;

  • 内置 CSS“浏览器引擎前缀(vendor prefixing)” ;

  • 最低限度的转译快速而高效;

  • 非服务器端渲染时的高性能运行时 CSS 注入;

  • 未来可期:与服务器端可渲染的“Shadow CSS”相当;

  • “源映射(Source maps)” 支持;

  • 支持动态样式和主题;

  • 基于插件的 CSS 预处理。

你需要知道的是,它非常快、非常灵活,最重要的是,它与 JSX 以及 React 的思想一致。你不需要设置任何东西,什么都为你准备好了。

不过,如果你仍然希望使用以前的 CSS 预处理器,你也可以使用。关于 LESS、SASS、PostCSS 和 CSS-Modules,我都有点忘了,但如果你还喜欢它们,当然就可以使用它们。

作为 styled-jsx 的替代方案,我推荐 Material-UI-Next。这是一个不怎么有名的 React 组件,实现了谷歌的 Material Design。它使用了前面提到的 JSS,适应性强且未来可期。

我现在正在一个新项目中使用它,目前为止,我很喜欢他。


Webpack

你声明的每一个导入都是针对每个页面自动打包并提供。也就是说,页面永远不会加载不必要的代码。

你甚至可以分析打包好的文件,借助延迟加载模块进一步优化加载时间。


路由  

路由简单而直观,你可以选择预取页面来获得最好的性能。你不需要为了让路由器发挥作用而安装任何依赖。

开始的时候,习惯使用 React Router 或其他类似路由器的人们可能会遇到一点困难,但它确实很简单,只是方法不同。但在我看来,这种方法非常容易掌握。

你不需要指定路由和所有与路由相关的内容,而只要将一个页面添加到 pages 目录,从而使页面 URL 可用。这非常简单,但是如果你想要更复杂的东西呢?

安装一个服务器,最好是 Express,在服务器配置中指定自定义路由。通过这种方式,你可以得到你想要的各种路由和简洁的 URL。


部署

只要不需要在运行时生成动态页面,Next.js 就允许你将应用导出成静态 html。相当不错,不是吗?

应用程序部署非常令人愉快;这不仅是因为你最终会达到目标,还因为你的实现方式。你可以使用一个命令构建整个应用程序,并使用另一个命令将其部署到全球的主机。

如果你的主机上有 ZEIT now,你就多了一个选项。如果你计划使用 Next.js,我建议你使用这个部署工具,因为它会使部署变得极其简单。


总 结 

有许多细节我没有提及。我只是大致介绍了在我看来最重要的内容。 在我发现 Next.js 之前,我从来没有像现在这样喜欢 React。把 React 和 Next 一起使用,看起来很自然。

一开始就应该是这样的。 对我来说,这是构建用户界面唯一正确的方法,它让我爱上了 React。  


来源:原文链接 
作者:TimZaložnik  


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/1530

关于创建React App的8个有趣事实

你所知道的一些事情,你可能不知道的一些事情Create React App是搭建React项目的快速方法。这样我们可以重点放在代码上,而不是构建工具上。

React中使用CSS

在组件中直接使用style:不需要组件从外部引入css文件,直接在组件中书写。在组件中引入[name].css文件:需要在当前组件开头使用import引入css文件。在组件中引入[name].scss文件:引入react内部已经支持了后缀为scss的文件,所以只需要安装node-sass即可

React 服务端渲染方案完美的解决方案

最近在开发一个服务端渲染工具,通过一篇小文大致介绍下服务端渲染,和服务端渲染的方式方法。在此文后面有两中服务端渲染方式的构思,根据你对服务端渲染的利弊权衡,你会选择哪一种服务端渲染方式呢?

React中编写CSS的姿势

在任何环境之下其实没有最佳,最有最适合,那么在React中编写CSS也是类似的。在React中有很多编写CSS的方式,在社区中讨论最多的应该是CSS In JS 和 CSS Modules

React中组件逻辑复用的那些事儿

基本每个开发者都需要考虑逻辑复用的问题,否则你的项目中将充斥着大量的重复代码。那么 React 是怎么复用组件逻辑的呢?本文将一一介绍 React 复用组件逻辑的几种方法,希望你读完之后能够有所收获。如果你对这些内容已经非常清楚,那么略过本文即可。

React常用hook的优化useEffect浅比较

先说说react原版的useEffect使用起来不便的地方,这里的effect每次更新都会执行,因为第三个参数一直是不等的,第二是在deps依赖很多的时候是真的麻烦

React ref

React ref理解:通过指定ref获得你想操作的元素,然后进行修改.是当组件挂载后和卸载后,以及ref属性本身发生变化时,回调函数就会被调用。 因为ref引用的是组件的实例

react router中页面传值的三种方法

这篇文章主要介绍React Router定义路由之后如何传值,有关React和React Router 。react router中页面传值的三种方法:props.params、query、state

深入 React 高阶组件

本文面向想要探索 HOC 模式的进阶用户,如果你是 React 的初学者则应该从官方文档开始。高阶组件(Higher Order Components)是一种很棒的模式,已被很多 React 库证实是非常有价值的。

深入理解 React useLayoutEffect 和 useEffect 的执行时机

我们先看下 React 官方文档对这两个 hook 的介绍,建立个整体认识,该 Hook 接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!