vue3 项目篇商场 之 初始化项目

news2024/11/15 17:26:11

目录

  • vue3 项目篇商场 之 初始化项目
    • 1:安装 rem 适配
      • src 同级目录下创建 postcss.config.js
      • main.ts
    • 2 :使用字体图标
      • 加字体图标 ( Symbol 这个选项)
      • public / index.html
      • 使用
      • 效果
    • 3 sass
    • 4:vant3引入 按需引入 ( 非 vite )
      • 4-1 babel.config.js
      • 4-2 src同级目录 创建 config / vant.config.js
      • 4-3 main.ts
      • 4.4 shims-vue.d.ts
    • 5 底部组件的封装
      • compontes / Footer.vue
      • 使用组件
      • 效果

vue3 项目篇商场 之 初始化项目

1:安装 rem 适配

  • yarn add postcss-pxtorem@5.11 amfe-flexible -S
  • amfe-flexible作用
    • 主要是将 1rem 设为 viewWidth / 10

src 同级目录下创建 postcss.config.js

/* 需要依赖:lib-flexible、postcss-pxtorem */
module.exports = {
  plugins: {
      autoprefixer: {},
      "postcss-pxtorem": {
          rootValue: 37.5, // 75表示750设计稿,37.5表示375设计稿
          propList: ["*"],
      },
  },
};

main.ts

import 'amfe-flexible'

2 :使用字体图标

加字体图标 ( Symbol 这个选项)

在这里插入图片描述

public / index.html

<script src="http://at.alicdn.com/t/c/font_3864675_2kcifc1fytt.js"></script>

使用

    <svg class="icon" aria-hidden="true">
      <use xlink:href="#icon-xiajiantou"></use>
  </svg>

效果

在这里插入图片描述

3 sass

  • yarn add scss sass-loader

4:vant3引入 按需引入 ( 非 vite )

  • yarn add i vant@next -S
  • 安装:`npm i babel-plugin-import -D
  • 安装:`yarn add unplugin-auto-import -D

4-1 babel.config.js

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  "plugins": [
    [
      "import",
      {
        "libraryName": "vant",
        "libraryDirectory": "es",
        "style": true
      }
    ]
  ]
}

4-2 src同级目录 创建 config / vant.config.js

import "vant/lib/index.css";
import { Button } from "vant";
const componnets = [Button];
export function vant(app) {
  componnets.forEach((item) => {
    app.use(item);
  });
}

4-3 main.ts

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "amfe-flexible"; // 引入rem适配
import "./assets/css/reset.css"; // 重置样式

// import "vant/lib/index.css"; // 全局引入
// import { Button } from 'vant';  // 全局引入

const app = createApp(App);
import { vant } from "@/config/vant.config.js";
vant(app);
// createApp(App).use(store).use(router).mount("#app");
app.use(store).use(router).mount("#app");

4.4 shims-vue.d.ts

  • 由于main.ts 引入js 会报错 ,需要 添加 declare module ‘*.js’
/* eslint-disable */
declare module '*.vue' {
  declare module '@'

  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}
declare module '*.js'

5 底部组件的封装

compontes / Footer.vue

<template>
  <div class="footer">
    <div class="footer-item">
      <router-link to="/home" class="nav-link" active-class="nav-active"
        ><van-icon name="wap-home-o" size="30" />首页</router-link
      >
    </div>
    <div class="footer-item">
      <router-link to="/cart" class="nav-link" active-class="nav-active"
        ><van-icon name="shopping-cart-o" size="30" />购物车</router-link
      >
    </div>
    <div class="footer-item">
      <router-link to="/order" class="nav-link" active-class="nav-active"
        ><van-icon name="comment-o" size="30" />订单</router-link
      >
    </div>
    <div class="footer-item">
      <router-link to="/mine" class="nav-link" active-class="nav-active"
        ><van-icon name="friends-o" size="30" />我的</router-link
      >
    </div>
  </div>
</template>

<script setup lang="ts" name="Footer">
import {} from "vue";
</script>

<style lang="scss" scoped>
.footer {
  display: flex;
  background: #fff;
  border-top: 0.5px solid #ccc;
  .footer-item {
    flex: 1;
    .nav-link {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      color: #000;
    }
    .nav-active {
      color: red;
    }
  }
}
</style>

