12 nuxt3学习(配置)

news2024/12/26 10:49:04

链接: nuxt3官网

nuxt简介

  1. vue3技术栈:Nuxt3 是基于 Vue3 + Vue Router + Vite 等技术栈,全程 Vue3+Vite 开发体验(Fast)。
  2. 自动导包:Nuxt 会自动导入辅助函数、组合 API和 Vue API ,无需手动导入。 基于规范的目录结构,Nuxt 还可以对自己的组件、 插件使用自动导入
  3. 约定式路由(目录结构即路由):Nuxt 路由基于vue-router,在 pages/ 目录中创建的每个页面,都会根据目录结构和文件名来自动生成路由
  4. 渲染模式:Nuxt 支持多种渲染模式(SSR、CSR、SSG等)
  5. 利于搜索引擎优化:服务器端渲染模式,不但可以提高首屏渲染速度,还利于SEO
  6. 服务器引擎:在开发环境中,它使用 Rollup 和 Node.js 。在生产环境中,使用 Nitro 将您的应用程序和服务器构建到一个通用.output目录中。
  7. 跨平台部署(h3): Nitro服务引擎提供了跨平台部署的支持,包括 Node、Deno、Serverless、Workers等平台上部署

安装

环境

node版本需要16.11以上 vscode volar

安装

npx nuxi init <project-name>
cd <project-name>
npm install

如果遇到了报错,则是网络不通,需要科学上网,或者配置host文件

win文件地址 c:/Windows/System32/drivers/etc/hosts
新增一行 185.199.108.133 raw.githubusercontent.com

启动

npm run dev

目录

在这里插入图片描述

应用入口app.vue

我们启动项目后,在浏览器看到页面,此为app.vue文件渲染

<NuxtWelcome/>组件为nuxt/ui组件,是一个欢迎界面组件

app.vue文件常用于

  1. 定义页面布局Layout 或 自定义布局,如:NuxtLayout
  2. 定义路由的占位,如:NuxtPage
  3. 编写全局样式
  4. 全局监听路由 等等

配置

nuxt配置(nuxt.config)

Nuxt 可以用一个 nuxt.config 文件轻松配置,该文件的扩展名可以是 .js、.ts 或 .mjs
链接: 官方api文档

import { defineNuxtConfig } from 'nuxt3'// nuxt有自动导包,可不写
export default defineNuxtConfig({
  // 我的 Nuxt 配置
})

判断代码运行环境

<script setup>
// 在对应的环境中做对应操作
if (process.client) {
  console.log('运行在client');
}
if (process.server) {
  console.log('运行在serve');
}
// 也可通过window判断
if (typeof window === 'object') {
  console.log('运行在client');
}
</script>

runtimeConfig:运行时配置,即定义环境变量

export default defineNuxtConfig({
  // 1.这里定义的运行时配置会不会打入到 process.env
  runtimeConfig:{
    // 仅在服务端serve可以访问
    appKey: 'aabbccdd',
    // public里的在服务端serve,客户端client皆可访问
    public:{
      baseUrl: '/api'
    }
  }
})

使用(app.vue或其他页面均可)

<script setup>
const runtimeConfig = useRuntimeConfig()
console.log(runtimeConfig.appKey);
console.log(runtimeConfig.public.baseUrl);
</script>

结果
vscode终端中:打印两次

aabbccdd                                                                                           
/api                                                                                                
aabbccdd                                                                                            
/api

浏览器控制台

undefined
/api

可通过.env文件中的环境变量来覆盖,优先级(.env > runtimeConfig)
根目录创建.env文件

# 符合规则 会覆盖runtimeConfig的配置
# 可通过process.env来访问
NUXT_APP_KEY = abcd
NUXT_PUBLIC_BASE_URL = http://env

appConfig: 应用配置,定义在构建时确定的公共变量,如:theme

配置会和 app.config.ts 的配置合并(优先级 app.config.ts > appConfig)
不可使用环境变量重写

export default defineNuxtConfig({
  runtimeConfig:{},
  // 2.定义应用的配置
  appConfig:{
    title: 'vue3 nuxt text',
    theme: {
      dark: true
    }
  }
})

使用

<script setup>
const appConfig = useAppConfig()
// serve与client均可
console.log(appConfig.title);
console.log(appConfig.theme.dark);
onMounted(()=>{
  document.title = appConfig.title
})
</script>

app配置
head:给每个页面上设置head信息,也支持 useHead 配置和内置组件(动态)。

