主頁 >  其他 > 測驗開發【提測平臺】分享3-正式開發產品需求&專案初始化

測驗開發【提測平臺】分享3-正式開發產品需求&專案初始化

2021-08-06 06:24:59 其他

上兩個分享主要是介紹和演示基本前后端所要使用的框架,接下來我們將正式進入到【提測平臺的開發】

提要先給出依賴和內容點:

  • 提測平臺定義和產品原型需求說明

  • 使用github創建代碼倉庫進行專案管理

  • Flask中使用 Blueprint 進行模塊開發

  • 前端 開發IDE工具為:WebStorm

  • 后端 開發IDE工具為:PyCharm

提測平臺需求說明

關于這個提測系統,N年前原始需求,是因為當初所在團隊,負責太多的專案,很多需求提測,測驗報告都是通過郵件手工進行,久之就有了比如資訊不全、記錄不好找、領導不好統計作業量等等,所以借著團隊有自己前端框架,類似vue這種比較簡易,就促使了這樣一個測驗管理小平臺的誕生,其實平臺的功能不是很復雜,具體的主要功能羅列如下:

  • 專案(線)/產品管理 

  • 提測創建和管理

  • 測驗報告和管理

  • 統計報表(Leader用)

  • CI API (集成部署條件判斷)

當然這其中其他還有集成公司的統一人員管理,權限管理,以及特殊的管理,這些在這個專案中都將以一個通用的方式去實作,具體如果這個專案能應用在你們的團隊中,可以在對這部分進行二次的開發,

特別說明,由于發現原來畫的產品原型,在這次重新開發中并不適用了,所以這次就不給出來了,就留在下篇迭代開發中給出吧,

GitHub托管代碼專案

官方 https://github.com  在自己的目錄下創建個專案,作為專案的全程代碼托管,當然如果你只打算本地用,可以忽略github創建,直接創建本地的一個稍微正式一點的專案檔案夾即可,

專案名稱定義為:TestProjectManagement - Public

SSH方式git clone代碼

本地電腦打開終端 ssh-keygen -p 命令生成密鑰,如果有忽略

ssh-keygen -p

復制密鑰, 根據生成路徑找到 id_rsa.pub 復制到剪貼板,我這里mac默認在:

cat .ssh/id_rsa.pub

粘貼密鑰在到github上,位置在 個人頭像 -> Settings -> SSH and GPG keys -> New GPG Key

進入TestProjectManagement,切換成SSH模式,復制,本地自己開發位置直接克隆即可 

git clone [email protected]:mrzcode/TestProjectManagement.git

創建前后端服務

介面Flask服務  打開PyCharm, 創建一個flask專案: Create New Project -> Flask -> 路徑可以選擇到剛才克隆的專案下,起名為Service服務,并建議創建Virtual env和勾選上 Inherit ,版本選擇python3.x 版本,這主要是為了使其環境獨立,以免跟你本地其他專案沖突,尤其是有2.x的專案,

頁面vue服務  在之前文章中演示用的是admin完整包,基本上我們不會用到里邊的那么多默認頁面,而我們正式專案會換成vue-admin-template, 這是一個極簡的管理后臺,我們在這基礎上一步一步的開發,

# 切換到專案目錄
cd /mrzcode/TestProjectManagement/ 
# https模式克隆到專案下
git clone https://github.com/PanJiaChen/vue-admin-template.git
# 重新命名一下,作為專案Web服務
mv vue-admin-template/ TPMWeb

這里關于還有個技巧就是對其Fork,方便作者有修復Bug等情況及時更新我們的基礎代碼,具體的后續可以找個小結專門講下,

最終我們就得到一個帶有前后端完整專案目錄結構如下:

TestProjectManagement
|-TPMService
|-TPMWeb

TPMService優化結構

之前我們例子中寫了登陸請求,這些資料其實都寫在了一個檔案里,那么隨著功能的增多,所有代碼都在一起肯定是不合適的,而路由的實作又是顯示的,所以這里我們用到python flak的中的 Blueprint 來進行模塊化的管理和開發,

遷移登陸代碼

在TPMService跟目錄下創建一個檔案夾包 apis,并在此下邊創建一個user.py 檔案,編輯這個檔案,將之前章節的主檔案(run.py)中關于登陸的代碼copy到此處,另外需要從flask中import blueprint,并注冊一個物件,重點實作給出標記

