nuxt3 + pinia + swiper +element-plus + less + 腾讯地图 创建项目及使用

news2024/10/6 6:51:08

一。先说优点

1、基于Vue3:

Nuxt3是基于Vue.js 3开发的,Vue.js 3是目前最流行的前端框架之一。
这意味着你可以利用Vue3的所有优势,如性能优化、响应式编程、更好的TypeScript支持等。

2、服务端渲染(SSR):

Nuxt3支持服务端渲染,可以帮助你解决SPA(单页应用)中的SEO问题,提高页面加载速度,改善用户体验。

静态站点生成(SSG):Nuxt3还提供静态站点生成的功能,让你可以轻松构建高性能的静态站点,提高托管速度和安全性。

3、模块化:

Nuxt3有丰富的模块化生态系统,让你可以轻松地扩展应用的功能,减少开发工作量。

4、文件系统路由:

Nuxt3的文件系统路由让你可以通过简单的文件和目录结构来组织你的应用路由,让开发更加简洁明了。

5、开箱即用:

Nuxt3提供了许多开箱即用的功能,如状态管理、中间件、页面过渡动画等,使得开发过程更加简单和高效。

二。再来 nuxt3 项目搭建

1. nuxt3脚手架

npx nuxi init nuxt3-app 
// nuxt3-app 是我的项目名称

在 nuxt3-app 目录下下载依赖

yarn

运行

yarn dev

再访问http://localhost:3000 即可看到基础界面了

2. 项目结构

(刚搭建的项目啥文件夹都没有,这里面基本都是我自己创建的。)
在这里插入图片描述

  1. assets ,存放一些静态资源,包括一些 Sass、Less ,在项目组件中引用的时候需要在开头使用 ~assets/ 符号,如果你的静态资源文件需要 webpack 做构建编译处理,可以放到 assets 目录,否则可以放到 static 目录中去,这也是 assets 目录 和 static 目录的一个区别 (我这里放的是全局使用的css) 也可放在 public 下面

  2. components 组件! 全部都放在/components目录下,并自动注册,(不用自己引入了,真好~ )
    组件名称为目录名+组件名,并以大驼峰式命名,重复的名称会被去除~
    (~ 后面再介绍组件怎么使用,这里先介绍目录吧~ )

  3. pages Nuxt 3 的 pages 目录,是用来建立页面并放置的目录,当项目下有存在 pages 目录,Nuxt 将会自动加载 Vue Router 来实现路由效果,目录下的文件通常是 Vue 的组件,也允许具有 .vue、 .js、 .jsx、 .ts 或 .tsx 副档名的文件。 当我们建立 ./pages/home/ index.vue,文件内容如下,则表示home 路由 / 对应到这个home页面文件,路由的配置将会由 Nuxt 3 自动产生。(不用自己创建路由了,真好~ )

  4. plugins 这里定义的是插件,nuxt 会自动引用的。
    呐! 官网说的 ~
    在这里插入图片描述

  5. public 静态资源~ 我的图片放在这里

  6. store 状态管理,我项目中用的是pinia

  7. middleware 设置中间件

引入插件

pinia

yarn add pinia @pinia/nuxt

element-plus

yarn add @element-plus/nuxt

添加 plugins/element.ts

import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import ElementPlus from 'element-plus';

export default defineNuxtPlugin(nuxtApp => {
  // ElementPlus
  nuxtApp.vueApp.use(ElementPlus, { size: 'small', zIndex: 3000 });

  // ElementPlus Icons
  for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    nuxtApp.vueApp.component(key, component)
  }
})

less

我用的版本

    "less": "^3.12.2",
    "less-loader": "^7.0.1",

swiper

 yarn add vue-awesome-swiper
 yarn add swiper

添加 plugins/element.ts

import VueAwesomeSwiper from "vue-awesome-swiper";
// import "swiper/swiper.css";
import "swiper/swiper-bundle.css";

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(VueAwesomeSwiper);
});

我的:package.json

