Vue3+vite2 博客前端开发

Posted 程序员阿诺斯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue3+vite2 博客前端开发相关的知识,希望对你有一定的参考价值。

Vue3+vite2 博客前端开发

文章目录

前言

大家是否也想拥有一个属于自己的博客?但是如何去开发博客,怎样去开发一个好看的博客,这应该就是大家思考的问题!下面,我为大家带来了我的博客前端项目,CYBlogView|德尔佐盖特

项目地址https://github.com/itcyy/vueBlog

页面展示

主页

内容页

友链页

音乐挂件

代码设计

卡片设计


html

<template>
<div>
  <div v-for="(item, index) in Data" :key="index" @select="toCardbog(item.url)" style="margin-left: 50px;">
    <RouterLink :to="item.url" target="_blank">
     <el-card class="box-card" shadow="always" >
                    <template #header>
                      <div class="card-header">
                        <span style="color: white;">item.title</span>
                      </div>
                    </template>
                    <div class="text item"> item.data </div>
                    <div class="r">
                        <div class="r">
                            <div class="text "><el-icon><View style="width: 24px;height: 24px;"/></el-icon></div>
                             <div class="num"> item.number </div>
                        </div>
                        <div class="r" style="margin-left: 400px;">
                                <div class="text"><el-icon><Clock style="width: 24px;height: 24px;"/></el-icon></div>
                                 <div class="num"> item.time </div>
                        </div>
                    </div>
                  </el-card>
    </RouterLink>
                   </div>
                    <el-pagination background layout="prev, pager, next" :total="7" style="margin-top: 20px;margin-left: 45%;"/>
</div>
</template>

js

const toCardbog = (url : string) =>
 

const Data = [
  title: "欢迎来到德尔佐盖特",
  data: "欢迎来到德尔佐盖特",
  number: "562",
  time: "2021-10-05",
  url: "/gdufe?id=4"
,
  
    title: "如何用Vue开发前端和网站",
    data: "如何用Vue开发前端和网站...",
    number: "463",
    time: "2022-11-05",
    url:"/article?id=1"
, 
  title: "HarmonyOS APP 开发入门",
  data: "鸿蒙并不是一个单纯的手机操作系统...",
  number: "9313",
  time: "2022-04-13",
  url: "/article?id=2",
, 
  title: "HarmonyOS APP Text 组件",
  data: "鸿蒙并不是一个单纯的手机操作系统...",
  number: "463",
  time: "2022-11-05",
  url: "/article?id=3"
]

css

.c
    display: flex;
    flex-direction: column;

.card-header 
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 1;
  user-select: none;


.text 
  font-size: 14px;
  height: 20px;
  color: white;
  user-select: none;


.item 
  margin-bottom: 18px;


.box-card 
  width: 680px;
  margin-top: 20px;
  background-color: #3021211d;
  border-color: #1f1f1f;
  z-index: 33;

.eye-box
    display: flex;
    flex-direction: row;
    user-select: none;

.num
    margin-top: -5px;
  color: white;
  user-select: none;

.r
    display: flex;
    flex-direction: row;

背景(Particles.js粒子效果)

html

<div>
        <Particles id="tsparticles" 
        :particlesInit="particlesInit" 
        :particlesLoaded="particlesLoaded" 
        :options="options"
        style="z-index: -1;" />
    </div>

js

import  reactive  from 'vue'
import  loadFull  from "tsparticles"
import type  Engine  from 'tsparticles-engine'

const particlesInit = async (engine: Engine) => 
    await loadFull(engine)


const particlesLoaded = async (container: any) => 
    console.log('Particles container loaded', container)


