91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Django+Vue的前后端分離開(kāi)發(fā)教程

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-01 09:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

眾所周知,Django對(duì)于網(wǎng)站快速開(kāi)發(fā)非常友好,這得益于框架為我們做了很多事情,讓我們只需要做一些簡(jiǎn)單的配置和邏輯即可把網(wǎng)站的功能開(kāi)發(fā)出來(lái)。

但是,在使用Django的過(guò)程中,有一個(gè)地方一直是比較難受的,那就是使用Django自帶的模版,這種通常需要自己利用HTML+CSS+Jquery的方式總感覺(jué)是上一個(gè)時(shí)代的做法,前后端分離無(wú)論對(duì)于開(kāi)發(fā)效率、多端支持等等都是很有好處的。

所以,本文希望通過(guò)一個(gè)簡(jiǎn)單的demo,講一講基于Django+Vue的前后端分離開(kāi)發(fā),將Django作為一個(gè)純后端的服務(wù),為前端Vue頁(yè)面提供數(shù)據(jù)支持。

本文采用的django版本號(hào)2.2.5,Vue版本2.9.6。

開(kāi)始之前,你要確保Pythonpip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。

請(qǐng)選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install django

vue的安裝可見(jiàn):
https://www.runoob.com/vue2/vue-install.html

創(chuàng)建前后端項(xiàng)目:創(chuàng)建一個(gè)文件夾,然后命令行創(chuàng)建項(xiàng)目即可,如下圖:

圖片

命令行進(jìn)入后端文件夾 book_demo,輸入下面命令,瀏覽器登陸 127.0.0.1:8000 看見(jiàn)歡迎頁(yè)即成功。

python manage.py runserver

再進(jìn)入前端文件夾 appfront ,輸入下面命令,瀏覽器登陸 127.0.0.1:8080 看見(jiàn)歡迎頁(yè)即成功。

npm run dev

上面兩個(gè)命令也是對(duì)應(yīng)前后端項(xiàng)目的啟動(dòng)命令,后面就直接將過(guò)程說(shuō)成啟動(dòng)前/后端項(xiàng)目。

2.后端實(shí)現(xiàn)

為了方便后端的實(shí)現(xiàn),作為django做后端api服務(wù)的一種常用插件,django-rest-framework(DRF)提供了許多好用的特性,所以本文demo中也應(yīng)用一下,命令行輸入命令安裝:

pip install django-rest-framework

進(jìn)入book_demo目錄,創(chuàng)建一個(gè)新的名為books的應(yīng)用,并在新應(yīng)用中添加urls.py文件,方便后面的路由配置,命令行輸入:

python manage.py startapp books
cd books
touch urls.py

現(xiàn)在的目錄結(jié)構(gòu)如下:

圖片

下面開(kāi)始做一些簡(jiǎn)單的配置:

將DRF和books配置到django項(xiàng)目中,打開(kāi)項(xiàng)目中的** settings.py **文件,添加:

# book_demo/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # demo add
    'rest_framework',
    'books',
]

對(duì)整個(gè)項(xiàng)目的路由進(jìn)行配置,讓訪問(wèn) api/ 路徑時(shí)候轉(zhuǎn)到books應(yīng)用中的urls.py文件配置進(jìn)行處理。

# book_demo/settings.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('books.urls')), # demo add
]

下面在books應(yīng)用中寫(xiě)簡(jiǎn)單的邏輯,demo只最簡(jiǎn)單涉及對(duì)書(shū)本的增刪改查。因?yàn)檫@一部分不是本文重點(diǎn),所以這里只介紹寫(xiě)代碼流程和貼代碼,對(duì)代碼不做詳細(xì)解釋:

在models.py文件中寫(xiě)簡(jiǎn)單數(shù)據(jù)類Books:

# books/models.py
from django.db import models


class Books(models.Model):
    name = models.CharField(max_length=30)
    author = models.CharField(max_length=30, blank=True, null=True)

在books文件夾中創(chuàng)建serializer.py文件,并寫(xiě)對(duì)應(yīng)序列化器BooksSerializer:

# books/serializer.py
from rest_framework import serializers

from books.models import Books


class BooksSerializer(serializers.ModelSerializer):
    class Meta:
        model = Books
        fields = '__all__'

在views.py文件中寫(xiě)對(duì)應(yīng)的視圖集BooksViewSet來(lái)處理請(qǐng)求:

# books/views.py
from rest_framework import viewsets