{
  "private": true,
  "scripts": {
    "build": "nuxt build",
    "dev": "nuxt dev",
    "generate": "nuxt generate",
    "preview": "nuxt preview"
  },
  "devDependencies": {
    "nuxt": "3.0.0-rc.4"
  },
  "dependencies": {
    "@element-plus/icons-vue": "^2.0.6",
    "@iconify/vue": "^3.2.1",
    "@pinia/nuxt": "^0.1.9",
    "@windicss/plugin-animations": "^1.0.9",
    "element-plus": "^2.2.8",
    "less": "^3.12.2",
    "less-loader": "^7.0.1",
    "nuxt-windicss": "^2.4.2",
    "pinia": "^2.0.14",
    "sass": "^1.53.0",
    "swiper": "^8.0.7",
    "nuxt-swiper": "^0.1.6",
    "unplugin-auto-import": "^0.9.2",
    "unplugin-vue-components": "^0.21.1",
    "vue-awesome-swiper": "^5.0.1"
  }
}

我安装的包

我的 nuxt.config.ts

import { defineNuxtConfig } from "nuxt";

const lifecycle = process.env.npm_lifecycle_event;

export default defineNuxtConfig({
  app: {
    head: {
      title: "房屋医院",
      // link: [{ rel: "icon", type: "image/*", href: "" }],
      link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" }],
      script: [
        {
          type: "text/javascript",
          src: "https://map.qq.com/api/js?v=2.exp&key=XXX",
        },
      ],
    },
  },
  css: ["~/assets/scss/index.scss"],
  build: {
    transpile: lifecycle === "build" ? ["element-plus"] : [],
  },
  buildModules: ["nuxt-windicss", "@pinia/nuxt"],
});

四。 开始使用了

1. 配置路由 :

nuxt3 是不用自己配置路由的,只要创建文件夹就可以了~
在这里插入图片描述
home 文件夹对应的路由是 http://localhost:3000/home

2.中间件,设置路由重定向

在这里插入图片描述

// 设置
export default defineNuxtRouteMiddleware((to, from) => {
  console.log("auth");
  return navigateTo("/home");
});

我的需求是,刚进入页面默认进入home路由。

// 使用 pages/index
definePageMeta({
  middleware: "auth",
});

3. 使用组件

在这里插入图片描述
index文件 是自己在 home 文件夹下面的。要是使用 直接

<Home />

com 文件夹下面的 aboutUsImg 文件 要是使用 直接

<HomeComAboutUsImg />

4. 引入静态资源

在这里插入图片描述
我的图片资源,都是放在pulic/imgs,下面的。
使用1 :

 <div class="introduction-title">
    <img src="/imgs/introduction/titleUse.png" alt="" />
    // 直接 "/imgs/introduction/titleUse.png" 去使用,要加/
</div>

使用2 :state中使用
不要加/
在这里插入图片描述

5. 使用 pinia

import { defineStore } from "pinia";
export const useCommon = defineStore("common", {
  state: () => {
    return {
      selectNavIndex: 0
    };
  },
  actions: {
    setSelectNavIndex(val) {
      this.selectNavIndex = val;
    }
  },
});
import { useHome } from "@/store/home";
const homeStore = useHome();
const selectNavIndex = computed(() => homeStore.selectNavIndex);

6.使用腾讯地图

nuxt.config.ts 配置

export default defineNuxtConfig({
  app: {
    head: {
      title: "房屋医院",
      // link: [{ rel: "icon", type: "image/*", href: "" }],
      link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" }],
      script: [
        {
          type: "text/javascript",
          src: "https://map.qq.com/api/js?v=2.exp&key=XXX",
        },
      ],
    },
  },
});

文件中使用:

<template>
  <div class="map">
    <div id="container"></div>
  </div>
</template>