使用组件

<template>
  <div class="home">
    home
    <div class="content">
      内容
    </div>
    <Footer></Footer>
  </div>
</template>

<script setup lang="ts" name='Home'>
import { } from 'vue'
import Footer from "@/components/Footer.vue"
</script>

<style  lang="scss" scoped>
.home {
  display: flex;
  flex-flow: column;
  height: 100%;
  .content {
    flex: 1;
    overflow: auto;
  }
}
</style>

效果

在这里插入图片描述

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

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

相关文章

2022年,开源社最亮的星

开源社成立于 2014 年&#xff0c;是由志愿贡献于开源事业的个人成员&#xff0c;依 “贡献、共识、共治” 原则所组成&#xff0c;始终维持厂商中立、公益、非营利的特点&#xff0c;是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。本次年度评…

常用的专业数据恢复软件有哪些?恢复数据就看这10个!

互联网时代&#xff0c;我们都习惯使用电脑来进行办公&#xff0c;电脑里面都保存着我们很多数据。数据的日积月累&#xff0c;会导致电脑的运行速度减缓&#xff0c;为此我们都会定期对电脑进行清理。 如果在清理过程中&#xff0c;不小心误删或者格式化了数据&#xff0c;有…

漏洞挖掘之信息收集

简介 对单一指定目标网站进行黑盒测试&#xff0c;最重要的就是信息收集&#xff0c;因为网站管理员肯定会在用户经常访问的主网站进行经常维护&#xff0c;而那些子域名&#xff0c;没有什么人访问的&#xff0c;可能就会忘记维护&#xff0c;挖洞的突破点大都在于子域名上&am…

Android/Linux 子系统Graphics图形栈入门普法介绍

Android/Linux 子系统Graphics图形栈入门普法介绍 写在最前面 由于工作原因&#xff0c;最近在公司做了一个关于Android/Linux 子系统Graphics图形栈入门相关知识的培训介绍&#xff0c;个人感觉对于想要了解入门这块的朋友还是有一定帮助的。由于博客不能直接放入ppt&#xff…

Spring AOP源码:代理的创建过程

前言 上篇文章讲解了AOP解析工作&#xff0c;将配置文件解析并封装成beanDefinition&#xff0c;由于配置文件中有5个通知方法&#xff0c;before、after、around、after-returning、after-throwing&#xff0c;这里会将其解析成5个advisor通知类。 <?xml version"1…

opencv——图像阈值设定及常见的滤波操作

1、图像阈值ret,dstcv2.threshold(src,thresh,maxval,type)src:输入图&#xff0c;只能是单通道图&#xff0c;也就是灰度图。thresh:阈值。maxval:当像素超过了阈值&#xff0c;所赋予的值。type:二值化操作的类型&#xff0c;包括binary&#xff0c;binary_iny,trunc,tozero,…

Python编程 闭包

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;b网络豆的主页​​​​​​ 目录 前言 一.闭包 1.什么是闭包 前景引入&#xff1a; 2.闭包的定义需要满足以下…

Redis序列化、乱码问题

Redis序列化问题 每当初学者学习Redis&#xff0c;并且使用SpringBoot整合Redis的时候&#xff0c;总会看到别人使用这种东西—配置类&#xff0c;然后自己又看不懂&#xff0c;oh&#xff0c;fuck&#xff01;&#xff01; 这是为什么&#xff0c;为什么要有这个配置类&…

Pytorch优化器全总结(四)常用优化器性能对比 含代码

目录 写在前面 一、优化器介绍 1.SGDMomentum 2.Adagrad 3.Adadelta 4.RMSprop 5.Adam 6.Adamax 7.AdaW 8.L-BFGS 二、优化器对比 优化器系列文章列表 Pytorch优化器全总结&#xff08;一&#xff09;SGD、ASGD、Rprop、Adagrad Pytorch优化器全总结&#xff08;二…

设计模式学习(七):Factory Method工厂模式