export default defineNuxtConfig({
  runtimeConfig:{},
  appConfig:{},
  // 3.app配置
  app:{
    // 给app所有的页面的head添加的配置(SEO, 添加外部的资源)
    head: {
      title: 'nuxt3 xx',
      meta: [
        // <meta name="viewport" content="width=device-width, initial-scale=1">
        { name: 'viewport', content: 'width=device-width, initial-scale=1' }
      ],
      script: [
        // <script src="https://myawesome-lib.js"></script>
        { src: 'https://awesome-lib.js' }
      ],
      link: [
        // <link rel="stylesheet" href="https://myawesome-lib.css">
        { rel: 'stylesheet', href: 'https://awesome-lib.css' }
      ],
      // please note that this is an area that is likely to change
      style: [
        // <style type="text/css">:root { color: red }</style>
        { children: ':root { color: red }'}
      ],
      noscript: [
        // <noscript>JavaScript is required</noscript>
        { children: 'JavaScript is required' }
      ]
    }
  }

})

ssr:指定应用渲染模式

export default defineNuxtConfig({
  runtimeConfig:{},
  appConfig:{},
  app:{},
  // spa
  ssr:false
})

router:配置路由相关的信息,比如在客户端渲染可以配置hash路由
alias:路径的别名,默认已配好
modules:配置Nuxt扩展的模块,比如:@pinia/nuxt @nuxt/image
routeRules:定义路由规则,可更改路由的渲染模式或分配基于路由缓存策略(公测阶段)
builder:可指定用 vite 还是 webpack来构建应用,默认是vite。如切换为 webpack 还需要安装额外的依赖。
。。。

app配置(app.config.ts)

app.config.ts 应用配置文件,用来定义在构建时确定的公共变量
不要将秘密或敏感信息放在 app.config.ts 文件中,该文件是客户端公开

export default defineAppConfig({
  title: 'Hello Nuxt',
  theme: {
    dark: true,
    colors: {
    primary: '#ff0000'
    }
  }
})

使用(与之上appConfig配置一样,不过app.config.ts会覆盖相同配置,优先级高)

<script setup>
const appConfig = useAppConfig()
// serve与client均可
console.log(appConfig.title);
console.log(appConfig.theme.dark);
onMounted(()=>{
  document.title = appConfig.title
})
</script>

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

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

相关文章

卡方分布、非中心卡方分布详解 (概念、求阈值方法、非中心化参数求解办法等)

