文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Vue+Element做个人中心

2023-06-30 23:58

关注

这篇文章主要讲解了“怎么使用Vue+Element做个人中心”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Vue+Element做个人中心”吧!

先看看效果:

怎么使用Vue+Element做个人中心

怎么使用Vue+Element做个人中心

怎么使用Vue+Element做个人中心

后面加个路由超链接,嘿嘿~

个人空间

我们先来聊聊主要的这个玩意,也就是咱们的入口。

怎么使用Vue+Element做个人中心

对应的路由是:

这里面的组件可不少,里面还有很多分组件,没写,有空我就写写。

  {      path: '/myspace',      name: 'myspace',      component: myspace,      children:[        {          path: 'showinfo',          name: 'showinfo',          component: showinfo        },        {          path: 'infoeditor',          name: 'infoeditor',          component: infoeditor,        },        {          path: 'countcontrol',          name: 'countcontrol',          component: countcontrol,        },        {          path: 'imageUp',          name: 'imageUp',          component: imageUp        },        {          path: 'privateAarticle',          name: 'privateAarticle',          component: privateAarticle,        },        {          path: 'publicArticle',          name: 'publicArticle',          component: publicArticle,        },        {          path: '',          name: 'allArticle',          component: allArticle,        },        {          path: 'columnArticle',          name: 'columnArticle',          component: columnArticle        },        {          path: 'statusArticle',          name: 'statusArticle',          component: statusArticle        },        {          path: 'mycolums',          name: 'mycolums',          component: mycolums        },        {          path: 'myjoincolums',          name: myjoincolums,          component: myjoincolums        },        {          path: 'collectionAns',          name: collectionAns,          component: collectionAns        },        {          path: 'collectionArticle',          name: collectionArticle,          component: collectionArticle        },        {          path: 'collectionColums',          name: collectionColums,          component: collectionColums        }      ]    },

个人空间导航代码如下:

<template>  <div>    <el-container >      <el-aside width="200px" >        <el-menu :default-openeds="['1']">          <el-submenu index="1">            <template slot="title">              <i class="el-icon-postcard"></i>信息修改</template>            <el-menu-item-group>              <router-link class="alink" to="/myspace/showinfo">                <el-menu-item index="1-1">                  基本信息                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/infoeditor">                <el-menu-item index="1-2">                  信息修改                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/imageUp">                <el-menu-item index="1-3">                  头像修改                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/countcontrol">                <el-menu-item index="1-4">                    账号管理                </el-menu-item>              </router-link>            </el-menu-item-group>          </el-submenu>          <el-submenu index="2">            <template slot="title">              <i class="el-icon-postcard"></i>文章管理</template>            <el-menu-item-group>              <router-link class="alink" to="/myspace/privateAarticle">                <el-menu-item index="2-1">                  私密文章                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/publicArticle">                <el-menu-item index="2-2">                  PUBLIC                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace">                <el-menu-item index="2-3">                  全部文章                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/columnArticle">                <el-menu-item index="2-4">                  我的专栏                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/statusArticle">                <el-menu-item index="2-5">                  审核状态                </el-menu-item>              </router-link>            </el-menu-item-group>          </el-submenu>          <el-submenu index="3">            <template slot="title">              <i class="el-icon-edit"></i>文章书写            </template>            <el-menu-item-group>              <router-link class="alink" to="/writeblog">                <el-menu-item index="3-1">                  文章书写                </el-menu-item>              </router-link>            </el-menu-item-group>          </el-submenu>          <el-submenu index="4">            <template slot="title">              <i class="el-icon-postcard"></i>社区</template>            <el-menu-item-group>              <router-link class="alink" to="/myspace/myjoincolums">                <el-menu-item index="4-1">                  我的社区                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/mycolums">                <el-menu-item index="4-2">                  我创建的社区                </el-menu-item>              </router-link>            </el-menu-item-group>          </el-submenu>          <el-submenu index="5">            <template slot="title">              <i class="el-icon-star-on"></i>收藏</template>            <el-menu-item-group>              <router-link class="alink" to="/myspace/collectionAns">                <el-menu-item index="5-1">                  问答收藏                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/collectionArticle">                <el-menu-item index="5-2">                  文章收藏                </el-menu-item>              </router-link>              <router-link class="alink" to="/myspace/collectionColums">                <el-menu-item index="5-3">                  社区收藏                </el-menu-item>              </router-link>            </el-menu-item-group>          </el-submenu>        </el-menu>      </el-aside>      <el-container        style="background-image: url(/static/logo/noticesbg.jpg);        background-repeat: no-repeat;        background-size:100% 100%;        "      >        <el-main>          <div >            <router-view></router-view>          </div>        </el-main>      </el-container>    </el-container>  </div></template><script>export default {  name: "myspace",  data() {    return {    }  },}</script><style scoped>.el-header {  background-color: #e5efe2;  color: #333;  line-height: 60px;}.el-aside {  color: #333;}.router-link-active {  text-decoration: none;}.alink{  text-decoration: none;}</style>