<script setup>
const initMap = () => {
  const center = new qq.maps.LatLng(31.275091, 120.608716);
  var map = new qq.maps.Map(document.getElementById("container"), {
    // 地图的中心地理坐标。
    center: center,
    zoom: 13,
    disableDefaultUI: true, //禁止所有控件
  });
  var label = new qq.maps.Label({
    position: center,
    map: map,
    content: "文本标记",
  });
  var marker = new qq.maps.Marker({
    position: center,
    map: map,
  });
};
onMounted(() => {
  initMap();
});
</script>

<style lang="less" scoped>
#container {
  /*地图(容器)显示大小*/
  width: 527px;
  height: 343px;
}
</style>

打包:

npm run generate 或者 npm run build 

生成 .output / dist 文件

全局 安装

npm install -g http-server

打开cmd命令行,cd进入.output / dist 文件下的 public文件夹目录下,执行

http-server -p 12345

打开启动的项目地址 即可查看是否成功。

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

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

相关文章

C++之引用的介绍

目录 前言 引用 1.引用的概念 2.引用特性 3.引用的权限 4. 使用场景 4.1 做参数 4.2 做返回值 5.引用和指针的区别 前言 相信大家都看过水浒传&#xff0c;里面的英雄人物除了自己的名字外都有自己的称号&#xff0c;比如&#xff1a;花和尚——鲁智深&#xff0c;豹…

centOS7.9安装nginx

此示例为安装nginx-1.20.1 &#xff08;小版本无差别&#xff09; 安装过程 sftp上传nginx-1.20.1.tar.gz文件到机器&#xff08;在root目录下&#xff09; #cd /usr/local/nginx/sbin #./nginx -V (查看版本&#xff0c;如果已经有安装过的话会出现版本号) 切换到loca…

k8s 源码分析 informer篇

之前介绍过informer的流程&#xff0c;文章在 informer介绍。今天梳理一下他的源码和流程。 一、概念 什么是 Informer informer 是 client-go 中的核心工具包&#xff0c;informer 其实就是一个带有本地缓存和索引机制的&#xff0c;可以注册 EventHandler 的 client 本地缓存…

L2-1 堆宝塔

堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小&#xff0c;按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。聪明宝宝采取的策略如下&#xff1a; 首先准备两根柱子&#xff0c;一根 A 柱串宝塔&#xff0c;一根 B 柱用于临时叠放。把第 1 块彩虹圈…

Linux下使用Mysql 第一天

目录 安装mysql 更改账户名和密码 启动/关闭mysql mysql的基本操作 数据库CURD 创建数据库 查看数据库 修改数据库 删除数据库 表的CURD 创建表 查看表 修改表 删除表 表数据的CURD create数据 Retrieve数据 update数据 delete数据 DML和DDL的区别&#xf…

波形生成:均匀和非均匀时间向量

波形生成—— 脉冲、chirp、VCO、正弦函数、周期性/非周期性和调制信号 使用 chirp 生成线性、二次和对数 chirp。使用 square、rectpuls 和 sawtooth 创建方波、矩形波和三角形波。 如需了解此处未显示的其他无线波形生成功能&#xff0c;请参阅无线波形发生器 (Communicat…

【腾讯云-2】极简搭建边缘集群

1 创建 流程和https://blog.csdn.net/qq_47058489/article/details/130347795差不多&#xff0c;可参考 查看基本信息&#xff1a; 创建边缘集群的过程中会初始化master&#xff0c;说明包含一个托管master节点 但是没有其他节点 2 开启节点远程登录 通过 SSH 的方式远…

JavaScript模块化开发

目录&#xff1a; 1 认识模块化开发 2 CommonJS和Node 3 require函数解析 4 AMD和CMD&#xff08;了解&#xff09; 5 ESModule用法详解 6 ESModule运行原理 模块化不是两个不同的js文件直接导入到某个页面中的&#xff0c;因为这两个文件只要有相同的变量或函数&#xf…

html学习(标签、css、选择器)

