使用 Nuxt 加强 Vue 的能力

Vue.js

Vue 自 2014 年以来一直都是最流行的 JavaScript 框架。Vue 的设计目标之一就是便于与其他类库和现存项目搭配使用。Vue 完全可以为复杂的单页应用(SPA)提供强大的支持。

不过,你是否在构建 Vue 应用时对 Vue 的快速上手感到困惑呢?换个说法,你曾遇到过 Vue SPA 的 SEO 相关问题么?

Nuxt

那就是 Nuxt 排上用场的时候了!!Nuxt 将让你对自己对 Vue 的掌握更加自信。

为何选择 Nuxt ?

Nuxt 提供了一个强大的模块化的体系结果。这将简化并加速研发过程。而且你也并不需要考虑路由、组件到底应该放哪儿。入门项目应该足够让你上手开发了。入门项目结构如下所示:

Vue.js

入门项目

资源

assets 目录是存放无需编译资源的地方,就像样式,图片,或字体。

组件

components 目录是存放所有页面或布局组件的地方。Nuxt 提供了 自动导入功能,所以无需在页面或布局中导入通用组件。

布局

layouts 目录存放所有无需动态变化的布局。举个栗子,页眉,页脚以及侧边栏将会在每个页面中按照相同的形式展示,因此称之为 布局

中间件

middleware 目录存放在页面或布局渲染完成之前定义好的所有函数。像检查权限,用户代理等功能可以放在这里。

页面

pages 目录是存放视图和路由的地方。Nuxt 会读取其中所有的 .vue 文件,并为其自动创建路由配置。

插件

plugins 目录是存放 Vue 插件 的地方,插件可以注入函数或常量。

静态资源

static 目录是存放不易更改的文件的地方。所有在里边的文件将由 Nuxt 提供服务,并可以通过项目根目录 URL 进行访问。在示例中,robots.txt 将可以通过 host/robots.txt 访问到。

存储

store 目录是存放 Vuex 状态存储 文件的地方。

nuxt.config

Nuxt 默认配置足以覆盖大多数场景。

第二个「原因」,是Nuxt使SEO(Search Engine Optimization 搜索引擎优化)更加容易。Nuxt使用服务器端渲染(SSR)。SSR是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记「混合」为客户端上完全交互的应用程序。SSR在应用程序中生成预定义的meta标签可以被智能搜索引擎捕捉到。Nuxt允许您选择使用Vue实例中的 head 方法为每个页面预先定义meta标签。

<script>
export default {
  head: {
    title: 'Home page',
    meta: [
      {
        hid: 'description',
        name: 'description',
        content: 'Home page description'
      }
    ]
  }
}
</script>

在每个页面和布局中,如Vue组件,您都必须定义Vue实例,但区别在于 head 方法可用于在

部分设置HTML元素。在 home.vue 上面,您可以使用您想要的属性设置标题标签和meta标签。

第三个「原因」是我上面在 pages 目录「智能路由」中所述。在Vue中,您必须逐一定义自己的路由。在Nuxt中,您只需在 pages 目录中放置 .vue 文件,然后Nuxt即可为您做好准备工作。

Vue.js

Vue.js

Nuxt自动创建路由

正如您所看到的,通过在页面内设置 products 目录,让您可以在 products 目录的 index.vue 内部访问一条 /products 路由。对于动态路由,我们只需要以 _ 开始命名 .vue 文件。在上面的例子中, _slug.vue 会让您在该路由中接收动态参数(slug)。当我们访问 /products/something-good/products/something-better 会让Nuxt读取 _slug.vue 时,将 something goodsomething better 作为参数来执行。

总结

我已使用 Nuxt 一年多了,现在已经喜欢上了它。它是如此简单且入门项目就已足够开发者上手开发。如果你只需要 SPA 并且不需要复杂的 SEO 支持,那么使用 Vue 就够了。不过如果你想构建一些复杂的应用,则可以使用 Nuxt 来增强 Vue 应用的能力。您还可以在如下链接中查看更多有关 Nuxt 的信息:

nuxtjs.org/

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://medium.com/@kevinasurjadi/power-...

译文地址:https://learnku.com/vuejs/t/52665

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 1

之前其实没遇到需要使用 Nuxt 的场景,再翻译一个原文下的吐槽评论以便更好的了解这个技术:

我已使用 NUXT 一年多了,然后我将大多数业务迁回了 VUE。Nuxt 曾有很多错误,就像开箱即用的认证,webpack 的问题,以及难以调试的魔术方法,研究这些问题相比不用 Nuxt 全自己实现会耗费更多的时间。

I’ve been using NUXT for a year and i switched most projects back to VUE only. Nuxt has anf has had many bugs, like out of the box authentication, webpack issues, and magic going on that is hard to debug, that researching was more time consuming than doing stuff on myself without nuxt.

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!