from books.models import Books
from books.serializer import BooksSerializer


class BooksViewSet(viewsets.ModelViewSet):
    queryset = Books.objects.all()
    serializer_class = BooksSerializer

在urls.py文件中寫(xiě)對(duì)應(yīng)的路由映射:

# books/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter

from books import views


router = DefaultRouter()
router.register('books', views.BooksViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

對(duì)于books應(yīng)用中的內(nèi)容,如果對(duì)DRF和Django流程熟悉的同學(xué)肯定知道都干了些什么,篇幅關(guān)系這里只能簡(jiǎn)單解釋,DRF通過(guò)視圖集ViewSet的方式讓我們對(duì)某一個(gè)數(shù)據(jù)類Model可以進(jìn)行增刪改查,而且不同的操作對(duì)應(yīng)于不同的請(qǐng)求方式,比如查看所有books用get方法,添加一本book用post方法等,讓整個(gè)后端服務(wù)是restful的。

如果實(shí)在看不懂代碼含義,只需知道這樣做之后就可以通過(guò)不同的網(wǎng)絡(luò)請(qǐng)求對(duì)后端數(shù)據(jù)庫(kù)的Books數(shù)據(jù)進(jìn)行操作即可,后續(xù)可以結(jié)合Django和DRF官方文檔對(duì)代碼進(jìn)行學(xué)習(xí),或關(guān)注本人未來(lái)分享的內(nèi)容。

到這里,可以運(yùn)行一下后端項(xiàng)目看看效果,命令行運(yùn)行:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

得益于DRF提供的api可視化界面,瀏覽器訪問(wèn) ** 127.0.0.1:8000/api/books/ ** ,如果出現(xiàn)了以下界面并添加數(shù)據(jù)正常,則說(shuō)明后端的基本邏輯已經(jīng)ok了~下圖為添加了一條數(shù)據(jù)之后的效果。

圖片

3.前端實(shí)現(xiàn)

接下來(lái)的工作以appfront項(xiàng)目目錄為根目錄進(jìn)行,開(kāi)始寫(xiě)一點(diǎn)前端的展示和表單,希望達(dá)到兩個(gè)目標(biāo),一是能從后端請(qǐng)求到所有的books列表,二是能往后端添加一條book數(shù)據(jù)。說(shuō)白了就是希望把上面的頁(yè)面用Vue簡(jiǎn)單實(shí)現(xiàn)一下,然后能達(dá)到相同的功能。

對(duì)于Vue項(xiàng)目中各個(gè)文件的功能這里也不多解釋,可以參考其文檔系統(tǒng)學(xué)習(xí)。這里只需要知道歡迎頁(yè)面中的樣式是寫(xiě)在App.vue和components/HelloWorld.vue中即可。

這里直接用HelloWorld.vue進(jìn)行修改,只求功能不追求頁(yè)面了~

上滑查看更多代碼

// appfront/src/components/HelloWorld.vue
< template >
  < div class="hello" >
    < h1 >{{ msg }}< /h1 >
    < !-- show books list -- >
    < ul >
      < li v-for="(book, index) in books" :key="index" style="display:block" >
        {{index}}-{{book.name}}-{{book.author}}
      < /li >
    < /ul >
    < !-- form to add a book -- >
    < form action="" >
      輸入書(shū)名:< input type="text" placeholder="book name" v-model="inputBook.name" >< br >
      輸入作者:< input type="text" placeholder="book author" v-model="inputBook.author" >< br >
    < /form >
    < button type="submit" @click="bookSubmit()" >submit< /button >
  < /div >
< /template >

< script >
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      // books list data
      books: [
        {name: 'test', author: 't'},
        {name: 'test2', author: 't2'}
      ],
      // book data in the form
      inputBook: {
        "name": "",
        "author": "",
      }
    }
  },
  methods: {
    loadBooks () {...}, // load books list when visit the page
    bookSubmit () {...} // add a book to backend when click the button
  },
  created: function () {
    this.loadBooks()
  }
}
< /script >
...

啟動(dòng)前端項(xiàng)目,瀏覽器訪問(wèn)127.0.0.1:8080,可以看到剛寫(xiě)的頁(yè)面已經(jīng)更新上去了,丑是丑了點(diǎn),意思到了就行~如下圖:

圖片

4.前后端聯(lián)調(diào)

