Nuxt3使用

news2025/1/16 6:02:20

1.官网下载

npx nuxi@latest init nuxt(有墙),也可以到这个地方下载:git clone https://gitee.com/pmx600/nuxt3.git

2.找到app.vue文件

将里面的代码修改为:<template><NuxtPage /></template>,NuxtPage 的作用相当于vue中的 <router-view/>

3.同级新建pages目录

分别新建index.vue、login/index.vue、mine/index.vue,其中index.vue是进入此项目的默认文件,相当于vue的router.js中的path:'/'的路径。nuxt项目不需要自己配置路由,默认会把pages里面的换成路由。比如这里,你直接访问:http://192.168.100.87:3000,http://192.168.100.87:3000/login,http://192.168.100.87:3000/mine 即可

4.环境变量

在app.vue的同级目录下,新建.env、.env.local、.env.dev、env.prod,变量命名没用规则,建议统一用NUXT_PUBLIC_XXX的书写规范。

5.启动命令修改

修改package.json的启动命令,如本地启动,在scripts添加一行:"local": "nuxt dev --dotenv .env.local",那么启动后,就会去读取.env.local的配置。

6.获取环境变量的值

首先先去nuxt.config.ts,添加: runtimeConfig: { public: { baseUrl: process.env.NUXT_PUBLIC_BASE_URL, appId: process.env.NUXT_PUBLIC_APPID } },

假设我们在.env或者.env.local配置了NUXT_PUBLIC_BASE_URL = xxxx,NUXT_PUBLIC_APPID=xxx的两个环境变量。
获取变量的方法,调用nuxt提供的API: const config = useRuntimeConfig();console.log(config)就可以拿到对应的变量。

7.路由跳转

调用nuxt的api:navigateTo({ path: url },query: {id: 1})

8.nuxt.config.ts常用配置:

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  css: [
    './assets/css/reset.css',
  ],
  app: {
    head: {
      title: 'Nuxt',
      meta: [
        { name: 'viewport', content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover' }
      ],
      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: '@/assets/reset.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 }', type: 'text/css' }
      ],
      noscript: [
        // <noscript>JavaScript is required</noscript>
        { children: 'JavaScript is required' }
      ]
    }
  },
  runtimeConfig: {
    // Keys within public are also exposed client-side
    public: {
      baseUrl: process.env.NUXT_PUBLIC_BASE_URL,
      appId: process.env.NUXT_PUBLIC_APPID
    }
  },
  modules: ['@vant/nuxt'],
  devtools: { enabled: false },
  postcss: {
    plugins: {
      // 这个工具可以实现自动添加CSS3前缀
      "autoprefixer": {
        overrideBrowserslist: ["last 5 version", ">1%", "ie >=8"]
      },
      'postcss-pxtorem': {
        rootValue: 37.5, // 指定转换倍率,我现在设置这个表示1rem=37.5px;
        propList: ['*'], // 属性列表,表示你要把哪些css属性的px转换成rem,这个*表示所有
        mediaQuery: false, // 是否允许使用媒体查询,false媒体查询的代码可用,true不可用
        exclude: 'ignore',
        replace: true, // 替换包含rem的规则,而不是添加回退
        minPixelValue: 1, // 需要转换的最小值,一般1px像素不转换,以上才转换
        unitPrecision: 6, // 转换成rem单位的小数点后的保留位数
        // selectorBalckList: ["van"], // 匹配不被转换为rem的选择器
      },
    }
  },
  alias: {
    "~": "/<rootDir>",
    "@": "/<rootDir>",
    "~~": "/<rootDir>",
    "@@": "/<rootDir>",
    // "assets": "/<rootDir>/assets",
    "public": "/<rootDir>/public"
  }
})

9.plugins

相当于在vue项目,在main.js引入xxx.js。比如在移动端做适配,引入lib-flexible.js。如果我们在vue的项目,直接在main.js: import ('@/utils/lib-flexible.js'),在nuxt项目中,我们只需要按照以下格式,即可自动引入:

import { defineNuxtPlugin } from '#app'

