从零开始搭建博客网站-----构建项目

news2024/9/28 23:30:35

构建项目

视频参考链接

  1. 构建一个项目文件(node为17.16.0版本)
    构建的过程中可能会出现一个选项,选择vue+JavaScript
npm init vite@latest easyblog-front-admin

在这里插入图片描述

  1. 安装相关依赖
cd easyblog-front-admin
npm install

在这里插入图片描述
3. 运行

npm run dev

在这里插入图片描述
在这里插入图片描述
好了,一个vue项目就算新建完成了。

清理一下新建的项目的内容

  1. app.vue
    在这里插入图片描述
  2. 建立路由文件并安装路由
    在这里插入图片描述
  3. 在router下新建index.js文件,并写如下内容
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
    {}
];
//这里不是通过new来创建,通过createRouter 方法创建,使用的模式不是通过mode来定义
const router = createRouter({
    routes,
    history: createWebHistory(),
})

export default router
  1. 修改main.js文件,引用router
    在这里插入图片描述
  2. 配置代码片段补全
    参考链接
    在这里插入图片描述
    需要补全的文件有三个,文件内容如下:
    vue.json
{
		"Print to console": {
		  "prefix": "vue3",
		  "body": [
			"<template>",
			"  <div></div>",
			"</template>",
			"",
			"<script setup>",
			"",
			"</script>",
			"",
			"<style lang=\"scss\" scoped>",
			"</style>",
		],
		  "description": "Log output to console"
		}
	
}

vue-html.json

{
	"el-form模板": {
		"prefix": "el-form",
		"description": "创建el-form",
		"body": [
			"<el-form",
			"  :model=\"formData\"",
			"  :rules=\"rules\"",
			"  ref=\"formDataRef\"",
			"  label-width=\"80px\"",
			">",
			"<!--input输入-->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-input clearable placeholder=\"提示信息\" v-model=\"formData.\"></el-input>",
			"  </el-form-item>",
			"<!--textarea输入-->",
			"  <el-form-item",
			"    label=\"\"",
			"    prop=\"\"",
			"    clearable",
			"    placeholder=\"提示信息\"",
			"    type=\"textarea\"",
			"    :rows=\"5\"",
			"    :maxlength=\"150\"",
			"    resize=\"none\"",
			"    show-word-limit",
			"    v-model=\"formData.\"",
			"  >",
			"  </el-form-item>",
			"<!-- 单选 -->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-radio-group v-model=\"formData.\">",
			"      <el-radio :label=\"值1\">显示信息</el-radio>",
			"      <el-radio :label=\"值2\">显示信息</el-radio>",
			"    </el-radio-group>",
			"  </el-form-item>",
			"<!-- 下拉框 -->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-select clearable  placeholder=\"提示信息\" v-model=\"formData.\" ,>",
			"      <el-option :value=\"值1\" label=\"显示信息\"></el-option>",
			"      <el-option :value=\"值2\" label=\"显示信息\"></el-option>",
			"    </el-select>",
			"  </el-form-item>",
			"</el-form>",
		]
	},
	"el-input模板": {
		"prefix": "el-input",
		"description": "创建el-input",
		"body": [
			"<!--input输入-->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-input clearable placeholder=\"提示信息\" v-model=\"formData.\"></el-input>",
			"  </el-form-item>",
		]
	},
	"el-textarea模板": {
		"prefix": "el-textarea",
		"description": "创建el-input",
		"body": [
			"<!--textarea输入-->",
			"<el-form-item",
			"   label=\"\"",
			"   prop=\"\"",
			"   clearable",
			"   placeholder=\"提示信息\"",
			"   type=\"textarea\"",
			"   :rows=\"5\"",
			"   :maxlength=\"150\"",
			"   resize=\"none\"",
			"   show-word-limit",
			"   v-model=\"formData.\"",
			" >",
			"</el-form-item>",
		]
	},
	"el-radio模板": {
		"prefix": "el-radio",
		"description": "创建el-radio",
		"body": [
			"<!-- 单选 -->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-radio-group v-model=\"formData.\">",
			"      <el-radio :label=\"值1\">显示信息</el-radio>",
			"      <el-radio :label=\"值2\">显示信息</el-radio>",
			"    </el-radio-group>",
			"  </el-form-item>",
		]
	},
	"el-select模板": {
		"prefix": "el-select",
		"description": "创建el-select模板",
		"body": [
			"<!-- 下拉框 -->",
			"  <el-form-item label=\"\" prop=\"\" >",
			"    <el-select clearable  placeholder=\"提示信息\" v-model=\"formData.\" ,>",
			"      <el-option :value=\"值1\" label=\"显示信息\"></el-option>",
			"      <el-option :value=\"值2\" label=\"显示信息\"></el-option>",
			"    </el-select>",
			"  </el-form-item>",
		]
	},
}