敲黑板,重點(diǎn)來(lái)了?。∩厦娴捻?yè)面中數(shù)據(jù)其實(shí)是寫(xiě)死在前端頁(yè)面的模擬數(shù)據(jù),這一節(jié)希望通過(guò)從后端拿數(shù)據(jù)并展示在前端頁(yè)面的方式來(lái)完成前后端聯(lián)調(diào)。前后端聯(lián)調(diào),涉及最多的就是跨域的問(wèn)題,為了保證安全,通常需要遵循同源策略,即“協(xié)議、域名、端口”三者都相同,具體可以看看相關(guān)的博客,這里只需知道上述三者相同才算同源即可。

后端部分,對(duì)于django的跨域問(wèn)題,網(wǎng)上比較常用的做法就是利用django-cors-headers模塊來(lái)解決,這里也不能免俗,操作如下。

先在命令行中進(jìn)行對(duì)應(yīng)模塊的安裝:

pip install django-cors-headers

然后在項(xiàng)目中添加該模塊:

# books_demo/settings.py
INSTALLED_APPS = [
    ...
    # demo
    'corsheaders',
    ...
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # 需注意與其他中間件順序,這里放在最前面即可
    ...
]

# 支持跨域配置開(kāi)始
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

后端部分告于段落,接下來(lái)需要補(bǔ)充一下前端的邏輯,Vue框架現(xiàn)在一般都用axios模塊進(jìn)行網(wǎng)絡(luò)請(qǐng)求,這里沿用這種方式,下面是在前端項(xiàng)目中操作:

首先命令行安裝axios模塊,如果沒(méi)有安裝cnpm就還是用npm安裝:

cnpm install axios

為了方便管理api請(qǐng)求的各種邏輯,在前端項(xiàng)目的src目錄下創(chuàng)建api目錄,然后創(chuàng)建api.js和index.js文件。index.js文件是對(duì)axios做配置:

// appfront/src/api/index.js
import Vue from 'vue'
import Axios from 'axios'

const axiosInstance = Axios.create({
    withCredentials: true
})

// 通過(guò)攔截器處理csrf問(wèn)題,這里的正則和匹配下標(biāo)可能需要根據(jù)實(shí)際情況小改動(dòng)
axiosInstance.interceptors.request.use((config) = > {
    config.headers['X-Requested-With'] = 'XMLHttpRequest'
    const regex = /.*csrftoken=([^;.]*).*$/
    config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]
    return config
})

axiosInstance.interceptors.response.use(
    response = > {
        return response
    },
    error = > {
        return Promise.reject(error)
    }
)

Vue.prototype.axios = axiosInstance

export default axiosInstance

api.js文件是對(duì)后端進(jìn)行請(qǐng)求,可以看到,獲取books列表和添加一本book各對(duì)應(yīng)于一個(gè)請(qǐng)求:

// appfront/src/api/api.js
import axiosInstance from './index'

const axios = axiosInstance

export const getBooks = () = > {return axios.get(`http://localhost:8000/api/books/`)}

export const postBook = (bookName, bookAuthor) = > {return axios.post(`http://localhost:8000/api/books/`, {'name': bookName, 'author': bookAuthor})}

然后更新HelloWorld.vue中的處理邏輯:

// appfront/src/components/HelloWorld.vue
< script >
import {getBooks, postBook} from '../api/api.js'
export default {
  ...
  methods: {
    loadBooks () {
      getBooks().then(response = > {
        this.books = response.data
      })
    }, // load books list when visit the page
    bookSubmit () {
      postBook(this.inputBook.name, this.inputBook.author).then(response = > {
        console.log(response)
        this.loadBooks()
      })
    } // add a book to backend when click the button
  },
  ...
}
< /script >

至此,一個(gè)極其簡(jiǎn)陋的查詢和添加書(shū)籍的功能算是完成了~如下圖:

圖片

圖片

可以看到,列表里面的數(shù)據(jù)是從后端讀取到的,同時(shí)前端的提交數(shù)據(jù)庫(kù)也能有對(duì)應(yīng)的操作,所以前后端至此是打通了。

5.打包??

現(xiàn)階段是前后端分開(kāi)開(kāi)發(fā),但是當(dāng)最后要用的時(shí)候,還需要把代碼合在一起。

首先對(duì)前端項(xiàng)目進(jìn)行打包,這里用Vue的自動(dòng)打包:

npm run build

可以看到前端項(xiàng)目中多出了一個(gè)dist文件夾,這個(gè)就是前端文件的打包結(jié)果。需要把dist文件夾復(fù)制到books_demo項(xiàng)目文件夾中。