一、相关概念 1、卡方分布 若n个 相互独立 的随机变量 ξ₁、ξ₂、……、ξn ,均服从 标准正态分布N(0,1),则这n个服从标准正态分布的随机变量的 平方和 构成一新的随机变量,其分布规律称为卡方分布(chi-squaredistribution);其中参数n称为自由度(通俗讲,样本中独立…

有关数据库的一级、二级、三级封锁协议

一级封锁协议 一级封锁协议是指&#xff0c;事务T在修改数据R之前必须先对其加X锁&#xff0c;直到事务结束才释放。事务结束包括正常结束&#xff08;COMMIT&#xff09;和非正常结束&#xff08;ROLLBACK).一级封锁协议可防止丢失修改&#xff0c;并保证事务T是可恢复的。在…

SpringBoot热部署

启动热部署 关于热部署 重启&#xff08;Restart&#xff09;&#xff1a;自定义开发代码&#xff0c;包含类、页面、配置文件等&#xff0c;加载位置restart类加载器重载&#xff08;ReLoad&#xff09;&#xff1a;jar包&#xff0c;加载位置base类加载器开启开发者工具 导…

gma 地理空间绘图:(1) 绘制简单的世界地图-2.设置经纬网

内容回顾 gma 地理空间绘图&#xff1a;(1)绘制简单的世界地图-1.地图绘制与细节调整 方法 AddGridLines(LONRange (-180, 180, 15), LATRange (-90, 90, 15), ShowLON True, ShowLAT True, LineColor ‘gray’, LineStyle (0, (6, 6)), LineWidth 0.3) 功能&#xf…

10种常见网站安全攻击手段及防御方法

在某种程度上&#xff0c;互联网上的每个网站都容易遭受安全攻击。从人为失误到网络罪犯团伙发起的复杂攻击均在威胁范围之内。 网络攻击者最主要的动机是求财。无论你运营的是电子商务项目还是简单的小型商业网站&#xff0c;潜在攻击的风险就在那里。 知己知彼百战不殆&…

MOA-30kV氧化锌避雷器泄露电流测试仪

一、概述 用于检测10kV及以下电力系统用无间隙氧化锌避雷器MOA阀电间接触不良的内部缺陷&#xff0c;测量MOA的直流参考电压&#xff08;U1mA&#xff09;和0.75 U1mA下的泄漏电流。该仪器将直流高压电源、测量和控制系统组成一体&#xff0c;元件浓缩在一个机箱内&#xff0c…

JS混淆加密:Eval的未公开用法

JavaScript奇技淫巧&#xff1a;Eval的未公开用法 作者&#xff1a;http://JShaman.com w2sft&#xff0c;转载请保留此信息很多人都知道&#xff0c;Eval是用来执行JS代码的&#xff0c;可以执行运算、可以输出结果。 但它还有一种未公开的用途&#xff0c;想必很少有人用过。…

【计算机网络】数据链路层:组帧,奇偶校验,CRC循环冗余校验,海明码详解

数据链路层 一、校验 1. 奇偶校验 偶校验 数据位和为偶数&#xff1a;校验位为0&#xff1b;数据位和为奇数&#xff1a;校验位为1&#xff1b; 奇校验 数据位和为奇数&#xff1a;校验位为0&#xff1b;数据位和为偶数&#xff1a;校验位为1&#xff1b; 缺点是会存在误判…

【Autoware】采集实验数据bag包并仿真运行

文章目录1. 官方demo包2. 控制底层地图采集3. 感知定位4. 规划控制5. 仿真或实车运行1. 官方demo包 wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_data.tar.gz wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_150324.tar.gz官方示例包的网上…

iPhone屏蔽APP广告的方法

iPhone怎么屏蔽网站(域名)&#xff1f; 操作步骤&#xff1a;“设置” -> “屏幕使用时间” -> “打开屏幕使用时间” -> “内容和隐私访问限制” -> “内容访问限制” -> “网页内容” -> “限制成人网站” -> “永不允许”, 添加需要屏蔽的网站或者域名…

项目开发过程中实际遇到的几个问题处理

1、今天开发环境运行的时候出现下面问题 The project cannot be built until build path errors are resolved. 出现报错情况&#xff0c;之前也没有遇到过。 根据字面意思“在解决生成路径的错误之前&#xff0c;无法生成项目”&#xff0c;也就是说项目的路径位置配置错误…

【论文速递】CVPR2021 - 基于自引导和交叉引导的小样本分割算法

【论文速递】CVPR2021 - 基于自引导和交叉引导的小样本分割算法 【论文原文】&#xff1a;Self-Guided and Cross-Guided Learning for Few-Shot Segmentation 【作者信息】&#xff1a;Bingfeng Zhang, Jimin Xiao , Terry Qin 获取地址&#xff1a;https://openaccess.the…

来香港饮茶吹水先,免费报名Zabbix Meetup香港站!

Zabbix Meetup 来到香港啦&#xff01; 春暖花开&#xff0c;Zabbix计划5月来到香港&#xff0c;和你一起饮茶吹水&#xff01; 时间&#xff1a;5月某日&#xff0c;周几方便&#xff1f; 预计14:00-17:00 形式&#xff1a;线下交流会&#xff0c;免费&#xff0c;线下&…

测评自养号优势,亚马逊,速卖通、美客多、Newegg等跨境卖家必看!

随着跨境电商的发展&#xff0c;越来越多有实力的商家加入到跨境电商的行列&#xff0c;导致行业竞争越来越大&#xff0c;成本投入也越来越高&#xff0c;原来的跨境蓝海已经变红海&#xff0c;卖家都不得不靠“烧钱”来提升排名&#xff0c;吸引流量从而维持销量。那么卖家如…

企业电子招投标采购系统——功能模块功能描述

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

Python数据工程师与数据分析有什么区别?

不少朋友都很困惑&#xff0c;大数据工程师和Python的数据分析师有什么区别&#xff0c;哪一个的就业好薪资高&#xff1f;现在我们一起来探讨下这个问题。 首先我们来区别下大数据工程师和数据分析师&#xff1a; 1、概念区别 Python数据分析师培训出来的数据分析师&#x…

1-springboot基础-练习

1-spring stater project创建 设置springboot项目的下载地址&#xff1a;https://start.aliyun.com/ 创建项目 创建HelloController RestController publicclass HelloController {GetMapping("/hello")public String hello() {return "hello Spring Boot"…

AcWing蓝桥杯辅导课:第三讲 数学与简单DP

AcWing 1205. 买不到的数目 思路&#xff1a; 裴蜀定理: 对任何整数aaa、bbb&#xff0c;存在整数xxx、yyy&#xff0c;使得axby(a,b)ax by (a, b)axby(a,b)&#xff0c; (a,b)(a, b)(a,b)表示aaa、bbb的最大公因数&#xff0c;令d(a,b)d(a, b)d(a,b)。若 d1d 1d1&#xff…

Mysql-DML语句

DML语句 数据操作语言DML&#xff08;Data Manipulation Langua&#xff09; 是SQL语言的一个分类&#xff0c;用于对表的数据进行增&#xff0c;删&#xff0c;改&#xff0c;查 创建表 CREATE TABLE 语句用于创建数据库中的表。 语法&#xff1a; CREATE TABLE 表名称 ( …

速度vs精度:在AutoDock Vina中,不同对接盒子Box Size 、 Exhaustiveness对配体姿势精度的影响

速度vs精度&#xff1a;在AutoDock Vina中&#xff0c;不同对接盒子Box Size 、 Exhaustiveness对配体姿势精度的影响 介绍&#xff1a; 在Autodock Vina的中&#xff0c;用户需要提供两个关键的相关参数: 1)盒子大小&#xff08;Box Size&#xff09;&#xff0c;即对接搜索…