认识HTML HTML是HyperText Markup Language的缩写&#xff0c;中文名为超文本标记语言。它是一种用来创建网页的标准标记语言&#xff0c;由标签&#xff08;tag&#xff09;和文本构成&#xff0c;用于描述网页的结构和内容。HTML文档可以被浏览器解析并呈现出网页的内容和样…

方向梯度直方图(Histogram of Oriented Gradient)

1.方向梯度直方图&#xff08;Histogram of Oriented Gradient&#xff09; 笔记参考&#xff1a;HOG特征提取 笔记参考&#xff1a;一文讲解方向梯度直方图&#xff08;hog&#xff09; 笔记参考&#xff1a;Histogram of Oriented Gradients (HOG) | By Dr. Ry Stemplicity …

【Java-01】深入浅出匿名对象 , 继承 , 抽象类

主要内容 面向对象回顾 匿名对象介绍 面向对象特征 - 继承 抽象类的使用 模板设计模式 1 面向对象回顾 面向对象的核心思想是什么 ? 用代码来模拟现实生活中的事物 , 比如学生类表示学生事物 , 对象表示的就是具体的学生 , 有了类就可以描述万千世界所有的事物了 现有的…

【PaddleNLP-kie】关键信息抽取2:UIE模型做图片信息提取全流程

文章目录 本文参考UIE理论部分step0、UIEX原始模型使用网页体验本机安装使用环境安装快速开始 step1、UIEX模型微调&#xff08;小样本学习&#xff09;微调模型对比step2、服务化部署step3、提升推理速度模型量化更换模型fast-tokenizer提高batch_size&#xff08;没用&#x…

第十一章 组合模式

文章目录 前言一、组合模式基本介绍二、UML类图三、完整代码抽象类&#xff0c;所有类都继承此类学校类以父类型引用组合一个学院类学院类以父类型引用组合一个专业类专业类&#xff0c;叶子节点&#xff0c;不能再组合其他类测试类 四、组合模式在JDK集合的源码分析五、组合模…

51单片机(一)软硬件环境和单片机介绍

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其实STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

delta.io 参数 spark.databricks.delta.replaceWhere.constraintCheck.enabled

总结 默认值true 你写入的df分区字段必须全部符合覆盖条件 .option("replaceWhere", "c2 == 2") false: df1 overwrite tb1: df1中每个分区的处理逻辑: - tb1中存在(且谓词中匹配)的分区,则覆盖 - tb1中存在(谓词中不匹配)的分区,则append - tb1中不存…

热闹之后,香港是否会成为Web3的“应许之地”?

出品&#xff5c;欧科云链研究院 作者&#xff5c;Jason Jiang 自从2022年底有关虚拟资产在港发展的政策宣言发布后&#xff0c;香港始终是Web3世界的焦点。当港府官员频繁现身以鼓励Web3创新发展&#xff0c;当数以万计的Web3 Builders时隔三年再次聚首香江&#xff0c;当传…

密码学报Latex模板使用

密码学报Latex模板使用 首先从密码学报下载模板 然后注册overleaf账号 创建新项目&#xff0c;把.zip包导入 修改编译器为XeLaTeX 然后点击重新编译即可

信息安全复习六:公开密钥密码学

一、章节梗概 1.公开密钥密码模型的基本原理 2.两个算法&#xff1a;RSA&D-H算法 主要内容 1.对称密钥密码的密钥交换问题 2.公钥密码模型的提出 3.设计公钥密码的基本要求 4.数字签名 5.RSA算法 6.公钥密码的特征总结 二、对称密钥密码 对称加密算法中&#xff0c;数据…

SpringCloud --- Feign远程调用

一、RestTemplate问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;GitHub - OpenFeign/feign:…

程序员如何提高代码能力

目录 程序员如何提高代码能力——C语言方向阅读优秀的代码不断练习学习新技术与他人合作不断反思和改进 程序员如何提高代码能力——C语言方向 C 是一种功能强大的编程语言&#xff0c;广泛应用于操作系统、数据库、游戏开发等领域。而要成为一名优秀的 C 程序员&#xff0c;不…