IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue第三部分(2):Vue-CLI构建前后端分离项目以及打包部署 -> 正文阅读

[JavaScript知识库]Vue第三部分(2):Vue-CLI构建前后端分离项目以及打包部署

通过上一节,我们学习了vue脚手架的相关概念以及构建过程,那么开始我们的前后端项目吧

Vue-CLI构建前后端分离项目

1.项目环境初始化

1.安装 axios vue-axios(记得执行命令要进入项目里面执行哦,否则就会报错)

E:\ideaProject\vue-cli-test>npm install --save axios vue-axios?

2.main.js中引入相关库 ?

import axios from 'axios'
import VueAxios from 'vue-axios'

//配置后端服务地址
axios.defaults.baseURL="http://localhost:8080"
//在Vue中配置axios,在所有的Vue组件中就可以通过this.axios使用axios库
Vue.use(VueAxios,axios)

2.分页查询和删除

1.components下新建 BookTable.vue

注意:axios要通过this.axios的方式调用

<template>
  <div class="book-table">
    <table>
      <thead>
      <tr>
        <th>编号</th>
        <th>图书</th>
        <th>作者</th>
        <th>价格</th>
        <th>库存</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="b in books" :key="b.bookId">
        <td>{{b.bookId}}</td>
        <td>{{b.bookName}}</td>
        <td>{{b.author}}</td>
        <td>{{b.price}}</td>
        <td>{{b.stock}}</td>
        <td>
          <button @click="removeBook(b.bookId)">删除</button>
          <router-link :to="{path:'/book/update',query:{bookId:b.bookId}}"><button>更新</button></router-link>
        </td>
      </tr>
      </tbody>
    </table>
    <p>
      <a href="" v-for="page in pages" :key="page" @click.prevent="handleAClick(page)"><button style="margin: 0 10px">{{page}}</button></a>
    </p>
  </div>
</template>

<script>
    export default {
        name: "BookTable",
      data(){
        return {
          books:[],
          pages:[]
        }
      },
      created(){
        this.handleAClick(1);
        // alert('hhh');
      },
      methods:{

        handleAClick(i){
          this.axios.get("/day02/book/show",{
            params:{
              pageNum:i,
              pageSize:5
            }
          }).then(resp=>{
            let data = resp.data;
            console.log(data);
            this.books = data.books;
            this.pages = data.pages;
          })
         
        },
        removeBook: function (bookId) {
          let isDelete = confirm("确定删除吗?");
          if(!isDelete){
            return ;
          }
          this.axios.get("/day02/book/remove",{
            params:{
              bookId:bookId
            }
          }).then(resp=>{
            let responseData = resp.data;
            if (responseData.status == "success") {
              alert("删除成功");
              this.handleAClick(1);
            }else{
              alert("删除失败");
            }
          }).catch(error=>console.log(error));
    
           */
        }
      }

    }
</script>
<style scoped>
  
  .book-table table{
    margin: 0 auto;
    border: solid 1px darkgray;
  }
</style>

3.在app.vue中添加如下代码

<div id="app">

    <img src="./assets/logo.png">
    
    <!-- 添加如下代码-->
    <hr>
    <h1>hello </h1>
    <div>
      <router-link to="/book/show"><button>查询</button></router-link>
    </div>
    
    
    <router-view/>
  </div>

3.解决跨域问题

出于浏览器的同源策略限制,同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。前后端分离的模式下,前端页面的js代码和服务端的服务地址不在同一个域下,无法直接通信。

解决方案:

  1. main.js添加如下配置

import axios from 'axios'
import VueAxios from "vue-axios"

axios.defaults.baseURL="http://localhost:8080"
//添加的配置
axios.defaults.withCredentials = true

Vue.use(VueAxios,axios)

2.服务端添加响应头

//设置允许跨域共享资源的前端地址
resp.setHeader("Access-Control-Allow-Origin","http://localhost:8081");
//允许client跨域请求时携带cookie
resp.setHeader("Access-Control-Allow-Credentials","true");

4.打包部署

当我们使用vue-cli脚手架完成一个项目后,下一步就需要打包部署项目(类似于JavaWeb项目开发后要打war包部署到tomcat中)。

  1. 执行打包命令

#在项目目录下执行npm run build
E:\ideaProject\vue-cli-test>npm run build

#最后出现如下信息,表示打包完成
Build complete.

? Tip: built files are meant to be served over an HTTP server.
? Opening index.html over file:// won't work.

2.打包后的文件,保存在项目目录下新生成的dist目录下 ?

?

?3.修改index.html中静态资源路径

?4.将dist文件夹部署到服务器上并运行

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:25:42  更:2021-08-15 15:27:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:10:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码