遷移后代碼實作如下(/apis/user.py):

 #!/usr/bin/env python3
 # -*- coding:utf-8 -*-
 from flask import request
 import json
 
 from flask import Blueprint
 
 app_user = Blueprint("app_user", __name__)
 
@app_user.route("/api/user/login",methods=['POST'])
def login():
    data = https://www.cnblogs.com/mrzcode/archive/2021/08/05/request.get_data() # 獲取post請求body資料
    js_data = json.loads(data) # 將字串轉成json

    if'username' in js_data and js_data['username'] == 'admin':
        result_success = {"code":20000,"data":{"token":"admin-token"}}
        return result_success
    else:
        result_error = {"code":60204,"message":"賬號密碼錯誤"}
        return result_error

@app_user.route("/api/user/info",methods=['GET'])
def info():
    # 獲取GET中請求token引數值
    token = request.args.get('token')
    if token == 'admin-token':
        result_success = {
            "code":20000,
            "data":{
                "roles":["admin"],
                "introduction":"I am a super administrator",
                "avatar":"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
                "name":"Super Admin"}
                          }
        return result_success
    else:
        result_error = {"code": 60204, "message": "用戶資訊獲取錯誤"}
        return result_error

在后端服務主程檔案(app.py) 引入分類模塊即可

撰寫產品線介面

按照上邊的思想,我們創建一個硬編碼的一個產品線模塊[ /apis/product.py ] ,來配合實作一個vue頁面,產品管理顯示,直接給出核心代碼:

product.py

# -*- coding:utf-8 -*-

from flask import Blueprint

app_product = Blueprint("app_product", __name__)

@app_product.route("/api/product/list",methods=['GET'])
def product_list():
    # 硬編碼回傳list
    data = https://www.cnblogs.com/mrzcode/archive/2021/08/05/[
        {"id":1, "keyCode":"project1", "title":"專案一", "desc":"這是專案1描述", "operator":"admin","update":"2020-04-06"},
        {"id":2, "keyCode": "project2", "title": "專案而", "desc": "這是專案2描述", "operator": "user", "update": "2020-04-03"}
    ]
    # 按回傳模版格式進行json結果回傳
    resp_data = https://www.cnblogs.com/mrzcode/archive/2021/08/05/{"code": 20000,
        "data": data
    }
return resp_data

app.py

# -*- coding:utf-8 -*-
from flask import Flask
from apis.user import app_user
from apis.product import app_product
from flask_cors import CORS

app = Flask(__name__)
CORS(app, supports_credentials=True)

app.register_blueprint(app_user)
app.register_blueprint(app_product)

if __name__ == '__main__':
    app.run(debug=True)

其中不要忘記之前文章中提到的CORS配置

最終后端服務目前結構如下

 

TPMWeb優化實作

按照之前的文章,分別來遷移或者重新修改下請求域名和請求API,詳細可以翻看上一篇文章,此處需要打開WebStorm 打開并匯入我們上邊的TPMWeb專案,然后直接通過IDE進行編碼,

遷移登陸配置

開發環境的請求域名修改,并且因為是新的框架環境,需要重新安裝依賴即 npm install

 

配置請求登陸API,并嘗試運行,開是否正常編譯

 

實作產品或者部門頁面及串列顯示

1)創建product 前端頁面

在路徑TPMWeb/src/views/下創建個檔案夾product, 接著右鍵 New Vue Compoent,命名為 product.vue,其中Script 中那么命名頁面名字為大寫的Product, 再放置個<label>我是產品管理頁面</label>方便下邊定義路由后查看,

 

2)配置選單產品線管理路由

編輯 TPMWeb/router/index.js ,在 dashboard下邊配置,一個新的選單資訊,重點compent引數的指向view的地址一定要正確,其他引數配置參考如下

如果vue未在運行,那么在Terminal下邊執行 npm run dev ,看下效果

 

3)配置后端產品線 API

在src/api/product.js 創建一個介面組態檔,配置上邊服務的get請求地址,其中定義方法名為apiProductList(), 具體代碼如下:

import request from '@/utils/request'