信息修改

由于每一个的组件都有一个分类,每一个分类的实现都是类似的,所以我们挑三个说说就行了,文章书写是一个超链接,会通向这儿,这个先去说过,我就不重复了。

怎么使用Vue+Element做个人中心

基本信息实现

这个是展示,没什么copy组件的事儿

<template><div>    <div  >      <img                src="/static/temporary/headpic.jpg"        class="image"      >    </div>  <br>  <br>  <el-descriptions :column="1" border>    <el-descriptions-item label="用户名" v-model="username" ><p class="message">{{username}}</p></el-descriptions-item>    <el-descriptions-item label="邮箱号" v-model="email" class="message"><p class="message">{{email}}</p></el-descriptions-item>    <el-descriptions-item label="白洞值" v-model="level" class="message"><p class="message">{{level}}</p></el-descriptions-item>    <el-descriptions-item label="座右铭" v-model="motto" class="message" ><p class="message">{{motto}}</p></el-descriptions-item>    <el-descriptions-item label="居住地" v-model="city" class="message"><p class="message">{{city}}</p></el-descriptions-item>  </el-descriptions></div></template><script>export default {  name: "showinfo",  data(){    return{      username: "Huterox",      email: 18100000000,      motto: "除非我不想赢,否则没人能让我输",      city: "九江",      level: 9999    }  }}</script><style scoped>.message{  width: 20em;  overflow: hidden;  text-overflow:ellipsis;  white-space: nowrap;}</style>

信息修改实现

这个也没啥就是这个

怎么使用Vue+Element做个人中心

<template><div >  <el-form :model="ruleForm"           :rules="rules"           ref="ruleForm"           label-width="100px"           class="demo-dynamic"  >    <el-form-item            label="昵称修改"      prop="name"      :rules="[          { required: true, message: '请注意昵称长度在3~15个字符', trigger: 'blur' },          { min: 3, max: 15, message: '长度在 3 到 5 个字符', trigger: 'blur' }        ]"    >      <el-input v-model="ruleForm.name"></el-input>    </el-form-item>    <br>    <el-form-item label="性别" prop="region">      <el-select v-model="ruleForm.sex" placeholder="请选择性别">        <el-option label="男" value="shanghai"></el-option>        <el-option label="女" value="beijing"></el-option>      </el-select>    </el-form-item>    <el-form-item            label="城市"      prop="city"      :rules="[          { required: false, message: '请注意长度在3~20个字符', trigger: 'blur' },          { min: 3, max: 20, message: '长度在 3 到 5 个字符', trigger: 'blur' }        ]"    >      <el-input v-model="ruleForm.city"></el-input>    </el-form-item>    <el-form-item            prop="email"      label="邮箱"      :rules="[      { required: true, message: '请输入邮箱地址', trigger: 'blur' },      { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }    ]"    >      <el-input v-model="ruleForm.email"></el-input>    </el-form-item>    <el-form-item            label="座右铭"      prop="motto"      :rules="[          { required: false, message: '请输入座右铭', trigger: 'blur' },          { min: 0, max: 150, message: '请注意长度不能超过150个字符', trigger: 'blur' }        ]"    >      <el-input type="textarea"  v-model="ruleForm.motto"></el-input>    </el-form-item>    <el-form-item>      <el-button type="primary" @click="submitForm('ruleForm')">提交修改</el-button>    </el-form-item>  </el-form></div></template><script>export default {  name: "infoeditor",  data() {    return {      ruleForm: {        name: '',        sex: '男',        email: '',        city: '',        motto: '',      },    };  },  methods: {    submitForm(formName) {      this.$refs[formName].validate((valid) => {        if (valid) {          alert('submit!');        } else {          console.log('error submit!!');          return false;        }      });    },  }}</script><style scoped></style>

头像修改实现

然后是我的祖传代码,不过这次优化了一下