export default defineNuxtPlugin(() => {
  if (process.client) {
    (function flexible(window, document) {
      var docEl = document.documentElement
      var dpr = window.devicePixelRatio || 1
  
      // adjust body font size
      function setBodyFontSize() {
          if (document.body) {
              document.body.style.fontSize = (12 * dpr) + 'px'
          }
          else {
              document.addEventListener('DOMContentLoaded', setBodyFontSize)
          }
      }
      setBodyFontSize();
  
      // set 1rem = viewWidth / 10
      function setRemUnit() {
          var rem = docEl.clientWidth / 10
          docEl.style.fontSize = rem + 'px'
      }
  
      setRemUnit()
  
      // reset rem unit on page resize
      window.addEventListener('resize', setRemUnit)
      window.addEventListener('pageshow', function (e) {
          if (e.persisted) {
              setRemUnit()
          }
      })
  
      // detect 0.5px supports
      if (dpr >= 2) {
          var fakeBody = document.createElement('body')
          var testElement = document.createElement('div')
          testElement.style.border = '.5px solid transparent'
          fakeBody.appendChild(testElement)
          docEl.appendChild(fakeBody)
          if (testElement.offsetHeight === 1) {
              docEl.classList.add('hairlines')
          }
          docEl.removeChild(fakeBody)
      }
  }(window, document))
  }
})

10.部署问题

默认的packge.json文件中的scripts里面,有默认的:“build”: “nuxt build”,我们需要修改:

"build": "nuxt build --dotenv .env.prod && node .output/server/index.mjs",

执行完 npm run build,打包输出.output,里面是没用index.html,因为这个是服务端渲染原理,就相当于是一个node.js的后端项目,而.output/server/index.mjs是我们要启动的文件,用过node.js开发的童鞋肯定知道的,这个地方就是相当于node.js启动的app.js或者index.js,所以需要我们使用node把项目启动。

11.ngnix配置

不会的请自行查找资料,比较简单,跟配置后端的应用差不多,无非就是做个代理,访问我们刚启动的服务。

最后:package.json,有这么一个执行命令:generate,执行完npm run generate,这里打包出来的是纯静态文件,没用任何交互,附属项目目录一张
在这里插入图片描述

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

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

相关文章

【JavaScript】2.3 数据处理和函数式编程

文章目录 数组操作mapfilterreduce 函数式编程纯函数高阶函数闭包 总结 JavaScript提供了丰富的数据处理方法&#xff0c;特别是在数组操作和函数式编程方面。在这一章节中&#xff0c;我们将学习一些JavaScript中的数据处理技巧和函数式编程的基本概念。 数组操作 JavaScript…

替换的DLL用户电脑报错加载失败

编译后混淆加签名的dll 远程下载下来有个选项&#xff1a; 在某用户电脑上出现加载失败的报错 右键dll 属性里勾选解除锁定后 加载运行正常 跟用户电脑安全策略有关系 有的会出现 大部分不会

函数式编程-Stream流笔记-三更草堂

函数式编程-Stream流 1. 概述 1.1 为什么学&#xff1f; 能够看懂公司里的代码 大数量下处理集合效率高 代码可读性高 消灭嵌套地狱 //查询未成年作家的评分在70以上的书籍 由于数据中作家和书籍可能出现重复&#xff0c;需要进行去重 List<Book> bookList new Ar…

有用!2023汉字小达人市级比赛填空题专项训练,在线模拟题来了

只剩下一周了&#xff0c;2023年第十届汉字小达人市级比赛就要正式开始了。 敲黑板&#xff01;汉字小达人区级比赛时间为2023年11月30日&#xff08;星期四&#xff09;下午16&#xff1a;00-18&#xff1a;00&#xff0c;记得设置闹钟。提前和老师确认学校统一组织比赛&…

uni-app 使用uni.getLocation获取经纬度配合腾讯地图api获取当前地址

前言 最近在开发中需要根据经纬度获取当前位置信息&#xff0c;传递给后端&#xff0c;用来回显显示当前位置 查阅uni-app文档&#xff0c;发现uni.getLocation () 可以获取到经纬度&#xff0c;但是在小程序环境没有地址信息 思考怎么把经纬度换成地址&#xff0c;如果经纬度…

d3dx9_43.dll缺失怎么办?教你一分钟修复d3dx9_43.dll丢失问题

今天&#xff0c;与大家分享关于“d3dx9_43.dll丢失的5个解决方法”的主题。在我们的日常生活和工作中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;而d3dx9_43.dll丢失就是其中之一。那么&#xff0c;什么是d3dx9_43.dll呢&#xff1f;它为什么会丢失&#xff1f;又该…

pikachu靶场PHP反序列化漏洞

