vue實(shí)現(xiàn)直連mysql的方法步驟
最近又搞了個(gè)小項(xiàng)目,單機(jī)版本的內(nèi)部考勤管理系統(tǒng),直接部署在對方的工作電腦上,不需要在云端部署,因?yàn)轫?xiàng)目本身就小,我就沒配置后端同事進(jìn)行開發(fā),而是通過VUE直連mysql進(jìn)行業(yè)務(wù)開發(fā)及保存。后期再通過PM2來守護(hù)頁面及服務(wù),隨時(shí)打開使用。
下面來復(fù)盤一下整體開發(fā)過程。
一、mysql及navicat的安裝
1、mysql的安裝
前往官方網(wǎng)站下載安裝,點(diǎn)擊連接->mysql下載及安裝官網(wǎng)
需求說明的是,這里下載使用5.7.44的版本,8.0及9.0連接機(jī)制有所調(diào)整,會(huì)增加額外的一些配置。這里就不再討論展開。
下載后的步驟一路默認(rèn)進(jìn)行即可。安裝完成后配置環(huán)境變量即可。安裝過程中需要輸入root的密碼,設(shè)置時(shí)記錄好后面連接服務(wù)要用。
2、navicat的安裝
網(wǎng)上自行找哈,這里也不展開,后期用于設(shè)計(jì)表。
二、創(chuàng)建Vue項(xiàng)目
CD到指定的目錄后運(yùn)行以下命令,按時(shí)提示完成項(xiàng)目的創(chuàng)建。
vue create 項(xiàng)目名
三、安裝相關(guān)依賴
在項(xiàng)目目錄中依次執(zhí)行如下命令
下載express:npm install express -save
下載cors:npm install cors -save
下載mysql:npm install mysql -save
下載axios:npm install axios -save
下載elementUI:npm install element-ui -save
下載sass:npm install sass -save
等,所有依賴如下,自行查看并安裝即可
四、在項(xiàng)目中創(chuàng)建server文件夾,用于搭建本地服務(wù)器。
4.1、在server文件下創(chuàng)建app.js文件,粘貼以下內(nèi)容。此為api連接服務(wù)。
let express = require('express') let cors = require('cors') let bodyParser = require('body-parser') let router = require('./router') let app = express() app.use(bodyParser.json()) app.use(bodyParser.urlencoded({extended:false})) app.use(cors()) app.use(router) app.listen(80,()=>{ console.log('服務(wù)器啟動(dòng)成功'); })
4.2、在server文件下創(chuàng)建db文件夾,并在db文件夾下創(chuàng)建index.js文件,粘貼以下內(nèi)容。此為mysql連接服務(wù)。注意數(shù)據(jù)庫名及密碼,密碼即1.1步設(shè)置的ROOT密碼,我創(chuàng)建的庫名叫oadb,你創(chuàng)建的叫什么就寫什么。不要寫為user哦,user是表名不是庫名,一個(gè)庫里面有多個(gè)表,注意關(guān)系區(qū)分。
let mysql = require('mysql') let db = mysql.createConnection({ host:'127.0.0.1', user:'root', password:'abel', database:'oadb' }) module.exports = db
4.3、在server文件夾下創(chuàng)建api文件夾,并在api文件夾下創(chuàng)建user.js,用于操作數(shù)據(jù)庫。注意此為示例,這里也僅供部分功能,其他業(yè)務(wù)邏輯功能暫不示例。all方法在API路由表中定義的是get方式,所以取參是req.query.xxx,而del和update方法是POST方法,取參是req.body.xxx,自己注意區(qū)分。
let db = require("../db/index"); exports.all = (req, res) => { var sql = "select * from t_user"; db.query(sql, [], (err, data) => { if (err) { console.log("出錯(cuò)了", err); return res.send("錯(cuò)誤" + err.message); } res.send(data); }); }; //刪除人員 exports.del = (req, res) => { var sql = "delete from t_user where id = ?"; db.query(sql, [req.body.id], (err, data) => { if (err) { console.log("出錯(cuò)了", err); return res.send("錯(cuò)誤" + err); } res.send(data); }); }; //更新 exports.update = (req, res) => { var sql = "update t_user set name = ?,mobile=?,idNo=?,sex=?,noteText=?,groupId=? where id = ?"; db.query( sql, [ req.body.name, req.body.mobile, req.body.idNo, req.body.sex, req.body.noteText, req.body.groupId, req.body.id, ], (err, data) => { if (err) { console.log("出錯(cuò)了", err); return res.send("錯(cuò)誤" + err); } res.send(data); } ); };
4.4、在server文件夾下創(chuàng)建router.js,用于配置對應(yīng)api路由,這個(gè)文件管理著所有接口及請求方式,將api與相應(yīng)的表操作類進(jìn)行關(guān)聯(lián)。代碼如下 :
let express = require('express') let router = express.Router() let user = require('./api/user') //用戶相關(guān),get方法 router.get('/user/all',user.all) //post方法 router.post('/user/del',user.del) router.post('/user/update',user.update) module.exports = router
以上完成后項(xiàng)目目錄看起來應(yīng)該是這樣的:
五、設(shè)計(jì)用戶表
5.1、使用navicat設(shè)計(jì)user表,字段簡要定義如下:
- id,
- name,
- mobile,
- idNo,
- sex,
5.2、手動(dòng)插入一條數(shù)據(jù)。這步的目的是為了驗(yàn)證連接是否成功。
CD到server目錄下,運(yùn)行以下命令來啟動(dòng)服務(wù):
node app.js
5.3、驗(yàn)證api連接服務(wù)是否正常
瀏覽器打開http://127.0.0.1/user,因?yàn)槲业谋戆韵伦侄?,顯示如下:
六、業(yè)務(wù)頁面的開發(fā)
6.1、注冊elementUI組件。在mian.js粘貼以下完整代碼:
import Vue from 'vue' import App from './App.vue' import Element from 'element-ui' import './assets/styles/element-variables.scss' import vuePrototype from '@/utils/vuePrototype' Vue.use(Element) Vue.use(vuePrototype) Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app')
6、2修改VUE腳本手架生成的頁面,一般叫叫hellowordcomponet,把里面的代碼清空,粘貼以下代碼:
<template> <div> <button @click="get()">獲取user表數(shù)據(jù)</button> </div> </template> <script> import axios from "axios" export default { data () { return { }; }, methods: { get() { axios.get('http://127.0.0.1/user').then(res=>{ console.log(res.data); }).catch(err=>{ console.log("獲取數(shù)據(jù)失敗" + err); }) } } } </script>
不出意外的話,控制臺打印數(shù)據(jù)如下:
到此,所有關(guān)鍵點(diǎn)均打通,后期就看你業(yè)務(wù)邏輯,無非就是增加頁面、增加api、增加表、增加加密等。
因?yàn)槲翼?xiàng)目中涉及三個(gè)模塊業(yè)務(wù),所以我的api定義如下,對應(yīng)三張表,有多少表,就對應(yīng)多少個(gè)api文件,相互隔離,便于維護(hù)及保持項(xiàng)目結(jié)構(gòu)的清晰。
我的業(yè)務(wù)頁面:
當(dāng)然你如果不會(huì)mysql查詢就需要查閱資料或者是找后端人員協(xié)助你寫查詢語句。
在此再次強(qiáng)調(diào)接口服務(wù)的參數(shù)寫法,參考4.4,認(rèn)真讀每一行的說明。
all方法在API路由表中定義的是get方式,所以取參是req.query.xxx,del和update方法是POST方法,取參是req.body.xxx,自己注意區(qū)分。
整體開發(fā)完成后,單機(jī)部署請移步以下教程學(xué)習(xí)查看->戳我學(xué)習(xí)單機(jī)部署
到此這篇關(guān)于vue實(shí)現(xiàn)直連mysql的方法步驟的文章就介紹到這了,更多相關(guān)vue 直連mysql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)nav導(dǎo)航欄的方法
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目nav導(dǎo)航欄的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12vue如何把字符串中的所有@內(nèi)容,替換成帶標(biāo)簽的
這篇文章主要介紹了vue如何把字符串中的所有@內(nèi)容,替換成帶標(biāo)簽的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue?export?default中的name屬性有哪些作用
這篇文章主要介紹了Vue?export?default中的name屬性有哪些作用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03vuex中store.commit和store.dispatch的區(qū)別及使用方法
這篇文章主要介紹了vuex中store.commit和store.dispatch的區(qū)別及使用方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01淺析vue3響應(yīng)式數(shù)據(jù)與watch屬性
這篇文章主要介紹了vue3響應(yīng)式數(shù)據(jù)與watch屬性的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05