目录 一、什么是Factory Method模式 二、Factory Method示例代码 2.1 类之间的关系 2.2 Product类 2.3 Factory类 2.4 IDCard类 2.5 IDCardFactory类 2.6 用于测试的Main类 2.7 运行结果 三、拓展思路的要点 3.1 框架与具体加工 3.2 使用模式与开发人员之间的沟通 …

(12)go-micro微服务JWT跨域认证

文章目录一 JWT介绍二 JWT优缺点三 JWT使用1. 导包和数据定义2.生成JWT3.解析JWT4.完整代码四 最后一 JWT介绍 JWT 英文名是 Json Web Token &#xff0c;是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范&#xff0c;经常用在跨域身份验证。 JWT 以 JS…

拐点检测常用算法总结

目录概览问题定义符号定义研究方法损失函数概览 问题定义 拐点检测名为 change point detection&#xff0c;对于一条不平缓的时间序列曲线&#xff0c;认为存在一些时间点 (t1,t2,...,tk)( t_1 , t_2 , . . . , t_k )(t1​,t2​,...,tk​) &#xff0c;使得曲线在这些点对应…

Java SPI的介绍、JDBC中SPI的应用、自己实现一个SPI应用

目录1. Java SPI介绍2. Java SPI的运行流程3. Java SPI在JDBC中的应用4. Java SPI的三大规范要素5. 自己实现一个SPI应用5.1 Service接口5.2 运营商1的Service Provider5.3 运营商2的Service Provider5.3 手机使用网络1. Java SPI介绍 SPI(Service Provider Interface)是一种基…

在别墅大宅中打造全屋智能,总共需要几步?

关于智能家居&#xff0c;很多读者可能会想起一些不那么愉快的回忆&#xff1a;2014年左右的智能家居浪潮&#xff0c;涌现出了众多带蓝牙互联功能的家电产品&#xff0c;但数据无法互联互通、单品体验升级有限&#xff0c;加上一些企业竞争失败产品不再更新&#xff0c;留给消…

EXCEL工具介绍

目录1. 锁定功能2. 固定1. 锁定功能 锁定&#xff1a;F4 公式引用单元格&#xff0c;有“相对引用”与“绝对引用” 美元符号“ $ ”在excel公式中的作用是在“绝对引用”时&#xff0c;锁定行号或列标&#xff08;单元格地址由列标行号组成&#xff0c;如A1&#xff0c;A为列…

国产软件不惧微软,WPS力扛大旗,新型办公软件争相助力

金山作为程序员的“黄埔军校”&#xff0c;输入了一批批互联网大佬&#xff0c;小米的雷军、哔哩哔哩的陈睿、蓝港互动的王峰等都师出金山。WPS作为金山拳头作品&#xff0c;有着“国民软件”美誉&#xff0c;功能强大&#xff0c;使用体验一点不输微软word&#xff0c;然而有一…

打工人必学的法律知识(三)——《中华人民共和国劳动争议调解仲裁法》

PS &#xff1a; 对与日常工作比较紧密的部分做摘录 中华人民共和国劳动争议调解仲裁法http://www.npc.gov.cn/npc/c198/200712/756d4eceb95e420a87c97545a58d931c.shtml 目录 一、调解 二、仲裁 三、申请和受理 四、开庭和裁决 五、附则 第六条 发生劳动争议&#xff0…

python镜像设置

winr 输入 %USERPROFILE% 新建pip目录&#xff0c;目录内新建pip.ini 输入&#xff1a; [global] index-urlhttp://mirrors.aliyun.com/pypi/simple/ trusted-hostmirrors.aliyun.com

计算机网络概括

1 前言计算机网络是指将位于不同地理位置&#xff0c;但具有独立功能的多台设备&#xff0c;通过通信设备和线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件、网络通信协议的协调管理下&#xff0c;实现资源共享和信息传递的计算机系统。简单来说&#xff0c;…

STM32模拟SPI总线读写RFID模块RC522

STM32模拟SPI总线读写RFID模块RC522 RC522是一款NXP 公司的支持ISO14443A协议的高频&#xff08;13.56MHz&#xff09;RFID射频芯片。RFID有ID和IC两种卡应用类型&#xff0c;RC522属于IC卡的应用类型。NFC则属于增强的IC卡类型&#xff0c;支持双向通信和更多类型的协议。 I…