export function apiProductList() {
  return request({
    url: '/api/product/list',
    method: 'get'
  })
}

 

3)實作產品table串列顯示

編輯views/product/product.vue ,這里從 https://element.eleme.cn/#/zh-CN/component/table 直接參考它組件的例子來實作,

其中涉及到知識點有:

  • vue 是一套回應式框架,一般組件、方法和樣式在一個頁面中集中實作

  • 模塊 <template></template> 組件UI實作區域

  • 模塊 <script></script> 業務實作的區域

<script>內部定義的意義

  • data(){} 定義值,屬性等

  • methods:{} 方法,事件處理等

  • created():() 頁面首次加載處理

template代碼實作

<template>
   <!--app-container 框架內嵌的一個樣式,可以嘗試去掉看看效果有什么不同-->
   <div >
     <!--樣式組件 參考 https://element.eleme.cn/#/zh-CN/component/table-->
     <el-table :data="https://www.cnblogs.com/mrzcode/archive/2021/08/05/tableData"><!--:data 系結data()的陣列值,會動態根據其變化而變化-->
       <el-table-column prop="id" label="編號"/>
       <!--:data prop系結{}中的key,label為自定義顯示的串列頭-->
       <el-table-column prop="title" label="名稱"/>
       <el-table-column prop="keyCode" label="代號"/>
       <!--<el-table-column prop="desc" label="描述"/>-->
       <el-table-column prop="operator" label="操作人"/>
       <el-table-column prop="update" label="操作時間"/>
    </el-table>
  </div>
</template>

 

script代碼實作

 <script>
 // 參考src/api/proudct 配置的請求串列方法
 import { apiProductList } from '@/api/product'
 
 export default {
   name: 'Product', // 頁面名稱
   // data() 資料\屬性,固定return中配置
   data() {
     return {
      tableData: []
    }
  },
  // 頁面生命周期中的創建階段呼叫
  created() {
    // 呼叫methods的方法,即初次加載就請求資料
    this.getProductList()
  },
  methods: {
    // getProductList自定義方法名,提供其他地方呼叫this.getProductList
    getProductList() {
      // 固定格式呼叫api配置方法,并將回傳結果回呼給response
      apiProductList().then(response => {
        // console.log()是除錯列印,可以在chrome開發者工具中查看
        console.log(response.data)
        // 將回傳的結果賦值給變數 tableData
        this.tableData = https://www.cnblogs.com/mrzcode/archive/2021/08/05/response.data
      })
    }
  }
}
</script>

 

4)運行查看效果

以上如果沒有錯誤的話,我們再重新運行后端服務,前端服務看下效果

python app.py #或PyCharm 配自run config直接運行
nmp run dev   #或WebStorm 配自run config直接運行

資料從服務器端請求并自動按照屬性配置顯示了資料

 

番外一些內容

全域一些配置

在src/settings.js 有一些全域配置,比如title可以修改下系統的名字

 

去除vue框架一些示例代碼

這次雖然使用的極簡模版,但是還有有一些例子是用不到的,我們可以將其洗掉掉,大概涉及到如下一些

  • /src/table.js

  • /views/table

  • /views/tree

  • /views/form

  • /views/nested

  • /mock

以及/src/router/index.js 中的相關上述選單配置

當然也可以保留方便參考,我這里最終去除后的結構如下


Vue中文官方檔案

如果想全面或者快速了解更多vue知識可以參考官方 

https://cn.vuejs.org/v2/guide/ 

 

代碼托管

本地代碼除錯通過通過就可以提交代碼github進行托管了, 我已經提交,可以下載參考或者直接使用

https://github.com/mrzcode/TestProjectManagement


下一期預告和必要準備:資料落庫和產品線頁面管理功能

所以可以提前準備下可用的mysql環境,我個人使用的資料IDE是Navicat

 

*可能需要前要閱讀*

【提測平臺】分享2-基礎之專案前后端聯調互通

【提測平臺】分享1-基礎之技術堆疊和開源框架選型

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291992.html

標籤:其他

上一篇:2020 ICPC 沈陽站 M. United in Stormwind

下一篇:微信小程式學習2:開發工具快速創建頁面(pages)的四個檔案(.js,.json,.wxml, .wxss)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more