Vue CLI

19 年 10 月 6 日 星期日
724 字
4 分钟

Vue CLI踩坑记录①

安装相关

Vue CLI 安装见:官网

cd 到合适的文件夹

shell
npm install -g @vue/cli

版本检查

shell
vue --version

有时因为权限的原因,没有成功自动配置环境变量,如果出现Vue指令不识别的情况,到node的npm安装目录,找到vue.cmd文件,把它所在的目录配置到环境变量里就可以了。

我的路径:

shell
C:\Users\Administrator\AppData\Roaming\npm

创建相关

cd 到需要的文件夹,创建项目

shell
vue create 你的项目名

然后上下移动选择框,空格勾选,回车确认

推荐的选择为:

shell
vue-router
vuex
babel
sass
eslint

这是mac的推荐选择。

开发相关

  • 引入element的组件方式
shell
vue add element
  • 引入.vue组件的方式
javascript
<script>
import NavBar from './components/NavBar.vue'

export default {
  name: 'app',
  components: {
    NavBar
  }
}
</script>
  • 使用.vue组件的方式
javascript
<template>
  <div id="app">
    <NavBar />
  </div>
</template>
  • 路由

配置router.js

js
import Vue from 'vue';
import Router from 'vue-router';
import Home from './views/Home.vue';
// import Upload from './views/Upload.vue'

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
    },
    //懒加载
    {
      path: '/upload',
      name: 'upload',
      component: () => import('./views/Upload.vue'),
    },
  ],
});

使用

element组件使用router属性即可,会自动把index属性的值作为路径

显示

js
<router-view></router-view>
  • devServer代理设置,用于处理跨域请求

配置vue.config.js(没有就在项目根目录创建一个)

js
module.exports = {
  devServer: {
    proxy: {
      '^/api': {
        target: 'http://localhost:3000',
        ws: true,
        changeOrigin: true,
      },
      '^/test': {
        target: 'http://localhost:8888',
        ws: true,
        changeOrigin: true,
      },
    },
  },
};

^/api表示以api开头的所有请求

  • axios请求的封装接口

随便建个js文件

js
import axios from 'axios';

// 视频列表
const listVideos = () => axios.get('/api/video/listVideos').then((res) => res.data);
// 视频详情
const detailVideo = (id) => axios.get(`/api/video/showVideo/${id}`).then((res) => res.data);
// 视频投稿
const createVideo = (form) => axios.post('/api/video/createVideo', form).then((res) => res.data);
//测试
const testC = () => axios.post('/test/c').then((res) => res.data);
export { listVideos, detailVideo, createVideo, testC };

对应get无参、有参,post有参

  • 引入封装的axios请求接口,以及使用

Get

vue
<template>
  <el-container>
    <el-aside>
      <Aside />
    </el-aside>
    <el-main>
      <div class="home">
        <h1>首页</h1>
        <img alt="Vue logo" src="../assets/logo.png" />
        <button v-on:click="listVideos()">视频列表</button>
        <br />
        <button v-on:click="detailVideo()">视频详情</button>
        <br />
        {{ videos }},
        <br />
        {{ video }}
      </div>
    </el-main>
  </el-container>
</template>

<script>
// @ 一个 别名 表示 /src
import HelloWorld from '@/components/HelloWorld.vue';
import NavBar from '@/components/NavBar.vue';
import Aside from '@/components/Aside.vue';
import * as API from '@/api/video/videoAPI.js';

export default {
  name: 'home',
  data() {
    return {
      videos: [],
      video: {},
    };
  },
  components: {
    HelloWorld,
    NavBar,
    Aside,
  },
  methods: {
    listVideos: function () {
      console.log('调用了listVideos方法');
      API.listVideos().then((res) => {
        this.videos = res.data;
      });
    },
    detailVideo: function () {
      console.log('调用了detailVideo方法');
      API.detailVideo(2).then((res) => {
        this.video = res.data;
      });
    },
  },
};
</script>

Post

js
<template>
  <el-container>
    <el-aside>
      <Aside />
    </el-aside>
    <el-main>
      <div class="upload">
        <h1>投稿</h1>
        <el-form
          ref="form"
          :model="form"
          label-width="100px"
          class="demo-ruleForm"
        >
          <el-form-item label="视频标题" prop="video_title">
            <el-input v-model="form.video_title"></el-input>
          </el-form-item>

          <el-form-item label="视频简介" prop="video_info">
            <el-input type="textarea" v-model="form.video_info"></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="uploadV(ruleForm)">确认投稿</el-button>
            <el-button @click="resetForm('ruleForm')">重置</el-button>
          </el-form-item>
        </el-form>
      </div>
    </el-main>
  </el-container>
</template>

<script>

import Aside from "@/components/Aside.vue";
import * as API from "@/api/video/videoAPI.js";

export default {
  name: "upload",
  data() {
    return {
      form: {
        video_title: "",
        video_info: ""
      }
    }
  },
  components: {
    Aside
  },
  methods: {
    uploadV: function(){
        console.log("创建视频")
        API.createVideo(this.form).then((res=>{
          console.log(res)
        }))
    }
  }
};
</script>
  • 自定义css的引入
js
<style>@import 'assets/css/shVideo.css';</style>

文章标题:Vue CLI

文章作者:shirtiny

文章链接:https://kizamu.anror.com/posts/vue-3[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。