<template>  <div>    <div class="show">      <div class="show1" >        <img ref="showing" src="" id="showimg" >      </div>      <div class="upload">图片选择      <input multiple="multiple" id="file" ref="file"             accept=".jpg,.png"             @click="changepic(this)" type="file" name="userpic"             style="              position: absolute;              overflow: hidden;              right: 0;              top: 0;              opacity: 0;             width: 100%;             height: 32px;             "      >      </div>      <button @click="subchangepic()" >确定</button>    </div>  </div></template><script>export default {  name: "imageUp",  data(){    return {      filename: null,      f64: null,      loadImage: ""    }  },  methods: {    changepic() {      document.getElementById('file').onchange = function () {        var imgFile = this.files[0];        var fr = new FileReader();        fr.onload = function () {          let showing = document.getElementById('showimg')          let img = fr.result;          this.f64 = img;          this.filename = imgFile.name          showing.src = img;          showing.style.height = "220px";          showing.style.width = "220px";          showing.style.borderRadius = "200px"        };        fr.readAsDataURL(imgFile);      }    },  }}</script><style scoped>.upload{  margin-left: 20%;  width: 12%;  text-align: center;  color: white;  height: 32px;  border-radius: 3px;  background: #1E90FF;  cursor: pointer;  outline: none;  border-width: 0px;  font-size: 17px;  display:inline-block;  padding: 4px 10px;  line-height:30px;  position: relative;  text-decoration: none;}button {  margin-left: 70%;  width: 15%;  height: 35px;  border-width: 0px;  border-radius: 3px;  background: #1E90FF;  cursor: pointer;  outline: none;  color: white;  font-size: 17px;}.show{  margin: 100px auto;  width: 80%;  height: 450px;  border: 5px solid #18a0ec;  transition: all 0.9s;  border-radius: 10px;}.show1{  margin: 50px auto;  width: 222px;  height: 226px;  border: 5px solid #18a0ec;  transition: all 0.9s;  border-radius: 150px;}.show1:hover{  box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.4);  margin-top: 45px;}.show:hover{  box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.4);  margin-top: 45px;}.texti{  border: 1px solid #ccc;  padding: 13px 14px;  width: 30%;  font-size: 14px;  font-weight: 300;  border-radius: 5px;   background: white;   cursor: pointer;   outline: none; }.texti:focus{  border-color: #1e88e1;  outline: 0;  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);  box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}textarea {  resize: none;}</style>

账号管理实现

这个其实就是修改账号,后面我想单独做大一点,所以要单独分开,例如信息验证,学历验证,专家验证啥的。

怎么使用Vue+Element做个人中心

<template><div >  <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">    <el-form-item label="修改密码" prop="pass">      <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>    </el-form-item>    <el-form-item label="确认修改" prop="checkPass">      <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input>    </el-form-item>    <el-form-item label="校验码:" prop="verify">      <el-input placeholder="请输入校验码:216sadasdsad21352asdas55d5465sad@#sa2d6sa5" v-model.number="ruleForm.verify"></el-input>    </el-form-item>    <el-form-item>      <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>      <el-button @click="resetForm('ruleForm')">重置</el-button>    </el-form-item>  </el-form></div></template><script>export default {  name: "countcontrol",  data() {    var checkAge = (rule, value, callback) => {      if (!value) {        return callback(new Error('校验码不能为空'));      }      setTimeout(() => {        if ((value)!=="216sadasdsad21352asdas55d5465sad@#sa2d6sa5") {          callback(new Error('校验码错误'));        } else {            callback();        }      }, 1000);    };    var validatePass = (rule, value, callback) => {      if (value === '') {        callback(new Error('请输入密码'));      } else {        if(value.length<=6){          callback(new Error("密码长度不能低于6"))        }        if (this.ruleForm.checkPass !== '' ) {          this.$refs.ruleForm.validateField('checkPass');        }        callback();      }    };    var validatePass2 = (rule, value, callback) => {      if (value === '') {        callback(new Error('请再次输入密码'));      } else if (value !== this.ruleForm.pass) {        callback(new Error('两次输入密码不一致!'));      } else {        callback();      }    };    return {      ruleForm: {        pass: '',        checkPass: '',        verify: ''      },      rules: {        pass: [          { validator: validatePass, trigger: 'blur' }        ],        checkPass: [          { validator: validatePass2, trigger: 'blur' }        ],        verify: [          { validator: checkAge, trigger: 'blur' }        ]      }    };  },  methods: {    submitForm(formName) {      this.$refs[formName].validate((valid) => {        if (valid) {          alert('submit!');        } else {          console.log('error submit!!');          return false;        }      });    },    resetForm(formName) {      this.$refs[formName].resetFields();    }  }}</script><style scoped></style>

文章列表实现

这个部分是这样的

怎么使用Vue+Element做个人中心

由于都是类似的,所以我直接把那个全部文章的代码拿出来

<template>  <div >    <br>    <br>    <div  class="main">      <el-card shadow="hover" v-for="(message,index) in Messages" :key="index">        <div >          <div  >            <img                            src="/static/temporary/headpic.jpg"              class="image"            >          </div>          <div >            <p class="message" >{{message.name}}</p>            <p  class="message"            >              {{message.info}}            </p>            <p class="message">              阅读:              <i class="el-icon-view"></i>              {{message.number}}              &nbsp;&nbsp;              收藏:              <i class="el-icon-star-off"></i>              {{message.favorite}}              &nbsp;&nbsp;              权限:              <i class="el-icon-coordinate"></i>              {{message.level}}              &nbsp;&nbsp;              <i v-if="message.level>=2">fork:{{message.fork}}</i>            </p>          </div>          <div  style="width:18%;height: 100%;          display:inline-block;          "          >            <div >              <el-button type="warning" round >                <i class="el-icon-delete"></i>              </el-button>              <br><br>            </div>            <div >              <el-button type="primary" round >                <i class="el-icon-edit-outline"></i>              </el-button>              <br><br>            </div>            <p >{{message.data}}</p>          </div>        </div>        <br>      </el-card>    </div>    <br>    <div class="footer" >      <div class="block" >        <el-pagination          background          layout="total, prev, pager, next, jumper"          :total=total>        </el-pagination>      </div>    </div>  </div></template><script>export default {  name: "allArticle",  data(){    return{      total: 999,      Messages:[        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 0,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 1,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 2,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 3,          "fork": 22        },      ]    }  },}</script><style scoped>.message{  width: 25em;  overflow: hidden;  text-overflow:ellipsis;  white-space: nowrap;}</style>

