使用VSC从零开始写一个Vue前端

news2025/2/25 6:15:01

使用Visual Studio Code(VSC)进行Vue开发非常方便,下面是一些基本步骤:

  1. 安装Node.js:Vue.js是基于Node.js的,所以首先需要安装Node.js。你可以从Node.js官方网站(https://nodejs.org)下载适合你操作系统的安装程序,并按照说明进行安装。

  2. 安装Vue CLI:Vue CLI是一个用于快速搭建Vue项目的脚手架工具。在安装Node.js后,打开终端或命令提示符,运行以下命令来全局安装Vue CLI:

npm install -g @vue/cli
  1. 创建Vue项目:在VSC中打开一个新的终端窗口,运行以下命令来创建一个新的Vue项目:
vue create your-project-name

这将提示你选择一些配置选项,例如选择预设配置(默认或手动选择)、使用哪个包管理器(npm 或 Yarn)等。按照自己的需要进行选择。

  1. 打开Vue项目:在VSC的侧边栏中,点击"文件"(File)菜单,选择"打开文件夹"(Open Folder)并导航到你创建的Vue项目文件夹,然后点击"打开"(Open)。

  2. 安装项目依赖:在VSC的终端窗口中,确保路径位于你的Vue项目文件夹下,然后运行以下命令来安装项目所需的依赖:

npm install
  1. 开始开发:现在你可以在VSC中编辑和开发你的Vue项目了。你可以在src目录下找到主要的Vue组件文件,并在这里编写你的代码。在VSC中,你可以使用Vue相关的插件和扩展来提高开发效率,例如Vetur、Vue 3 Snippets等。你可以在VSC的扩展市场中搜索并安装这些插件。

  2. 运行项目:在VSC的终端窗口中,使用以下命令来运行你的Vue项目:

npm run serve

这将启动开发服务器并运行你的Vue应用。你可以在浏览器中访问提供的开发服务器地址(通常是http://localhost:8080)来查看你的应用程序。

  1. 如何查看自己的node.js版本
node --version

1. 如何使用nvm

nvm:Node版本管理器,如果你在同一台机器上同时进行多个项目的开发,并且这些项目对Node.js版本有不同的要求,你可以考虑使用Node版本管理器(如nvm)来方便地切换不同的Node.js版本。使用nvm,你可以在不同的项目中使用不同的Node.js版本,以满足项目的要求。你可以在nvm的官方文档(https://github.com/nvm-sh/nvm)中了解如何安装和使用它。

  1. 安装 NVM:首先,你需要从 NVM 的 GitHub 仓库(https://github.com/nvm-sh/nvm)获取安装脚本。打开终端或命令提示符,运行以下命令来下载并执行安装脚本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

或者,如果你使用的是 Windows 操作系统,可以从 NVM 的 GitHub 仓库下载可执行安装程序并按照说明进行安装。

  1. 重启终端:安装完成后,关闭当前终端窗口,然后重新打开一个新的终端窗口。这样可以使 NVM 的设置生效。

  2. 安装 Node.js 版本:在新打开的终端中,运行以下命令来查看可以安装的 Node.js 版本列表:

nvm ls-remote

这将列出可用的 Node.js 版本。你可以选择一个你想要安装的特定版本,例如:

nvm install 14.17.0

这将安装 Node.js 的 14.17.0 版本。根据你的需求选择一个适当的版本进行安装。

  1. 使用特定版本的 Node.js:一旦你安装了多个 Node.js 版本,你可以在不同的项目中切换使用特定的版本。在终端中,你可以运行以下命令来选择一个已安装的 Node.js 版本:
nvm use 14.17.0

2. 使用Vue绘制几个椭圆形成工作流

  1. MySelfDAG.vue
<template>
   <div class="parent-container">
      <!-- 模板部分 -->
      <div class="bordered-div top-section" >
        <label for="inputText">事件信息:</label>
        <input type="text" id="inputText" v-model="text" >
        <button @click="submit">确定</button>
      </div>
      <div class="bordered-div bottom-section canvas-container">
        <canvas ref="canvas" id="myCanvas" width="3500" height="600"></canvas>
      </div>
   </div>
</template>
  
<script>
  import { postData  } from '../PostApi.js';
//v-text="房屋沉降模块-沉降时点数据导入"
  export default {
    data() {
      return {
        text: '' // 绑定输入文本的数据
      };
    },
    methods: {
      submit() {
        // 在点击确定按钮时执行的操作
        console.log('输入的文本:', this.text);
        this.getDataChangeEvents(this.text);
        // 其他逻辑处理...
      },async getDataChangeEvents(kindname){

        const parsInfo={
          "key": "通用查询-获取事件信息",
          "mapParsInfo": {
            "事件名称":kindname
          }
        }
        const resultdata = await postData (parsInfo);
        this.drawCollection(resultdata.data)

      },drawCollection(eventItems) {
        
        const canvas = this.$refs.canvas;
        const ctx = canvas.getContext('2d');

        // 获取设备的像素比例
        const devicePixelRatio = window.devicePixelRatio || 1;

        // 设置画布的宽度和高度
        const width = canvas.offsetWidth;
        const height = canvas.offsetHeight;

        // 调整画布的像素比例
        canvas.width = width * devicePixelRatio;
        canvas.height = height * devicePixelRatio;
        // 缩放绘图上下文,以适应高分辨率设备
        ctx.scale(devicePixelRatio, devicePixelRatio);
        
        // 清除画布
        ctx.clearRect(0, 0, width, height);

        const horizontalSpacing = 200; // 纵向间距
        const centerY = canvas.height / 2; // 中心点的横坐标

        const startX = (canvas.width / 2 - ( eventItems.length - 1) * horizontalSpacing / 2); // 计算起始点的纵坐标
        
        this.drawGroup(ctx);

        for (let i = 0; i < eventItems.length; i++) {
          const x = startX + i * horizontalSpacing;
          const radius = 40; // 椭圆的半径
          
          ctx.strokeStyle = 'black';
          // 清除填充色
          ctx.fillStyle = 'gray';
          // 绘制椭圆
          ctx.beginPath();
          ctx.ellipse(x+5, centerY+5, radius*1.5, radius, 0, 0, 2 * Math.PI);
          ctx.closePath(); // 闭合路径
          ctx.fill(); // 填充椭圆

          ctx.strokeStyle = 'black';
          // 清除填充色
          ctx.fillStyle = 'blue';
          // 绘制椭圆
          ctx.beginPath();
          ctx.ellipse(x, centerY, radius*1.5, radius, 0, 0, 2 * Math.PI);
          ctx.closePath(); // 闭合路径
          ctx.fill(); // 填充椭圆

          // 设置文字样式
          ctx.font = '12px Arial';
          ctx.fillStyle = 'black';
          ctx.textAlign = 'center'; // 设置文字对齐方式为居中
          ctx.textBaseline = 'middle'; // 设置文字基线为垂直居中
        
          // 绘制文字
          ctx.fillText(eventItems[i].name, x, centerY);
          
          // 绘制箭头连接线
          if (i > 0) {
            ctx.beginPath();
            ctx.moveTo((startX + (i-1) * horizontalSpacing)+(radius*1.5), centerY);
            ctx.lineTo((startX + (i) * horizontalSpacing)-(radius*1.5), centerY);
            ctx.stroke();
          }
        }
      },drawGroup(ctx){
        const startX = 100; // 起始点的 x 坐标
        const startY = 100; // 起始点的 y 坐标
        const width = 500; // 大括号的宽度
        const height = 100; // 大括号的高度
        const radius = 20; // 曲线的半径

        // 绘制左侧曲线
        ctx.beginPath();
        ctx.moveTo(startX, startY);
        ctx.lineTo(startX, startY + height);
        ctx.arc(startX + radius, startY + height, radius, Math.PI, Math.PI * 1.5, false);

        // 绘制右侧曲线
        ctx.arc(startX + width - radius, startY + height, radius, Math.PI * 1.5, Math.PI * 2, false);
        ctx.lineTo(startX + width, startY);
        ctx.stroke();
      },
    },
    mounted() {
      this.canvas = this.$refs.canvas;
      this.context = this.canvas.getContext('2d');
      this.isDrawing = false;
      this.startX = 0;
      this.startY = 0;
      this.width = 0;
      this.height = 0;
    },
  };
</script>
  
<style>
  .bordered-div {
    border: 1px solid black; /* 设置边框样式 */
    padding: 10px; /* 可选:设置内边距 */
  }
  .parent-container {
    display: flex;
    flex-direction: column; /* 将子元素垂直排列 */
    height: 100%; /* 设置父容器高度,确保填充整个容器 */
    overflow: auto;
  }

  .top-section {
    height: 100px; /* 控制上部分的高度 */
  }

  .bottom-section {
    flex-grow: 1; /* 填充剩余的高度 */
  }

  .canvas-container {
    overflow: auto;
  }
</style>
  
  1. PostApi.js
import axios from 'axios';

export async function postData(parsInfo) {
    try {
      const response = await axios.post('xxxxx/defaultSearch',parsInfo);
      // 请求成功,可以从 response 对象中获取数据
      const data = response.data;
      console.log(data);
      return data;
    } catch (error) {
      // 请求失败,可以处理错误信息
      console.error(error);
    }
}

  1. 运行vue
npm run serve

在这里插入图片描述

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

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

相关文章

Acwing.859 Kruskal算法求最小生成树(Kruskal算法)

题目 给定一个n个点m条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G(V,E)&#xff0c;其中V表示图中点的集合&#xff0c;E表示图中边…

Linux - CentOS 二进制安装 MySQL 8.0.31(非常实用)

一、下载 mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz 下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 具体如下图所示&#xff1a; 二、将 mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz 放入到服务器的 /usr/local &#xff08;路径可…

书法vr实景授课极大丰富了艺术家的表现语言

为了加强新形势下中华优秀传统文化教育&#xff0c;探索现代科学技术与传统文化的结合。VR公司深圳华锐视点不断创新VR虚拟现实技术在传统文化方面的体验活动&#xff0c;激发学生对传统文化的学习兴趣&#xff0c;树立民族文化自信!搭建书法授课VR虚拟场景&#xff0c;为学生创…

vue2基础用法原理

本篇转载&#xff1a;http://t.csdn.cn/KtidI 文章目录 1. vue基础知识和原理1.1 初识Vue1.2 模板语法1.3 数据绑定1.4 el与data的两种写法1.5 Vue中的MVVM1.6 数据代理1.7 事件处理1.8 键盘事件1.9 计算属性1.10 监视属性1.11 绑定样式class样式style样式 1.12 条件渲染v-ifv-…

(论文翻译)PRUNING FILTER IN FILTER《滤波器中的剪枝滤波器》

公式不清楚的地方请对照英文原文进行查看&#xff1a;原文链接 ABSTRACT 剪枝已成为现代神经网络压缩和加速的一种非常有效的技术。现有的剪枝方法可分为两大类:滤波器剪枝(FP)和权重剪枝(WP)。与WP相比&#xff0c;FP在硬件兼容性方面胜出&#xff0c;但在压缩比方面失败。为了…

海外APP外包开发第三方支付集成

APP开发过程中有收费功能时就需要集成第三方支付&#xff0c;相比传统的信用卡支付&#xff0c;第三方支付极大的提高了用户的支付便捷度&#xff0c;也推广了第三方支付的使用范围。海外有哪些支付渠道以及如何集成&#xff0c;今天和大家分享这方面的知识&#xff0c;希望对大…

微信小程序canvas生成图片并保存

需求&#xff1a; 做一个类似下图的功能。图片内容是动态的&#xff0c;用canvas画出来&#xff0c;生成临时图片&#xff0c;再保存。 实现&#xff1a; <view class"canvasBox"><canvas canvas-id"myCanvas" class"myCanvas">&l…

Burp的JS API接口过滤插件

Burp的JS API接口过滤插件 过滤js文件中的接口信息&#xff0c;并显示接口内容在js文件中的上下文。从js文件中过滤你需要的敏感信息&#xff0c;且支持在配置文件中自定义检出规则。完全被动检测&#xff0c;不会有任何主动请求行为。防止不可控请求的产生。

前端js react vue怎么实现在线预览doc文档

先说结论&#xff1a; 目前在纯前端层面没有很好的方案&#xff0c;基本都需要服务端的介入。 1.方案一&#xff1a;使用view.officeapps 优点&#xff1a;简单易用&#xff0c;无需配置 缺点&#xff1a;文档需要支持外网访问&#xff0c;且文档会是公开可见的&#xff0c…

skywalking java agent集成

目录 概述 裸机集成 docker集成 k8s集成 高级特性 Trace api Logback traceId协同 跨线程trace 附录 Agent参数 本地缓存队列参数 是否显示Sql参数 其他参数 概述 java 应用skywalking集成主要以java agent形式接入。 官方详细文档点击skywalking-java集成查看。…

负载均衡的知识点

目录 1.负载均衡是什么 2.负载均衡的分类 客户端负载均衡&#xff1a; 服务端负载均衡&#xff1a; 软件实现&#xff1a;根据OSI模型可以分为四层负载均衡和七层负载均衡 硬件实现&#xff1a; 附1&#xff1a;客户端和服务端&#xff1a; 附2&#xff1a;OSI…

备战秋招 | 笔试强训

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。以下哪个选项是正确的&#xff1f; A. %-30.4e B. %4.…

基于DETR的人脸伪装检测

基于DETR的人脸伪装检测 前言前提条件实验环境项目地址LinuxWindows DETR训练自己的数据集修改models/detr.py中的参数进行训练进行预测 相关资源免费获取参考 前言 本文是个人使用DETR训练自己的COCO格式数据集的应用案例&#xff0c;由于水平有限&#xff0c;难免出现错漏&am…

​python接口自动化(二十八)--html测试 报告——下(详解) ​

简介 五一小长假已经结束了&#xff0c;想必大家都吃饱喝足玩好了&#xff0c;那就继续学习吧。一天不学习&#xff0c;自己知道&#xff1b;两天不学习&#xff0c;对手知道&#xff1b;三天不学习&#xff0c;大家知道&#xff1b;一周不学习&#xff0c;智商输给猪。好了开个…

excel怎么样将某列所有单元格中文本的非中文字符或数字或字母全部删除?

目录 1. 简述2. 函数功能及参数介绍&#xff08;1&#xff09;功能&#xff08;2&#xff09;参数介绍 3. 完整VBA代码4. 宏代码使用方法5. 效果图 1. 简述 当我们要处理大量行数的excel数据时候&#xff0c;有时某列中有些行中的单元格内容中含有我们不想要的部分&#xff08…

功率开关集成电路TWH8751路灯自动控制器/双D触发器CD4013路灯控制器电路设计

采用功率开关集成电路TWH8751的路灯自动控制器 本例介绍的光控路灯&#xff0c;在白天不工作&#xff0c;夜晚能自动点亮&#xff0c;可用于街道或农村场院等场合 。 一、电路工作原理 电路原理如图 19 所示。 该光控路灯电路由电源电路和光控电路组成&#xff0c;如图所示…

Latch up (闩锁效应)

Latch-up latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双极性BJT(Bipolar Junction Transistors)相互影响而产生的一低阻抗通路, 它的存在会使VDD和GND之间产生大电流。    In the simplest way, the latch-up issue can be defined as a …

ModaHub魔搭社区:AI原生云向量数据库MIlvus Cloud实现 HNSW

实现 HNSW HNSW 并不简单,因此我们只在此处进行最简单的实现。像之前一样,我们首先创建一组(128 维)向量的数据集: >>> import numpy as np >>> dataset = np.random.normal(size=(1000, 128)) 第一步是构建 HNSW 索引。为此,我们需要将每个向量添加…

前端基础知识学习——圆角、透明圆角(十四)

文章目录 圆角方法一圆角方法二&#xff08;推荐&#xff09;透明圆角方法一透明圆角方法二&#xff08;推荐&#xff09; 圆角方法一 /* 添加圆角 方法1&#xff1a;border-radius cs3不兼容*/.bo{width: 100px; height: 200px;border: 1px solid #e5e5e5;margin:30px aut…

DMA-GD32

DMA-GD32 DMA模块包括DMA控制器、主模式控制电路、从模式控制电路和数据通道FIFOS. 主、从模式控制电路分别负责控制DMA模块在PCle总线的主模式和从模式下的工作状态 FIFOS实现数据缓冲通道,对总线端的高速信号和外设上本地低速信号进行速率匹配和缓冲 DMA模块的上述结构使得它…