pikachu靶场PHP反序列化漏洞 源码分析 查看源代码 class S{var $test "pikachu";function __construct(){echo $this->test;} }// O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_PO…

深度学习之基于YoloV5车辆和行人目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…

帝国cms开发一个泛知识类的小程序的历程记录

#帝国cms小程序# 要开发一个泛知识类的小程序&#xff0c;要解决以下几个问题。 1。知识内容的分类。 2。知识内容的内容展示。 3。知识内容的价格设置。 4。用户体系&#xff0c;为简化用户的操作&#xff0c;在用户进行下载的时候&#xff0c;请用户输入手机号&#xff…

二、类与对象(二)

8 this指针 8.1 this指针的引入 我们先来定义一个日期的类Date&#xff1a; #include <iostream> using namespace std; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << _year <&l…

【Java 进阶篇】Redis:打开缓存之门

介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的键值对存储系统&#xff0c;被广泛用作缓存、消息中间件和数据库。它以其快速的读写能力、支持多种数据结构和丰富的功能而闻名。在这篇博客中&#xff0c;我们将深入了解Redis的概念、安装以及基本…

【LeetCode刷题】--43.字符串相乘

43.字符串相乘 方法一&#xff1a;做加法&#xff0c;模拟竖式乘法的方法计算乘积 class Solution {public String multiply(String num1, String num2) {if(num1.equals("0") || num2.equals("0")){return "0";}String res "0";//nu…

什么是开关电源测试系统?如何用它进行测试?

开关电源测试系统是针对开关电源测试而开发的一种智能自动化测试系统&#xff0c;打破传统测试程序与缺陷&#xff0c;满足客户新的测试需求&#xff0c;助力客户解决测试难点&#xff0c;顺利完成开关电源测试&#xff0c;提高测试效能。那么开关电源自动化测试方案的流程是什…

设备状态监测与故障诊断系统的作用

随着工业生产的发展和技术的进步&#xff0c;设备状态监测与故障诊断系统在工业领域中扮演着越来越重要的角色。这一系统通过实时监测设备的状态和参数&#xff0c;及时发现潜在的故障&#xff0c;并提供预警信号&#xff0c;以降低生产中断、提高安全性和维护效率。以下将详细…

【Java 进阶篇】从Java对象到JSON:Jackson的魔法之旅

在现代的软件开发中&#xff0c;处理数据的能力是至关重要的。而当我们谈及数据格式时&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;通常是首选。为了在Java中轻松地将对象转换为JSON&#xff0c;我们需要一种强大而灵活的工具。这时&#xff0c;Jackso…

HTML玩转超链接a标签

大家应该都知道&#xff0c;a标签主要是转跳链接&#xff0c;接下来&#xff0c;让我为大家介绍一下a标签的使用&#xff01; 主要的作用&#xff1a;从当前页面进行跳转 标签名标签语义常用属性单/双标签a超链接href&#xff1a;要跳转的具体位置 target&#xff1a;跳转时如…

2023年【安全生产监管人员】考试题及安全生产监管人员找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题参考答案及安全生产监管人员考试试题解析是安全生产模拟考试一点通题库老师及安全生产监管人员操作证已考过的学员汇总&#xff0c;相对有效帮助安全生产监管人员找解析学员顺利通过考试。 1、…

HTTPS协议的加密流程

目录 一&#xff0c;HTTPS是什么 二&#xff0c;两种加密方式 三&#xff0c;HTTPS的加密过程 3.1 引入对称加密 3.2 引入非对称加密 3.3 引入证书 一&#xff0c;HTTPS是什么 HTTPS也是一个应用层协议&#xff0c;它是在HTTP协议的基础上引入了一个加密层。因为HTTP协议…

phpinfo中的重要信息

phpinfo中的重要信息 1.PHP/操作系统版本信息2.Configuration File(ini配置文件位置)3.Registered PHP Streams(支持的流)4.Registered Stream Filters(支持的流过滤器)5.allow_url_fopen&allow_url_include6.disable_functions7.display_errors8.include_path9.open_based…

[Docker]九.Docker compose讲解

docker-compose 是 docker 官方的一个开源项目&#xff0c;可以实现对 docker 容器集群的快速编排, docker-compose 通过一个 配置文件 来管理多个 Docker 容器,在配置文件中&#xff0c;所有的容器通过 services 来定义&#xff0c;然后使用 docker-compose脚本 来 启动&am…