


Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang
Dalam era Internet yang pesat membangun hari ini, reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan belakang telah menjadi idea reka bentuk yang sangat popular. Menggunakan idea reka bentuk ini, kami boleh membangunkan kod hadapan dan kod belakang secara berasingan, dengan itu mencapai pembangunan yang lebih cekap dan kebolehselenggaraan sistem yang lebih baik. Artikel ini akan memperkenalkan cara melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang dengan menggunakan go-zero dan Vue.js.
1. Kelebihan reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan bahagian belakang
Kelebihan reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan bahagian hadapan terutamanya merangkumi aspek berikut:
- Kecekapan pembangunan Lebih Tinggi
Menggunakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang, pembangunan bahagian hadapan dan bahagian belakang boleh dijalankan secara selari, tanpa perlu untuk menunggu pembangunan pihak lain selesai sebelum meneruskan ke langkah kerja pembangunan seterusnya. Ini boleh memendekkan kitaran pembangunan dan meningkatkan kecekapan pembangunan.
- Mencapai platform merentas
Menggunakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang, bahagian hadapan dan bahagian belakang boleh digunakan pada pelayan yang berbeza masing-masing untuk mencapai merentas platform. Ini boleh menyesuaikan diri dengan lebih baik kepada keperluan dan senario yang berbeza.
- Tingkatkan kebolehselenggaraan sistem
Menggunakan reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan belakang boleh memisahkan kod bahagian hadapan dan bahagian belakang, menjadikan penyelenggaraan lebih mudah. Pembangun bahagian hadapan dan bahagian belakang boleh bertanggungjawab untuk penyelenggaraan kod mereka sendiri, yang boleh mengurangkan kesukaran dan risiko penyelenggaraan perisian.
2. Pengenalan kepada go-zero
go-zero ialah rangka kerja pembangunan perkhidmatan mikro berprestasi tinggi yang menyediakan pelbagai fungsi dan pemalam, serta boleh membina aplikasi perkhidmatan mikro berprestasi tinggi dengan cepat . go-zero menyokong pelbagai protokol pengangkutan, termasuk HTTP, gRPC dan TCP. Ia juga menyediakan pelbagai perisian tengah, termasuk ETCD, Redis, MySQL, dsb., yang boleh melaksanakan fungsi dengan mudah seperti pendaftaran perkhidmatan, pusat konfigurasi dan storan.
3. Pengenalan kepada Vue.js
Vue.js ialah rangka kerja JavaScript bahagian hadapan yang sangat popular Ia menggunakan corak seni bina MVVM (Model-View-ViewModel) dan menyediakan pelbagai Komponen dan pemalam boleh membina aplikasi bahagian hadapan yang cekap dengan cepat. Vue.js mengikuti model pembangunan dipacu data, yang boleh mengurangkan bilangan operasi DOM dan meningkatkan prestasi aplikasi bahagian hadapan.
4. Gunakan go-zero dan Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang
Pertama, kita perlu menggunakan go-zero untuk membina bahagian belakang perkhidmatan. go-zero menyediakan banyak pemalam dan perisian tengah, dan kami boleh membina perkhidmatan API berprestasi tinggi dengan cepat. Seterusnya, kami menggunakan Vue.js untuk membina aplikasi bahagian hadapan dan memanggil perkhidmatan API bahagian belakang melalui protokol HTTP untuk mencapai reka bentuk perkhidmatan API yang dipisahkan bahagian hadapan dan bahagian belakang.
Di bawah ini kami mengambil sistem pengurusan maklumat pelajar yang ringkas sebagai contoh untuk menunjukkan cara menggunakan go-zero dan Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang.
- Kod belakang
Kami mula-mula menulis kod bahagian belakang untuk melaksanakan perkhidmatan API melalui rangka kerja go-zero. Cipta direktori pelajar dalam direktori akar projek, dan kemudian buat fail student.api dalam direktori untuk menentukan antara muka API untuk maklumat pelajar:
type ( Student struct { Id int64 `db:"id"` Name string `db:"name"` Age int `db:"age"` Class string `db:"class"` CreateAt string `db:"create_at"` UpdateAt string `db:"update_at"` } ListRequest struct { Offset int `form:"offset"` Limit int `form:"limit"` } ) type StudentApi interface { AddStudent(ctx context.Context, req types.AddStudentRequest) (*types.StudentReply, error) DeleteStudent(ctx context.Context, req types.DeleteStudentRequest) (*types.StudentReply, error) UpdateStudent(ctx context.Context, req types.UpdateStudentRequest) (*types.StudentReply, error) GetStudent(ctx context.Context, req types.GetStudentRequest) (*types.StudentReply, error) ListStudent(ctx context.Context, req types.ListStudentRequest) (*types.StudentListReply, error) }
Kami telah menentukan 5 antara muka API dalam fail ini, masing-masing Digunakan untuk menambah, memadam, mengubah suai, menanya dan menyenaraikan maklumat pelajar. Seterusnya, kami mencipta fail service.go dalam direktori pelajar untuk melaksanakan antara muka perkhidmatan maklumat pelajar:
type StudentService struct { models.SvcCtx } func NewStudentService(ctx *models.ServiceContext) *StudentService { return &StudentService{ SvcCtx: ctx, } } func (s *StudentService) AddStudent(ctx context.Context, req types.AddStudentRequest) (*types.StudentReply, error) { student := &model.Student{ Name: req.Name, Age: req.Age, Class: req.Class, CreateAt: time.Now().Format("2006-01-02 15:04:05"), UpdateAt: time.Now().Format("2006-01-02 15:04:05"), } id, err := s.Model.Insert(student) if err != nil { return nil, err } return &types.StudentReply{ Id: id, }, nil } func (s *StudentService) DeleteStudent(ctx context.Context, req types.DeleteStudentRequest) (*types.StudentReply, error) { affected, err := s.Model.Delete(&model.Student{ Id: req.Id, }) if err != nil { return nil, err } return &types.StudentReply{ Affected: affected, }, nil } func (s *StudentService) UpdateStudent(ctx context.Context, req types.UpdateStudentRequest) (*types.StudentReply, error) { student := &model.Student{ Id: req.Id, Name: req.Name, Age: req.Age, Class: req.Class, UpdateAt: time.Now().Format("2006-01-02 15:04:05"), } affected, err := s.Model.Update(student) if err != nil { return nil, err } return &types.StudentReply{ Affected: affected, }, nil } func (s *StudentService) GetStudent(ctx context.Context, req types.GetStudentRequest) (*types.StudentReply, error) { student, err := s.Model.FindOne(req.Id) if err != nil { return nil, err } return &types.StudentReply{ Id: student.Id, Name: student.Name, Age: student.Age, Class: student.Class, CreateAt: student.CreateAt, UpdateAt: student.UpdateAt, }, nil } func (s *StudentService) ListStudent(ctx context.Context, req types.ListStudentRequest) (*types.StudentListReply, error) { students, err := s.Model.List(req.Offset, req.Limit) if err != nil { return nil, err } var studentList []*types.StudentReply for _, student := range students { studentList = append(studentList, &types.StudentReply{ Id: student.Id, Name: student.Name, Age: student.Age, Class: student.Class, CreateAt: student.CreateAt, UpdateAt: student.UpdateAt, }) } return &types.StudentListReply{ List: studentList, }, nil }
Dalam fail ini, kami melaksanakan 5 yang ditakrifkan dalam fail student.api melalui fail service.go antara muka API. Kami menentukan struktur StudentService, yang mengandungi ahli models.SvcCtx, yang melaluinya kami boleh mengakses pangkalan data yang kami perlukan.
- Kod bahagian hadapan
Seterusnya, kami membina aplikasi bahagian hadapan melalui Vue.js. Kita boleh menggunakan perancah Vue-cli untuk membina projek asas. Andaikan bahawa kami telah menggunakan Vue-cli untuk mencipta projek front-end bernama student-mgmt.
Dalam projek student-mgmt, kita perlu menggunakan axios untuk menghantar permintaan HTTP untuk mengakses antara muka API bahagian belakang. Kami boleh membuat konfigurasi yang berkaitan dalam fail main.js:
import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import axios from 'axios' Vue.prototype.$http = axios axios.defaults.baseURL = 'http://localhost:8888/student/' Vue.config.productionTip = false new Vue({ router, store, render: h => h(App) }).$mount('#app')
Dalam kod di atas, kami menetapkan aksios sebagai objek prototaip Vue, supaya ini.$http boleh digunakan terus dalam komponen untuk menghantar HTTP permintaan. Kami juga menetapkan baseURL axios kepada alamat antara muka API bahagian belakang, iaitu http://localhost:8888/student/.
Seterusnya, mari tulis kod komponen student-mgmt. Cipta direktori komponen dalam direktori student-mgmt, dan kemudian buat komponen StudentList.vue dalam direktori ini untuk memaparkan senarai pelajar:
<template> <div> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>Class</th> <th>CreateAt</th> <th>UpdateAt</th> <th></th> </tr> </thead> <tbody> <tr v-for="student in students" :key="student.id"> <td>{{ student.id }}</td> <td>{{ student.name }}</td> <td>{{ student.age }}</td> <td>{{ student.class }}</td> <td>{{ student.create_at }}</td> <td>{{ student.update_at }}</td> <td> <button @click="deleteStudent(student.id)">删除</button> </td> </tr> </tbody> </table> <button @click="addStudent()">新增</button> </div> </template> <script> export default { data () { return { students: [] } }, methods: { addStudent () { this.$router.push('/add') }, deleteStudent (id) { this.$http.delete(id).then(() => { this.getStudents() }) }, getStudents () { this.$http.get('?limit=20').then(({ data }) => { this.students = data.list }) } }, mounted () { this.getStudents() } } </script>
Dalam kod di atas, kami memperkenalkan rangka kerja Vue.js dan menentukan A Komponen StudentList. Komponen ini digunakan untuk memaparkan senarai pelajar Kami menggunakan arahan v-for untuk melintasi data senarai pelajar dan memaparkannya dalam jadual. Kami juga menentukan kaedah addStudent untuk melompat ke halaman di mana maklumat pelajar baharu ditambahkan. Kami menggunakan axios untuk menghantar permintaan HTTP, mendapatkan senarai pelajar melalui kaedah dapatkan dan memadam maklumat pelajar melalui kaedah padam.
- Pendaftaran perkhidmatan API dan permulaan
Selepas melengkapkan penulisan kod bahagian belakang dan bahagian hadapan, kami juga perlu mendaftar dan memulakan API bahagian belakang perkhidmatan. Kami mencipta fail student.go dalam direktori akar projek untuk menentukan pendaftaran dan permulaan perkhidmatan.
Kami menentukan kod berikut dalam fail student.go:
package main import ( "log" "zero-study/api/internal/config" "zero-study/api/internal/handler" "zero-study/api/internal/svc" "zero-study/api/internal/types" "github.com/tal-tech/go-zero/core/conf" "github.com/tal-tech/go-zero/core/logx" "github.com/tal-tech/go-zero/core/service" ) func main() { var c config.Config conf.MustLoad("config.yaml", &c) ctx := svc.NewServiceContext(c) srv := service.NewServer(c.ServerConf, handler.NewHandler(ctx)) types.RegisterStudentApiServer(srv, handler.NewStudentHandler(ctx)) logx.Must(srv.Start()) }
在该文件中,我们首先通过conf.MustLoad函数来加载config.yaml文件中的配置参数,然后通过svc.NewServiceContext函数来创建服务上下文对象。接着,我们调用service.NewServer函数来创建一个新的服务对象,并将服务配置和Handler传入。最后,我们使用types.RegisterStudentApiServer函数来注册API服务,然后调用srv.Start方法来启动API服务。
完成上述步骤后,我们运行go run student.go命令即可启动API服务。
- 总结
在本文中,我们介绍了前后端分离式API服务设计,以及如何使用go-zero和Vue.js来实现该设计模式。通过go-zero和Vue.js的结合,我们可以快速构建出高性能的前后端分离式API服务,提高开发效率和系统维护性。
通过实例的演示,我们可以看出,更多的大型企业在使用前后端分离式API服务设计方案。与fe,iOS,Android甚至小程序方案相比,前后分离式API的开发模式,前端和后端各自专攻、分工明确,API 服务也成了产品经理和各端工程师之间的一个契约。它让不同的客户端直接面向服务器进行对接,除去了 web 页面这种渲染环节,利用了ajax等技术通信。从而加快了前端和后端的开发效率和提高了系统运行的稳定性。
Atas ialah kandungan terperinci Gunakan go-zero+Vue.js untuk melaksanakan reka bentuk perkhidmatan API dipisahkan bahagian hadapan dan belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Beberapa petua untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin Dengan populariti aplikasi mudah alih dan pertumbuhan berterusan keperluan pengguna, pembangunan aplikasi Android telah menarik lebih banyak perhatian daripada pembangun. Apabila membangunkan apl Android, memilih tindanan teknologi yang betul adalah penting. Dalam beberapa tahun kebelakangan ini, bahasa Vue.js dan Kotlin secara beransur-ansur menjadi pilihan popular untuk pembangunan aplikasi Android. Artikel ini akan memperkenalkan beberapa teknik untuk membangunkan aplikasi Android menggunakan bahasa Vue.js dan Kotlin serta memberikan contoh kod yang sepadan. 1. Sediakan persekitaran pembangunan pada permulaan

Beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python Pengenalan: Dengan kemunculan era data besar, visualisasi data telah menjadi penyelesaian penting. Dalam pembangunan aplikasi visualisasi data, gabungan Vue.js dan Python boleh memberikan fleksibiliti dan fungsi yang berkuasa. Artikel ini akan berkongsi beberapa petua untuk membangunkan aplikasi visualisasi data menggunakan Vue.js dan Python, dan melampirkan contoh kod yang sepadan. 1. Pengenalan kepada Vue.js Vue.js ialah JavaScript yang ringan

Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman untuk membina enjin bahagian hadapan untuk pembangunan permainan Pengenalan: Dengan pembangunan berterusan pembangunan permainan, pilihan enjin bahagian hadapan permainan telah menjadi keputusan penting. Antara pilihan ini, rangka kerja Vue.js dan bahasa Lua telah menjadi tumpuan ramai pembangun. Sebagai rangka kerja hadapan yang popular, Vue.js mempunyai ekosistem yang kaya dan kaedah pembangunan yang mudah, manakala bahasa Lua digunakan secara meluas dalam pembangunan permainan kerana prestasinya yang ringan dan cekap. Artikel ini akan meneroka bagaimana untuk

Penyepaduan bahasa Vue.js dan Objektif-C, petua dan cadangan untuk membangunkan aplikasi Mac yang boleh dipercayai Dalam beberapa tahun kebelakangan ini, dengan populariti Vue.js dalam pembangunan bahagian hadapan dan kestabilan Objective-C dalam pembangunan aplikasi Mac, pembangun Mula. cuba menggabungkan kedua-duanya untuk membangunkan aplikasi Mac yang lebih dipercayai dan cekap. Artikel ini akan memperkenalkan beberapa petua dan cadangan untuk membantu pembangun menyepadukan Vue.js dan Objective-C dengan betul serta membangunkan aplikasi Mac berkualiti tinggi. satu

Cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ Dalam era sosial hari ini, fungsi sembang telah menjadi salah satu fungsi teras aplikasi mudah alih dan aplikasi web. Salah satu elemen yang paling biasa dalam antara muka sembang ialah gelembung sembang, yang boleh membezakan dengan jelas mesej penghantar dan penerima, dengan berkesan meningkatkan kebolehbacaan mesej. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan kesan gelembung sembang seperti QQ dan memberikan contoh kod khusus. Pertama, kita perlu mencipta komponen Vue untuk mewakili gelembung sembang. Komponen ini terdiri daripada dua bahagian utama

Cara menggunakan PHP dan Vue.js untuk melaksanakan fungsi penapisan dan pengisihan data pada carta Dalam pembangunan web, carta ialah cara yang sangat biasa untuk memaparkan data. Menggunakan PHP dan Vue.js, anda boleh melaksanakan fungsi penapisan dan pengisihan data dengan mudah pada carta, membolehkan pengguna menyesuaikan paparan data pada carta, meningkatkan visualisasi data dan pengalaman pengguna. Pertama, kita perlu menyediakan satu set data untuk carta digunakan. Katakan kita mempunyai jadual data yang mengandungi tiga lajur: nama, umur dan gred Data adalah seperti berikut: Nama, Umur, Gred Zhang San 1890 Li

