Nuxt.js--》解锁 Nuxt 项目的潜力:从配置开始,迈向成功

news2024/11/25 11:35:34

        博主今天开设Nuxt.js专栏,带您深入探索 Nuxt.js 的精髓,学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识,还是希望掌握进阶技巧,本专栏都将满足您的需求。接下来让我们一起踏上 Nuxt.js 的旅程,开启一段令人兴奋的前端开发之旅!

需要了解的前置知识

搜索引擎优化(SEO):是一种通过优化网站和内容,以提高在搜索引擎中的排名和可见性的过程。它是一种有助于网站获得更多有机(非付费)流量的策略和技术。但是采用vue.js开发的应用系统对SEO并不友好。

客户端渲染(CSR):客户端渲染是一种 Web 应用程序的渲染方式,其中页面的内容和结构主要由客户端浏览器在运行时生成和呈现,而不是在服务器端生成。在客户端渲染中,服务器主要负责提供数据和基本的 HTML、CSS 和 JavaScript 文件,然后将这些文件发送给客户端浏览器。浏览器接收到这些文件后,会解析 HTML 和 CSS,并执行 JavaScript 代码来生成动态内容和交互。

服务器渲染(SSR):服务器渲染是一种 Web 应用程序的渲染方式,其中页面的内容和结构主要在服务器端生成,然后发送给客户端浏览器进行显示。在服务器渲染中,服务器接收到客户端的请求后,会根据请求的 URL 和参数等信息,生成相应的 HTML、CSS 和 JavaScript 文件,并将这些文件作为响应返回给客户端浏览器。浏览器接收到文件后,直接显示其中的内容,无需再执行额外的操作。

客户端渲染与服务器渲染的区别:在选择服务器渲染还是客户端渲染时需要综合考虑项目需求、技术复杂性和性能要求等因素。一般来说,对于需要快速加载、对 SEO 有较高要求的网站,服务器渲染可能更适合;而对于需要复杂交互和实时更新的应用,客户端渲染可能更具优势。

Vue.js如何实现SSR:vue.js通用应用框架Nuxt,其提供了平滑的开箱即用的体验,建立在同等的vue.js技术栈之上,但抽象出很多模板,并提供了一些额外的功能,例如静态站点生成。通过NUXT可以根据约定的规则,快速的实现Vue SSR。

目录

nuxt基础配置基础讲解

nuxt.config.js文件配置讲解

添加element-ui框架        

局部head配置

nuxt配置modules


nuxt基础配置基础讲解

配置主机和端口号:在nuxt项目中如果想更改主机和端口号很简单,只需在 package.json 文件中新增一个config节点,为了便于区分我将主机和端口号随便设置(修改配置文件需要重启项目):

"config": {
  "nuxt": {
    "host": "127.0.0.2",
    "port": "1818"
  }
},

终端执行 npm run dev 运行项目,得到的结果如下,可见我们配置的主机和端口号生效了:

当然也可以采用另一种方式,在nuxt.config.js 文件中新增server选项,该选项用于配置nuxt应用程序的连接服务器连接变量,默认的服务器连接如下:

如果想运行项目自动打开浏览器,只需在 dev 命令后面加上 -- open 即可运行项目自动打开浏览器

别名: 在nuxt中,~或@ 别名用于关联 srcDri属性,~~或@@别名则用于关联 rootDir属性,例如如果打算将图像链接至/static/目录下,则可以使用 ~ 别名。

<template>
  <img src="~/static/img1.jpg" />
</template>

nuxt.config.js文件配置讲解

当我们使用nuxt构建工具时,默认状态下将得到nuxt.config.js文件,该文件是设置整个项目的全局文件,当打开文件时,应看到如下选项(或属性):

export default {
  mode: 'universal',
  target: 'server', 
  head: {...},
  css: [],
  plugins: [],
  components: true,
  buildModules: [],
  modules: [],
  build: {},
  // 未出现的重要选项,根据项目需要自己添加配置
  env: {},
  loading: {},
  pageTransition: {},
  layoutTransition: {},
}

现在搭建的项目,除了mode、target(这两个现在删掉了)、head、components,其他大多数内容为空,我们可以通过这些自定义nuxt来满足某些特定的项目,接下来将对这些选项及其应用方式分别讲解:

mode选项:用于定义应用程序的“本质”,即通用应用程序或SPA,该选项默认值为universal,当采用nuxt开发SPA时,将该选项值修改为spa即可。现如今该选项删除,后期文章会讨论通用模式。

target选项:用于设置应用程序的部署目标,即作为服务器端渲染应用程序或静态生成应用程序进行部署,对于服务器端渲染部署,target默认值为server,现如今该选项删除,后期会讲解。

head选项:用于定义应用程序的 <head> 块中所有默认元标签,我们可以进行多项自定义配置,比如添加项目所需的JavaScript和CSS库:

export default {
  head: {
    title: 'npx_nuxt',
    htmlAttrs: {...},
    meta: [
        //...
    ],
    script: [
      { src: 'https://cdnjs.lounflare.com../../jquery.min.js' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
      { rel: 'stylesheet', href: 'https://cdn/.../foundation.min.css' }
    ]
  }
}

css选项:用于添加全局css文件,这些文件可以是 .css、.less或.scss文件,也可以是直接从项目的node.js/node_modules/目录中加载的模块和库,方式如下:

css: [
  'jquery-/jquery-ul-min.css',
  '@/sataic/less/styles.less',
  '~static/css/normalze.css',
],

plugins选项:用于添加JavaScript插件,这些插件在Vue根实例之前进行运行,考察代码如下:

export default {
    plugins: ['~/plugins/vue-notifications']
}

components选项:用于设置/components目录下的组件是否应自动进行导入,如果将components选项设置为true,那么我们无须通过手动方式导入组件,这一点很人性化,也没必要设置false。

buildModules选项:用于注册已构建的模块,这些模块仅在应用程序的开发和构建期使用。

modules选项:用于向项目中添加nuxt模块,考察以下代码:

export default {
    modules:[
        '@nuxtjs/axios',
        '~/modules/example.js'
    ]
}

此外,我们还可以利用modules选项直接创建内联模块,如下:

export default {
    modules:[
        function () {
            //...
        }
    ]
}

build选项:用于自定义webpack配置,比如我们想在项目中以全局方式安装jQuery,且无需使用import语句,可通过webpack的ProvidePlugin()函数,即可实现jQuery的自动加载。

import webpack from 'webpack'
export default {
    build:{
        plugins:[
            new webpack.ProvidePlugin({
                $: "jquery"
            })
        ]
    }
}

env选项: 用于设置nuxt应用程序客户端和服务器的环境变量,默认值未空对象,当在项目中使用axios时,env选项将十分有用。考察案例如下:

// nuxt.config.js
export default {
    env: {
        baseUrl: process.env.BASE_URL || 'http://localhost:3000'
    }
}

随后我们就可以在axios插件中使用env属性,如下:

// plugins/axios.js
import axios from 'axios'

export default axios.create({
    baseUrl: process.env.baseUrl
})

loading选项:用于自定义nuxt应用程序加载组件,如果不打算使用默认加载组件,则可以将loading选项设置未false:

// nuxt.config.js
export default {
    loading: false
}

pageTransition和layoutTransition选项:用于自定义nuxt应用程序中页面和布局过渡的默认属性

// nuxt.config.js
export default {
    pageTransition: {
        name: 'fade'
    }
    layoutTransition: {
        name: 'fade-layout'
    }
}

添加element-ui框架        

在外面创建nuxt项目的时候,有一个步骤是让我们选择是否下载 UI组件库 ,当时我选择的none,现在当我们想使用ui组件库的时候,需要自行进行下载了:

这里以element举例吧,首先我们要知道何为Element UI 及 Element Plus?Element UI是一款基于Vue2.x 的界面框架;Element Plus是一款基于Vue3.x 的界面框架,因为这里我们使用的是nuxt2版本,该版本也是适配vue2的,所以我们要下载element-ui这个组件库,话不多说直接开始:

在终端执行如下命令进行安装element-ui组件库:

npm i element-ui -S

安装完成之后,直接在根目录创建一个 plugins 文件夹,该文件夹用于包含JavaScript函数,如需要在实例化Vue根实例之前运行的全局函数,所以我们在该文件创建 element-ui.js 文件,用于存放element-ui组件库的相关配置,如下:

在我们创建的 element-ui.js 文件中添加如下信息:

import Vue from 'vue'
import Element from 'element-ui'
// import locale from 'element-ui/lib/locale/lang/en'
import locale from 'element-ui/lib/locale/lang/zh-CN' // 引入中文插件
 
Vue.use(Element, { locale })
// Vue.use(Element)

接下来需要我们在 nuxt.config.js 中配置如下信息:

配置完nuxt.config.js需要重新运行项目,然后在pages中随便写一下element-ui语法检验一下:

局部head配置

在讲解 nuxt.config.js 文件中的相关配置的时候,我已经表明了该文件是全局生效的文件,了解nuxt的朋友都知道,该框架的主要目的是提高 SEO ,所以在某种情况下我们需要对某些局部的组件进行相应的head设置,如下:

<template>
  <div>
    关于我们
  </div>
</template>

<script>
export default {
  // 设置 head 相应局部配置
  head() {
    return {
      title: '关于我们',
      meta: [
        { hid: 'description', name: 'description', content: '关于此页面的描述' },
        { hid: 'keywords', name: 'keywords', content: '关于此页面的关键字' },
      ]
    }
  }
}
</script>

设置完成之后,我们就可以对某个单独的局部组件页面进行相应的head设置:

查看网页源代码也可以看到我们设置的某些内容和关键字,方便能够被爬虫爬到:

当然这个head的内容也可以动态的展示,类似那种新闻列表,在当前页面点击不同的新闻,head下的title和描述都会发生相应的改变,这里就不再过多赘述了,简单提一下。

nuxt配置modules

在上文讲解的 nuxt.config.js 中的modules模块,仅仅是简单的介绍了一下,接下来将详细介绍该配置项的使用,拿我们常用的 axios 举例,当我们正常安装的axios时命令如下,这种方法虽然能够实现axios,在不二次封装axios的前提下,每个组件如果想使用axios都需要单独去引用:

npm i axios -S

在 nuxt 框架中提供了另外一直安装 axios 的命令,即使你没有二次封装axios,在每个单独的组件中也不需要额外的去导入axios,直接使用即可。

npm i @nuxtjs/axios -S

既然我们都用了nuxt框架,肯定选择的是nuxt给我们推荐的方法,使用第二种方法需要如下配置:

// nuxt.config.js
modules: [
    '@nuxtjs/axios',
]

当然如果想配置代理的话,需要按照如下命令:

npm i @nuxtjs/proxy -S

本文章主要介绍了下Nuxt.js项目的基础配置,下篇文章将继续讲解Nuxt.js的相关知识,关注博主不迷路,学习更多前端知识!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FastDFS安装教程

FastDFS安装 软件下载 需要的软件&#xff1a;fastdfs-6.0.4、libfastcommon-1.0.42、fastdfs-nginx-module-1.22.tar.gz 下载地址 安装 fastdfs是使用c语言写的&#xff0c;需要先配置c语言环境。 yum install -y gcc gcc-cyum install libevent安装libfastcommon函数库…

Leetcode-每日一题【剑指 Offer 20. 表示数值的字符串】

题目 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数若干空…

Win7累积补丁更新包_UpdatePack7R2-23.8.10

UpdatePack7是最新的Win7补丁累积更新包&#xff0c;Windows 7更新补丁安装包&#xff0c;Win7累积更新离线安装包包括所有关键更新和安全更新及Internet Explorer所有版本的更新&#xff0c;此外还集成了NVMe驱动和USB3.0驱动&#xff0c;使用它还可以将累积更新封装到系统内&…

通过BitMap实现签到

针对黑马点评。 bitmap签到 在传统的签到系统中的数据库的表一般都采取直接存储的形式&#xff0c;类似于一种记录表&#xff0c;但是如果用户的数量特别大&#xff0c;签到上几个月之后&#xff0c;这种表的数据量特别大&#xff0c;同时&#xff0c;存储的数据也会占用很多…

大汇总!各省杰青优青名单已出炉

【SciencePub学术】杰青&#xff0c;是国家杰出青年基金项目资助获得者的简称&#xff0c;与科技奖励计划类似&#xff0c;是我国重要的人才计划之一。一所学校的杰青数量&#xff0c;代表学校未来的学术发展潜力和在同类高校的学术地位&#xff0c;每所大学都非常看重。今年部…

Lombok的使用及注解含义

文章目录 一、简介二、如何使用2.1、在IDEA中安装Lombok插件2.2、添加maven依赖 三、常用注解3.1、Getter / Setter3.2、ToString3.3、NoArgsConstructor / AllArgsConstructor3.4、EqualsAndHashCode3.5、Data3.6、Value3.7、Accessors3.7.1、Accessors(chain true)3.7.2、Ac…

C++笔记之if(指针)的含义

C笔记之if(指针)的含义 code review! 文章目录 C笔记之if(指针)的含义例1例2 例1 例2

突然断电CAD图纸没保存怎么恢复?

CAD图纸绘制时&#xff0c;有时会遇到一些意外情况&#xff0c;比如突然断电、电脑意外关机或者软件异常退出&#xff0c;但是图纸还没保存&#xff0c;这该怎么办&#xff1f;这对于设计师来说&#xff0c;简直要崩溃&#xff0c;不仅白干一天&#xff0c;还得加班赶进度&…

【果树农药喷洒机器人】Part6:基于深度相机与分割掩膜的果树冠层体积探测方法

文章目录 一、引言二、树冠体积测量对比方法2.1冠层体积人工测量法2.2冠层体积拟合测量法 三、基于深度相机与分割掩膜探测树冠体积方法3.1像素值与深度值的转换3.2树冠体积视觉探测法3.3实验分析 总结 一、引言 果树靶标探测是实现农药精准喷施的关键环节&#xff0c;本章以果…

2. Hello World

Hello World 我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印 出来的消费者。我们将介绍 Java API 中的一些细节。 在下图中&#xff0c;“ P”是我们的生产者&#xff0c;“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代 表使用者保留的消息缓冲区 …

RS-232标准

目录 1、概述2、RS-232接口的特点3、RS-232接口协议【仿真】 1、概述 RS-232接口是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换…

Spring5新功能

文章目录 前言一、整合日志功能二、Nullable注解三、函数式风格编程四、JUnit5单元测试框架总结 前言 整合日志、Nullable注解、函数式风格编程、整合JUnit5、Webflux 一、整合日志功能 Spring5移除了Log4jConfigListener&#xff0c;官方建议使用Log4j2. 依赖&#xff1a; &…

期权定价模型系列【2】—期权的希腊字母计算及应用

本篇文章旨在介绍期权常见希腊字母的计算及应用 本专栏更多侧重于理论及文字方面的展示&#xff0c;文章具体的代码可以参考我的另一个专栏【期权量化】。 【期权量化】专栏有同名文章&#xff0c;并且给出了文章的具体代码。 专栏地址&#xff1a; http://t.csdn.cn/Y30Hk…

计算机竞赛 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

吉他谱:Melodies of Life - Final Fantasy Solo Guitar Collections

原始出处&#xff1a; Final Fantasy Solo Guitar Collections - 南泽大介改编的最终幻想9主题曲吉他谱 更多吉他谱&#xff1a; https://github.com/NaisuXu/Guitar_Sheet_Music_Collection

警惕360.勒索病毒,您需要知道的预防和恢复方法。

引言&#xff1a; 近年来&#xff0c;勒索病毒已经成为网络安全的一大威胁&#xff0c;其中之一就是以 “360 勒索病毒 ” 为名的恶意软件。这种病毒通过加密用户的数据文件&#xff0c;并要求赎金以解密这些文件&#xff0c;给受害者带来了严重的损失和困扰。本文91数据恢复将…

【正点原子STM32连载】第三章 开发环境搭建摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第三…

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…

JVM内存区域

预备 为了更好的理解类加载和垃圾回收&#xff0c;先要了解一下JVM的内存区域&#xff08;如果没有特殊说明&#xff0c;都是针对的是 HotSpot 虚拟机。&#xff09;。 Java 源代码文件经过编译器编译后生成字节码文件&#xff0c;然后交给 JVM 的类加载器&#xff0c;加载完…

揭秘内存暴涨:解决大模型分布式训练OOM纪实

在现代深度学习开发中&#xff0c;我们通常依赖其他模块&#xff0c;像搭积木一样构建复杂的软件系统&#xff0c;这个过程往往快速且有效。然而&#xff0c;如何在遇到问题时迅速定位和解决问题&#xff0c;由于系统的复杂性和耦合性&#xff0c;一直困扰着深度学习系统设计和…