javascript.lson

{
	"dialog弹窗配置": {
		"prefix": "dialogConfig",
		"description": "弹窗config配置",
		"body": [
			"const dialogConfig = reactive({",
			"  show: false,",
			"  title: \"标题\",",
			"  buttons: [",
			"   {",
			"    type: \"danger\",",
			"    text: \"确定\",",
			"    click: (e) => {",
			"      submitForm();",
			"    },",
			"  },",
			" ],",
			"});"
		]
	},
	"watch使用": {
		"prefix": "watch",
		"description": "快速实现watch",
		"body": [
			"watch(() => (newVal, oldVal) => {}, { immediate: true, deep: true });",
		]
	}
}
  1. 创建view文件夹,并且创建Index.js文件,Index文件内容如下
    在这里插入图片描述

完成了一个简单的路由映射

涉及的三个文件如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改一下配置文件,对路径进行索引配置


内容如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path"
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    hmr: true,
    port: 3001,
    proxy: {
      '/api': {
        target: "http://localhost:8081/", // 目标代理接口地址
        secure: false,
        changeOrigin: true, // 开启代理,在本地创建一个虚拟服务端
        pathRewrite: {
          '^/api': '/api',
        },
      },
    },
  },
  resolve: {
    // 配置路径别名
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
})

还需要安装path包

 npm install path --save

项目的初始搭建就完成啦!整个过程还算顺利!

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

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

相关文章

反转链表的三种写法

题目链接&#xff1a;https://leetcode.cn/problems/reverse-linked-list/ 方法一&#xff1a;循环&#xff0c;维护好两个节点一个前一个后 class Solution {public ListNode reverseList(ListNode head) {ListNode pre null;ListNode local head;while(local ! null){List…

GUI加分游戏

需求目标 这个简单的游戏窗口包含一个得分标签和一个按钮。每次点击按钮时&#xff0c;得分增加1&#xff0c;并更新得分标签的显示。 效果 源码 /*** author lwh* date 2023/11/28* description 这个简单的游戏窗口包含一个得分标签和一个按钮。每次点击按钮时&#xff0c;…

python爱心代码高级

在Python中&#xff0c;我们可以使用matplotlib库来创建一个更高级的爱心图形。以下是一个示例&#xff1a; import matplotlib.pyplot as pltimport numpy as npx np.linspace(-2, 2, 1000)y1 np.sqrt(1-(abs(x)-1)**2)y2 -3*np.sqrt(1-(abs(x)/2)**0.5)fig, ax plt.subp…

Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

CentOS 系列:CentOS 7文件系统的组成

CentOS 7文件系统的组成 文件系统的组成Linux的一些重要目录文件和目录名主机名文件权限绝对路径和相对路径绝对路径相对路径 文件系统的组成 一切从根开始 文件路径中只有第一个/是根目录&#xff0c;后面的/是分隔符 文件名区分大小写 除斜线(/)以外&#xff0c;其他的字符…

基于HTML+CSS+JavaScript的登录注册界面设计

一、界面效果: 二、HTML代码: 登录注册html: 登录成功html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <h1>登录成功!</h1> </body> <…

共筑关基安全防线,开源网安加入中关村华安关键信息基础设施安全保护联盟

近日&#xff0c;开源网安正式加入“中关村华安关键信息基础设施安全保护联盟”&#xff08;以下简称&#xff1a;关保联盟&#xff09;成为会员单位&#xff0c;进一步加强与行业内重要机构、企业的协同合作&#xff0c;推动关键信息基础设施安全保护领域的生态建设。 未来&am…

【vue ui 一直卡在 Starting GUI..】

vue ui 解决问题 1.如果项目一直卡在 Starting GUI..2.解决方法 (切换数据源)3.成功解决 1.如果项目一直卡在 Starting GUI… 2.解决方法 (切换数据源) 直接在cmd中输入如下 npm config set registry http://registry.npm.taobao.org/3.成功解决