然后對(duì)settings.py文件進(jìn)行相應(yīng)的修改,其實(shí)就是幫django指定模版文件和靜態(tài)文件的搜索地址:

# books_demo/books_demo/settings.py
...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'dist')], # demo add
        ...
    },
]
...
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'dist/static'),
]
..

最后在根urls.py文件中配置一下入口html文件的對(duì)應(yīng)路由:

# books_demo/books_demo/urls.py
...
from django.views.generic.base import TemplateView

urlpatterns = [
    ...
    path('', TemplateView.as_view(template_name='index.html'))
]

重新啟動(dòng)項(xiàng)目,這次用瀏覽器訪問(wèn) ** 127.0.0.1:8000 ** ,即django服務(wù)的對(duì)應(yīng)端口即可。

可以看到,項(xiàng)目的交互是正常的,符合我們的預(yù)期。

總結(jié)

本文以一個(gè)非常簡(jiǎn)單的demo為例,介紹了利用django+drf+vue的前后端分離開(kāi)發(fā)模式,基本可以算是手把手入門。有了這個(gè)小demo之后,不管是前端頁(yè)面還是后端功能,都可以做相應(yīng)的擴(kuò)展,從而開(kāi)發(fā)出更加復(fù)雜使用的網(wǎng)站。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    404

    瀏覽量

    18416
  • 網(wǎng)站
    +關(guān)注

    關(guān)注

    2

    文章

    262

    瀏覽量

    24068
  • 開(kāi)發(fā)教程
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9643
  • Django
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    10869
  • vue
    vue
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    8664
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Koa+Mysql2+Vue前后端綜合例子分享

    「Node學(xué)習(xí)」Koa+Mysql2+Vue前后端綜合例子
    發(fā)表于 06-02 17:38

    jqgrid前后端交互實(shí)例分享

    [溫習(xí)]jqgrid 前后端交互實(shí)例
    發(fā)表于 06-10 17:30

    web前后端的優(yōu)化實(shí)現(xiàn)

    當(dāng)web前后端的基本功能實(shí)現(xiàn)以后,就需要考慮優(yōu)化的問(wèn)題,如何提高速度,如何充分利用現(xiàn)有的資源,如何根據(jù)現(xiàn)有的硬件資源作軟件適配優(yōu)化等等。這些都是開(kāi)發(fā)后期的工作重心。本文以嵌入式平臺(tái)的服務(wù)器為例,總結(jié)
    發(fā)表于 12-16 07:31

    Dragonboard 410c搭載web服務(wù)器之后端數(shù)據(jù)交互

    本系列文章,博主已經(jīng)給大家介紹了幾種python的django架構(gòu)應(yīng)用實(shí)例,包括web用戶注冊(cè)登陸系統(tǒng),博客系統(tǒng),用戶視頻上傳等等,相信有看過(guò)博主上傳過(guò)的實(shí)例的童鞋應(yīng)該會(huì)對(duì)django簡(jiǎn)潔實(shí)用的代碼架構(gòu)所吸引,今天,我們就來(lái)分享下Dja
    發(fā)表于 02-09 10:40 ?1234次閱讀
    Dragonboard 410c搭載web服務(wù)器之<b class='flag-5'>后端</b>數(shù)據(jù)交互

    vue-cli開(kāi)發(fā)環(huán)境實(shí)現(xiàn)跨域請(qǐng)求

    前后端分離開(kāi)發(fā)中必要會(huì)遇到的問(wèn)題—跨域。在使用vue開(kāi)發(fā)的時(shí)候,開(kāi)始為了解決跨域問(wèn)題。采用的是CORS(Cross-origin resource sharing)。后臺(tái)在響應(yīng)頭中添加
    發(fā)表于 11-28 13:15 ?1238次閱讀

    后端工程師怎樣快速掌握前端開(kāi)發(fā)技能

    初入軟件開(kāi)發(fā)這一行時(shí),當(dāng)時(shí)還沒(méi)有前后端分離這個(gè)概念,所有的開(kāi)發(fā)工程師既能寫(xiě)html,也能寫(xiě)后臺(tái)服務(wù),隨著技術(shù)的發(fā)展,前后端
    的頭像 發(fā)表于 09-21 10:34 ?3743次閱讀

    web開(kāi)發(fā)django快速使用指南

    使用python開(kāi)發(fā)web中,使用Django,使你能夠以最小的代價(jià)構(gòu)建和維護(hù)高質(zhì)量的Web應(yīng)用。在Python各種web框架中,Django的文檔最完善,雖然django也有自己的部
    的頭像 發(fā)表于 05-05 22:19 ?3975次閱讀
    web<b class='flag-5'>開(kāi)發(fā)</b>中<b class='flag-5'>django</b>快速使用指南

    python七天實(shí)戰(zhàn)入門Django Web開(kāi)發(fā)的PDF電子書(shū)免費(fèi)下載

    開(kāi)發(fā)的讀者: ? 清晰的架構(gòu) ? 完整的功能 ? 豐富的文檔對(duì)于一個(gè)想要使用 Python 語(yǔ)言進(jìn)行 Web 開(kāi)發(fā)的新手來(lái)說(shuō),Django 將數(shù)據(jù)模型、業(yè)務(wù)處理函數(shù)和頁(yè)面渲染的模板分離開(kāi)
    發(fā)表于 12-22 08:00 ?10次下載
    python七天實(shí)戰(zhàn)入門<b class='flag-5'>Django</b> Web<b class='flag-5'>開(kāi)發(fā)</b>的PDF電子書(shū)免費(fèi)下載

    Django應(yīng)用程序開(kāi)發(fā)中設(shè)計(jì)Django模板的方法

    在本文中,我將介紹在Django應(yīng)用程序開(kāi)發(fā)中設(shè)計(jì)Django模板的方法。目的是保持Django應(yīng)用程序的UI部分井井有條,并避免重復(fù)編碼。Djan
    的頭像 發(fā)表于 07-29 15:44 ?2652次閱讀

    RuoYi-Vue前后端分離權(quán)限管理系統(tǒng)

    gitee-RuoYi-Vue.zip
    發(fā)表于 05-07 10:09 ?0次下載
    RuoYi-<b class='flag-5'>Vue</b><b class='flag-5'>前后端</b><b class='flag-5'>分離</b>權(quán)限管理系統(tǒng)

    前后端分離必備的接口規(guī)范

    隨著互聯(lián)網(wǎng)的高速發(fā)展,前端頁(yè)面的展示、交互體驗(yàn)越來(lái)越靈活、炫麗,響應(yīng)體驗(yàn)也要求越來(lái)越高,后端服務(wù)的高并發(fā)、高可用、高性能、高擴(kuò)展等特性的要求也愈加苛刻,從而導(dǎo)致前后端研發(fā)各自專注于自己擅長(zhǎng)的領(lǐng)域深耕細(xì)作。
    的頭像 發(fā)表于 05-15 17:16 ?1669次閱讀
    <b class='flag-5'>前后端</b><b class='flag-5'>分離</b>必備的接口規(guī)范

    迅為國(guó)產(chǎn)化RK3588開(kāi)發(fā)板在安防前后端應(yīng)用解決方案

    迅為國(guó)產(chǎn)化RK3588開(kāi)發(fā)板在安防前后端應(yīng)用解決方案
    的頭像 發(fā)表于 05-10 16:04 ?2058次閱讀
    迅為國(guó)產(chǎn)化RK3588<b class='flag-5'>開(kāi)發(fā)</b>板在安防<b class='flag-5'>前后端</b>應(yīng)用解決方案

    springboot前后端交互流程

    Boot 進(jìn)行開(kāi)發(fā)時(shí),前后端交互是一個(gè)非常重要的部分,本文將詳細(xì)介紹 Spring Boot 前后端交互的流程。 前后端交互的基本原理 在前后端
    的頭像 發(fā)表于 11-22 16:00 ?3867次閱讀

    基于springboot和vue框架的Java

    Vue項(xiàng)目的環(huán)境,并展示從前端到后端的完整開(kāi)發(fā)流程。接著,將重點(diǎn)關(guān)注前后端分離開(kāi)發(fā)模式,并介
    的頭像 發(fā)表于 12-03 15:15 ?1868次閱讀

    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+Springboot,Vue,Ant-Design+MySQL5

    Java版隨訪系統(tǒng)源碼,醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,B/S前后端分離架構(gòu),自主版權(quán),落地案例。 技術(shù)框架:Java+Springboot,Vue,Ant-Design+MySQL5
    的頭像 發(fā)表于 11-08 14:48 ?500次閱讀
    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+Springboot,<b class='flag-5'>Vue</b>,Ant-Design+MySQL5