Gunakan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet dan kepentingan data yang semakin meningkat, permintaan untuk perangkak web dan alat pengikis data juga telah meningkat. Dalam konteks ini, adalah pilihan yang baik untuk menggabungkan bahasa Vue.js dan Perl untuk membangunkan perangkak web dan alat mengikis data yang cekap. Artikel ini akan memperkenalkan cara membangunkan alat sedemikian menggunakan bahasa Vue.js dan Perl, serta melampirkan contoh kod yang sepadan. 1. Pengenalan kepada bahasa Vue.js dan Perl

Penyepaduan bahasa Vue.js dan Dart, amalan dan kemahiran pembangunan untuk membina antara muka UI aplikasi mudah alih yang hebat Pengenalan: Dalam pembangunan aplikasi mudah alih, reka bentuk dan pelaksanaan antara muka pengguna (UI) adalah bahagian yang sangat penting. Untuk mencapai antara muka aplikasi mudah alih yang hebat, kami boleh menyepadukan Vue.js dengan bahasa Dart, dan menggunakan ciri pengikatan data dan komponenisasi yang berkuasa Vue.js dan perpustakaan pembangunan aplikasi mudah alih yang kaya bagi bahasa Dart untuk membina aplikasi mudah alih yang Memukau. antara muka UI. Artikel ini akan menunjukkan kepada anda bagaimana untuk