收藏实现

然后是收藏这个也是类似的

怎么使用Vue+Element做个人中心

问答收藏

怎么使用Vue+Element做个人中心

<template>  <div >    <div  class="main">      <el-card shadow="hover" v-for="(message,index) in Messages" :key="index">        <div >          <div >            <p class="message" >{{message.name}}</p>            <p  class="message"            >              {{message.info}}            </p>            <br>          </div>          <div  style="width:18%;height: 100%;            display:inline-block;          "          >            <div >              <el-button type="warning" round >                <i class="el-icon-delete"></i>              </el-button>              <br><br>            </div>            <p >{{message.date}}</p>          </div>        </div>        <br>      </el-card>    </div>    <br>    <div class="footer" >      <div class="block" >        <el-pagination          background          layout="total, prev, pager, next, jumper"          :total=total>        </el-pagination>      </div>    </div>  </div></template><script>export default {  name: "collectionAns",  data(){    return{      total: 2,      Messages:[        {"name":"小姐姐不回你消息怎么办",          "info":"事情是这样的..................",          "date": "2022-5-1"        },        {"name":"你是有多“贱”才会舔着一个女孩不放手",          "info":"事情是这样的..................",          "date": "2022-5-1"        },      ]    }  },}</script><style scoped>.message{  width: 30em;  overflow: hidden;  text-overflow:ellipsis;  white-space: nowrap;}</style>

文章收藏

<template>  <div >    <br>    <br>    <div  class="main">      <el-card shadow="hover" v-for="(message,index) in Messages" :key="index">        <div >          <div  >            <img                            src="/static/temporary/headpic.jpg"              class="image"            >          </div>          <div >            <p class="message" >{{message.name}}</p>            <p  class="message"            >              {{message.info}}            </p>            <p class="message">              阅读:              <i class="el-icon-view"></i>              {{message.number}}              &nbsp;&nbsp;              收藏:              <i class="el-icon-star-off"></i>              {{message.favorite}}              &nbsp;&nbsp;              权限:              <i class="el-icon-coordinate"></i>              {{message.level}}              &nbsp;&nbsp;              <i v-if="message.level>=2">fork:{{message.fork}}</i>            </p>          </div>          <div  style="width:18%;height: 100%;          display:inline-block;          "          >            <div >              <el-button type="warning" round >                <i class="el-icon-delete"></i>              </el-button>              <p >{{message.data}}</p>              <br>            </div>          </div>        </div>        <br>      </el-card>    </div>    <br>    <div class="footer" >      <div class="block" >        <el-pagination          background          layout="total, prev, pager, next, jumper"          :total=total>        </el-pagination>      </div>    </div>  </div></template><script>export default {  name: "collectionArticle",  data(){    return{      total: 4,      Messages:[        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 1,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 1,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 2,          "fork": 2        },        {"info":"Spring 是一个轻量级的开发框架",          "name":"Spring 5 核心原理解析",          "number": 999,"data":"2022-3-27",favorite: 999,level: 3,          "fork": 2,        },      ]    }  },}</script><style scoped>.message{  width: 25em;  overflow: hidden;  text-overflow:ellipsis;  white-space: nowrap;}</style>

感谢各位的阅读,以上就是“怎么使用Vue+Element做个人中心”的内容了,经过本文的学习后,相信大家对怎么使用Vue+Element做个人中心这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