const options = reactive(
    background: 
        color: 
            value: '#111014' // 粒子颜色
        
    ,
    fpsLimit: 60,
    interactivity: 
        events: 
            onClick: 
                enable: true,
                mode: 'push' // 可用的click模式有: "push", "remove", "repulse", "bubble"。
            ,
            onHover: 
                enable: true,
                mode: 'grab' // 可用的hover模式有: "grab", "repulse", "bubble"。
            ,
            resize: true
        ,
        modes: 
            bubble: 
                distance: 400,
                duration: 2,
                opacity: 0.8,
                size: 40
            ,
            push: 
                quantity: 4
            ,
            repulse: 
                distance: 200,
                duration: 0.4
            
        
    ,
    particles: 
        color: 
            value: '#ffffff'
        ,
        links: 
            color: '#ffffff', // '#dedede'。线条颜色。
            distance: 150, // 线条长度
            enable: true, // 是否有线条
            opacity: 0.5, // 线条透明度。
            width: 1 // 线条宽度。
        ,
        collisions: 
            enable: false
        ,
        move: 
            direction: 'none',
            enable: true,
            outMode: 'bounce',
            random: false,
            speed: 4, // 粒子运动速度。
            straight: false
        ,
        number: 
            density: 
                enable: true,
                area: 800
            ,
            value: 80 // 粒子数量。
        ,
        opacity: 
            value: 0.5 // 粒子透明度。
        ,
        shape: 
            type: 'circle' // 可用的粒子外观类型有:"circle","edge","triangle", "polygon","star"
        ,
        size: 
            random: true,
            value: 5
        
    ,
    detectRetina: true
)

右侧个人信息与公告

html

<div class="app">
    <el-card class="box-card" shadow="always">
            <div><img style="width:180px;height: 180px;" src="./../assets/img/5.png"></div>
            <div><p class="text">阿诺斯·福尔迪哥德</p></div>
            <div>
            <p class="bar_text">心之所向,皆为华夏</p>
            </div>
        </el-card>
        <el-card class="box-card" shadow="always" style="height: 180px;">
                <div><p style="color: aliceblue;font-family: 华文行楷;font-size: 25px;">公告</p></div>
                <div><p style="color: white;">有问题可添加QQ咨询,QQ:2817179154</p></div>
            </el-card>
    </div>

css

.app
   display: flex;
   flex-direction: column;
   margin-left: 50px;

.text 
   font-size: 14px;


.item 
   padding: 18px 0;


.box-card 
   width: 210px;
   margin-left: 20px;
   background-color: #3021211d;
   margin-top: 20px;
   height: 280px;
   display: flex;
   border-color:#1f1f1f;
   justify-content: space-around;

.text
   font-size: 18px;
   font-family:华文行楷;
   text-align: center;
   color: white;

.textpo
   font-family: 楷体;
   text-align: center;

.bar_text
   font-family: 华文楷体;
   text-align: center;
   margin-top: 20px;
   color: white;
   user-select: none;

内容页

html

    <div id="md">

        <div class="tarmd">
            <MdEditor v-model="text" previewOnly :previewTheme="theme"
                style="padding: 20px 20px 20px 20px;background-color: #55000000;border-radius: 20px;" />
                <UserView></UserView>
        </div>

    </div>

js

import  onMounted  from 'vue';
import  useRouter  from 'vue-router';
import UserView from '../../tool/UserView.vue'
import MdEditor from 'md-editor-v3';
import 'md-editor-v3/lib/style.css';
import setmd from "../../static/index.ts"
const router = useRouter();
let fileid = router.currentRoute.value.query.id
console.log(fileid)
const File = ''
const theme = "mk-cute"
const text = setmd(fileid)
</script>
<style>
#md 
    width: 1200px;
    position: relative;
    top: 80px;

.tarmd
    display: flex;
    flex-direction: row;


img > p
    width: 200%;
    height: 200%;

友链