免单优选模式,新型电商革命的未来趋势!

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 在…

Go字符串类型

一、字符串 1、字符串 Go 语言里的字符串的内部实现使用 UTF-8 编码字符串带的值为双引号&#xff08;"&#xff09;中的内容&#xff0c;可以在 Go 语言的源码中直接添加非ASCII 码字符 s1 : "hello" s2 : "您好" 2、字符串转义符 Go 语言的字符…

String类讲解(1)

&#x1f435;本篇文章将讲解String类及其包含的方法 一、介绍String类 String属于引用类型&#xff0c;String类是Java的一个内置类&#xff0c;用于表示字符串&#xff0c;String类中具有许多方法&#xff0c;可以用来操作和处理字符串 二、字符串的构造 下面介绍三种构造字…

如何迁移数据到水经微图64位版?

我们在《为什么要升级水经微图到64位&#xff1f;》一文中&#xff0c;为大家分享了升级水经微图到64位的原因。 这里&#xff0c;我们再为大家分享一下在哪些情况下升级需要迁移已标注的数据&#xff0c;以及如何迁移已标注绘制的数据到水经微图64位中。 哪些情况需要迁移数…

Webshell混淆免杀的一些思路

简介 为了避免被杀软检测到&#xff0c;黑客们会对Webshell进行混淆免杀。本文将介绍一些Webshell混淆免杀的思路&#xff0c;帮助安全人员更好地防范Webshell攻击。静态免杀是指通过对恶意软件进行混淆、加密或其他技术手段&#xff0c;使其在静态分析阶段难以被杀毒软件或安…

基于oracle数据库的PLSQL编程以及存储过程的创建和使用

PL/SQL编程 declare begindbms_output.put_line(helloworld!);-- line表示换行 end;set serveroutput on; 开启打印输出 / 表示结束变量的声明与赋值 declarev_name varchar2(20) : 张三;v_sal number;v_addr varchar2(200); begin-- 直接赋值v_sal : 1111;-- 语句赋值selec…

继承JsonSerializer+注解实现自定义数据脱敏方案

1、数据脱敏 数据脱敏是一种保护隐私数据的技术&#xff0c;通过将敏感信息转化为非敏感信息来实现对数据的保护&#xff0c;以保护敏感隐私数据的可靠性和安全性。 数据脱敏可以分为可恢复和不可恢复两类: 可恢复类可以通过一定的方式恢复成原来的敏感数据。不可恢复类则无…

UTONMOS:元宇宙时代已经来临

当我们站在这个新的人工智能时代的十字路口&#xff0c;不可避免地要面对一个问题&#xff1a;在这个技术革新的大潮中&#xff0c;区块链技术还有没有生存和发展的空间&#xff1f;本文将深入探讨这个问题&#xff0c;分析区块链在人工智能时代的优势、挑战以及未来的可能性。…

二十章多线程

概念 有很多工作是可以同时完成的&#xff0c;这种思想放在Java中被称为并发&#xff0c;并发完成每一件事被称为线程。 程序员可以在程序中执行多个线程&#xff0c;每一个线程完成一个功能//与其他线程并发执行&#xff0c;这种机制被称为多线程&#xff0c;并不算所有编程…

Java 之 lambda 表达式(二)---- Stream 操作 API

目录 一. 前言 二. Stream 创建 2.1. 使用集合来创建 Stream 2.2. 使用数组创建 Stream 2.3. 由值创建 Stream 2.4. 由函数创建无限流 Stream 2.5. 代码示例 三. Stream 操作 3.1. 中间型操作 3.1.1. filter() 3.1.2. map() 3.1.3. mapToInt()、mapToLong()、mapTo…

ESP32-Web-Server编程- JS 基础5

ESP32-Web-Server编程- JS 基础5 概述 JS 编程内容颇多&#xff0c;我们提供一些简单的示例&#xff0c;先玩再学&#xff0c;边玩边学。 示例1-演示通过 JS 进行温度转换 资源链接 对应示例的 code 链接 &#xff08;点击直达代码仓库&#xff09; 示例2-增加网页弹窗 演…

【数据结构—单链表的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 链表的概念及结构 2. 单链表的实现 2.1单链表头文件——功能函数的定义 2.2单链表源文件——功能函数的实现 2.3 单链表源文件——功能的测试 3.具体的理解操作…