美文网首页让前端飞
VUE第九天学习

VUE第九天学习

作者: 誩先生 | 来源:发表于2020-02-20 19:27 被阅读0次
    内容:git和项目后台功能实现
    

    一、git

    版本控制软件,多人协作开发项目(管理项目代码文件)

    svn,它必须要有一个中心服务器

    git,分布式版本管理软件,它不需要中心服务器,每一台电脑都是独立的服务器

    1.git下载和安装

    官网:https://git-scm.com/

    安装:如无特殊需要,一路默认就可以。

    2.常用命令

    (1)配置用户信息

    查看用户信息:git config --list

    设置用户名: git config --global user.name "你的用户名"

    设置邮箱: git config --global user.email "你的邮箱地址(注册github的账号)"

    (2)初始化git项目

    工作区、暂存区、版本库

    进入到指定的磁盘目录,然后执行如下命令:

    创建文件夹:mkdir git_test (make directory)

    进入目录:cd git_test (change directory)

    初始化项目:git init

    (3)提交文件并创建版本

    创建文件:touch 文件名.后缀名

    查看状态:git status

    添加文件:git add 文件名

    提交版本:git commit -m "备注信息"

    (4)查看文件区别

    git diff 文件名

    (5)查看提交日志

    git log

    (6)查看版本信息

    git reflog

    (7)版本回退

    git reset --hard HEAD^ 回退到上一个版本

    ​ HEAD^^^^^

    ​ HEAD~整数值 回退到指定数字的版本

    git reset --hard 版本号

    (8)撤销修改

    git checkout -- 文件名

    (9)分支

    master 主分支 可以对外发布的版本(可以上线的版本)

    develop 开发分支,功能开发中的分支(除了主分支,其他分支均不对外发布)

    feature 即将要发布的分支

    release 可发布分支

    fixbug 调试bug分支

    other 其他分支

    分支相关命令:

    git branch 查看分支

    git branch 分支名称 创建分支

    git checkout 分支名称 切换分支

    git merge 分支名称 合并分支

    git branch -d 分支名称 删除分支

    git checkout -b 分支名称 创建并切换到指定的分支上

    3.结合github进行协作

    ①注册github或者gitee账号

    ②生成ssh秘钥

    ssh-keygen -t rsa -C "你的邮箱"

    ③创建远程仓库(在github或者gitee中进行)

    ④在本地git中添加远程仓库

    git remote add origin https://gitee.com/msword/mytest.git (码云)

    git remote add origin https://github.com/jkmsword/mytest.git (github)

    ⑤把本地中的仓库资源推送到远程仓库中

    git push -u origin master

    ⑥克隆项目

    git clone 远程仓库地址

    ⑦获取远程仓库资源

    git fetch (仅下载)

    git merge

    ⑧获取远程仓库资源并合并当前分支上

    git pull

    ⑨在本地git中删除远程仓库

    git remote rm origin

    二、项目后台管理员管理功能

    1.安装mongodb数据库

    2.运行接口项目

    进入到接口项目目录下

    npm i 下载依赖(下载之后就不用再下载--仅执行一次)

    node app.js 运行接口项目

    3.管理员添加功能

    在vue项目的管理员用户添加页面里,点击提交按钮时执行如下代码:

    this.axios.post('/api/useradd',this.ruleForm).then(res=>{
         if(res.data.status == 1){
             this.$router.push('/user')
         }
    })
    

    axios.post('要请求的接口地址',要提交的数据)

    4.管理员查询功能

    在vue项目的管理员列表页面里,mounted钩子函数中执行如下代码进行用户信息获取:

    this.axios({
        url:'/api/userlist'
    }).then(res=>{
        this.tableData = res.data.data
    })
    

    5.管理员删除功能

    在vue项目的管理员列表页面里,当用户点击修改时,通过axios请求删除的接口实现把数据库中指定的用户删除掉。

    handleDelete(index, row) {
        this.axios({
            method:'post',//method默认是get
            url:'/api/userdel',//请求地址
            data:{ id:row._id }
        }).then(res=>{
            this.tableData.splice(index,1)
        })
    }
    

    6.管理员修改功能

    (1)详情页面展示

    当vue项目的管理员列表页面里,当用户点击详情按钮时,通过$router进行页面跳转并传递参数

    //路由配置

    export default new Router({
        routes: [
            { path: '/login', component: Login },
            {
                path: '/',
                component: Layout,
                children: [
                    { path: 'index', component: Index },
                    { path: 'user', component: UserIndex },
                    { path: 'user/add', component: UserInfo },
                    { path:'user/:id',component:UserInfo }
                ]
            }
        ]
    })
    

    注意动态路由要放在同级路由的最后,防止匹配错误

    //列表页面代码

    handleEdit(index, row) {
        this.$router.push('/user/'+row._id)
    }
    

    //管理员信息页面代码

    <template>
      <div class="app-container">
        <el-breadcrumb separator-class="el-icon-arrow-right">
          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
          <el-breadcrumb-item :to="{ path: '/user' }">管理员列表</el-breadcrumb-item>
          <el-breadcrumb-item>管理员{{ tip }}</el-breadcrumb-item>
        </el-breadcrumb>
        <el-form
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
          class="demo-ruleForm"
        >
          <el-form-item label="用户名" prop="username">
            <el-input v-model="ruleForm.username"></el-input>
          </el-form-item>
          <el-form-item label="密码" prop="password">
            <el-input v-model="ruleForm.password" type="password"></el-input>
          </el-form-item>
          <el-form-item label="状态" prop="status">
            <el-switch v-model="ruleForm.status" active-text="启用" inactive-text="禁用"></el-switch>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="submitForm('ruleForm')">{{tip}}</el-button>
            <el-button @click="resetForm('ruleForm')">重置</el-button>
          </el-form-item>
        </el-form>
      </div>
    </template>
    <script>
    export default {
        mounted(){
            if(this.$route.params.id){
                this.tip = '修改'
                //如果路由有id参数,则认为是要展示管理员信息
                this.axios({
                    url:'/api/userinfo',
                    params:{ id : this.$route.params.id }
                }).then(res=>{
                    this.ruleForm = res.data.data
                    this.ruleForm.id = this.ruleForm._id;
                    delete this.ruleForm._id;
                    delete this.ruleForm.__v;
                    this.ruleForm.password = '';//如果不填写密码,则不修改密码,填写了之后才修改密码
                })
            }
        },
        data() {
            return {
                tip:"添加",
                ruleForm: {
                    username: "",
                    password: "",
                    status: true
                },
                rules: {
                    username: [
                        { required: true, message: "请输入用户名", trigger: "blur" },
                        { min: 2, max: 10, message: "长度在 2 到 10 个字符", trigger: "blur" }
                    ]
                }
            };
        },
        methods: {
            submitForm(formName) {
                this.$refs[formName].validate(valid => {
                    if (valid) {
                        var url = this.$route.params.id ? "/api/useredit" : "/api/useradd";
                        this.axios.post(url, this.ruleForm).then(res => {
                            if (res.data.status == 1) {
                            this.$router.push("/user");
                            }else{
                                alert(res.data.info)
                            }
                        });
                    } else {
                        return false;
                    }
                });
            },
            resetForm(formName) {
                this.$refs[formName].resetFields();
            }
        }
    };
    </script>
    <style scoped>
    </style>
    

    相关文章

      网友评论

        本文标题:VUE第九天学习

        本文链接:https://www.haomeiwen.com/subject/uhkfqhtx.html