html

 <div class="top_1">
      <div class="row_f"> 

        <div class="card_g">
            <h1 style="font-family: 华文琥珀;">友情链接</h1>
            <h2 style="font-family: 华文琥珀;margin-top: 20px;margin-bottom: 20px;">框架(1)</h2>
     
            <div class="boxv">
                <div class="box1 v2"><a href="https://cn.vuejs.org/" target="_blank"><img style="opacity: 0.5;width: 210px;height: 140px;border-radius: 10px;z-index: 1;" src="https://img2.baidu.com/it/u=2167395474,3773933499&fm=253&fmt=auto&app=138&f=PNG?w=1018&h=500" ></a>
               </div>
               <p style="text-align: center;font-size: 15px;">Vue3</p>
            </div>
            <h2 style="font-family: 华文琥珀;margin-top: 20px;margin-bottom: 20px;背景
  • 环境准备
  • Vite打包
  • webpack打包
  • 总结
  • 背景

    大家好,我是杜晓帅~,一名Java开发程序员;最近想总结一下前端开发的一些东西,包括项目的打包和如何将后端处理的数据在前端进行一个展示,相信大家学习了这个之后就能自己写一套前后端分离的系统了。而后端我们一般会使用SpringBoot进行开发,直接在IDEA新建SpringBoot项目即可,但是前端的话就需要用到一些工具了,本文我们用Vite和webpack进行前端Vue项目的一个打包,因为目前为止博主也只使用过这两个打包工具,话不多说,让我们开始吧!!!

    环境准备

    准备Node.js和npm即可

    首先这两个东西是打包需要用到的东西,node.js下载官网是:点击跳转 ,因为现在下载的node.js包括了npm,所以算一举两得,一次性就把两个东西全部下载完成了。下载完成之后我们按Win+R打开cmd窗口,输入node -v和npm -v,就能看到我们安装的node.js和npm的版本号了,如果没有版本号,可能是没安装成功,看看有什么文件冲突的地方,要解决一下



    因为博主是很久之前就安装了,所以版本可能和大家不一样,不过这并不影响后续的打包,按自己的版本来就好了😁😁😁

    Vite打包

    首先我们打开cmd窗口,在d盘新建一个文件夹用于存放打包的Vue项目,然后:
    d:
    cd vue_project
    因为我是在d盘创建的vue_project文件夹,所以我先切换为d盘在cd到指定文件夹就好了

    现在就可以利用Vite进行打包工作了,代码已经贴在下面了,大家可以一步一步运行,最后启动项目之后根据给出的地址进行访问即可

    npm init vite-app npm_project(这个是你项目的名字,可以自己命名)
    
    cd npm_project (cd到你刚刚创建的项目文件夹下)
    
    npm install
    
    npm run dev (启动项目)
    


    补充一下如果用yarn打包的话也是差不多的命令,如下:

    yarn create vite-app yarn_project (你定义的项目名)
    
    cd yarn_project (刚刚创建的项目名)
    
    yarn
    
    yarn dev
    

    执行完成之后,启动项目,复制访问地址在浏览器地址页面即可访问成功了,如下图:

    webpack打包

    利用webpack进行打包就会比Vite更慢,因为他需要的东西更多;下面是打包的一些命令,包括切换镜像源使打包速度更快,当我们执行完第三行的时候,会有很多选项,我们直接回车,然后回复的地方直接Yes就好,如下图所示:

    npm install -g cnpm --registry=http://registry.npm.taobao.org  (换成国内的淘宝镜像源,打包速度更快)
    
    cnpm install -g vue-cli 
    
    vue init webpack npm_webpack (自定义自己项目的名称)
    
    cd npm_webpack
    npm install (这个时候这个选项没有,可以直接cd到自己创建的项目启动即可)
    npm run dev  (启动项目)
    
    
    


    完成之后启动就会给出访问的地址,复制地址粘贴到浏览器即可访问,如下图:

    总结

    对于这两者我们看他们的目录结构就知道,Vite更简洁,启动的当然也就更快了;而且Vite是Vue的创始人尤雨溪创建并目前在维护的,所以更适合于Vue一些,目前博主也是会采用Vite去进行打包,这两者具体的差别,大家可以自己去了解了解。
    本文主要是帮博主记录并回顾一下是如何创建(打包)Vue项目的,后续就会更新前端的内容了,毕竟已经打包好了,就可以开始写前端了,如果这篇文章帮助到了你,可以给个支持哦😁😁😁


    以上是关于Vue3+vite2 博客前端开发的主要内容,如果未能解决你的问题,请参考以下文章

    Vite2+TypeScript4+Vue3+vuex4+vueRouter4+elementPlus如何入手开发新项目

    通过Vite2.0创建前端项目(Vue3Vue2React)

    Vue3 + Vite2 + TypeScript 开发复盘总结

    vite2 + vue3实现curd:路由跳转

    vue3+vite2+element-plus+ts搭建一个项目

    Vue3 + Vite2 项目实战复盘总结(干货!)