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

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

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

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

Flask + Vue的Web 框架 Flask 開(kāi)發(fā)的詞云生成應(yīng)用

馬哥Linux運(yùn)維 ? 來(lái)源:掘金 ? 作者:snowspace ? 2021-06-28 09:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言這是一個(gè)前端用 Vue,后端用 Python 的 Web 框架 Flask 開(kāi)發(fā)的詞云生成應(yīng)用,代碼已上傳到 flask-vue-word-cloud

項(xiàng)目地址:https://github.com/77Y/flask-vue-word-cloud

寫這個(gè)小項(xiàng)目的起因是最近團(tuán)隊(duì)年終述職,有一些大佬的 PPT 上用了詞云來(lái)展示自己團(tuán)隊(duì)一年的工作成果;還有大佬說(shuō)不要守著自己的一畝三分地,在技術(shù)上拓寬視野可以幫助我們更好的成長(zhǎng)

正好之前接觸過(guò) Python 和 R 生成詞云,于是作為一個(gè)移動(dòng)端開(kāi)發(fā)者,想在本地跑一個(gè)生成詞云的服務(wù),就有了這個(gè)項(xiàng)目

目錄結(jié)構(gòu)先簡(jiǎn)單看一下項(xiàng)目的目錄結(jié)構(gòu),backend 是 Flask 實(shí)現(xiàn)的服務(wù)端,frontend 是 Vue 實(shí)現(xiàn)的前端。

。

├── backend

│ ├── app

│ └── venv

└── frontend

├── README.md

├── build

├── config

├── dist

├── index.html

├── node_modules

├── package-lock.json

├── package.json

├── src

└── static

開(kāi)發(fā)環(huán)境硬件:

macOS Mojave 10.14.6

軟件:

nodejs v11.6.0

Python 3.7.4

請(qǐng)確保已經(jīng)安裝好了node js 環(huán)境,可參考nodejs官網(wǎng)進(jìn)行安裝。

前端開(kāi)發(fā)1、安裝vue-cli安裝 vue-cliVue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開(kāi)發(fā)的完整系統(tǒng)。

$ npm install -g vue-cli

2、創(chuàng)建項(xiàng)目新建目錄

$ mkdir word-cloud

$ cd word-cloud/

創(chuàng)建項(xiàng)目

$ vue init webpack frontend

執(zhí)行完上面的命令后,會(huì)讓你設(shè)置項(xiàng)目的基本信息,我的配置如下:

4985dc94-d79b-11eb-9e57-12bb97331649.jpg

然后等待安裝一些基本的依賴,完成之后進(jìn)入到 frontend 目錄

$ cd frontend

$ npm run dev

執(zhí)行完后會(huì)在控制臺(tái)提示

Your application is running here: http://localhost:8080

說(shuō)明我們現(xiàn)在已經(jīng)可以跑起來(lái)了,可以訪問(wèn)一下http://localhost:8080

這時(shí)我們?cè)倏匆幌?frontend 的目錄結(jié)構(gòu),已經(jīng)默認(rèn)幫我們生成了一些目錄和代碼。

├── README.md

├── build

├── config

├── index.html

├── node_modules

├── package-lock.json

├── package.json

├── src

└── static

3、安裝element-uiElement 是一套為開(kāi)發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于 Vue 2.0 的桌面端組件庫(kù)。

$ npm i element-ui -S

使用插件

在 vue-cli 幫我們生成的目錄中/src/main.js中導(dǎo)入ElementUI

import ElementUI from‘element-ui’import‘element-ui/lib/theme-chalk/index.css’

最后使用

Vue.use(ElementUI)

4、安裝axios因?yàn)槭乔昂蠖朔蛛x的應(yīng)用,所以還要安裝請(qǐng)求的庫(kù)axios。axios 是基于 promise 的 HTTP 客戶端。

$ npm install --save axios

同樣在/src/main.js導(dǎo)入axios

import axios from ‘a(chǎn)xios’

注冊(cè)axios

Vue.prototype.axios = axios

之后我們就可以使用 axios 發(fā)送請(qǐng)求了。

5、編寫頁(yè)面先找到App.vue,把我們不需要的 logo 刪掉。

《template》《div id=“app”》《!-- 《img src=“。/assets/logo.png”》 --》《router-view/》《/div》《/template》

新建WordCloud.vue,這就是我們的主要頁(yè)面。一個(gè)標(biāo)題,一個(gè)輸入框,兩個(gè)按鈕。

《template》《div》《h2》小詞云《/h2》《div id=“word-text-area”》《el-input type=“textarea” :rows=“10” placeholder=“請(qǐng)輸入內(nèi)容” v-model=“textarea”》《/el-input》《div id=“word-img”》《el-image :src=“‘data:image/png;base64,’+pic” :fit=“fit”》《div slot=“error” class=“image-slot”》《i class=“el-icon-picture-outline”》《/i》《/div》《/el-image》《/div》《div id=“word-operation”》《el-row》《el-button type=“primary” @click=“onSubmit” round》生成詞云《/el-button》《el-button type=“success” @click=“onDownload” round》下載圖片《/el-button》《/el-row》《/div》《/div》《/div》《/template》

實(shí)現(xiàn)點(diǎn)擊事件并發(fā)送請(qǐng)求

《script》

exportdefault {

name: ‘wordcloud’,

data() {

return {

textarea: ‘’,

pic: “”,

pageTitle: ‘Flask Vue Word Cloud’,

}

},

methods: {

onSubmit() {

var param = {

“word”: this.textarea

}

this.axios.post(“/word/cloud/generate”, param).then(

res =》 {

this.pic = res.data

console.log(res.data)

}

).catch(res =》 {

console.log(res.data.res)

})

},

onDownload() {

const imgUrl = ‘data:image/png;base64,’ + this.pic

const a = document.createElement(‘a(chǎn)’)

a.href = imgUrl

a.setAttribute(‘download’, ‘word-cloud’)

a.click()

}

}

}

《/script》

最后在src/router中找到index.js修改一下路由。

export default new Router({

routes: [{

path: ‘/’,

name: ‘index’,

component: WordCloud

}]

})

打包資源

$ npm run build

執(zhí)行完成后會(huì)將資源打包到dist目錄。

至此,前端的開(kāi)發(fā)工作就完成了。

后端開(kāi)發(fā)1、安裝Python3先安裝一下Python3,這里我使用 homebrew 安裝。

brew install python3

由于我之前已經(jīng)安裝過(guò)了,執(zhí)行完成之后出現(xiàn)警告,按照提示操作

Warning: python 3.7.4_1 is already installed, it‘s just not linked You can use brew link python to link this version.

Linking /usr/local/Cellar/python/3.7.4_1.。。 Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

再次出現(xiàn)錯(cuò)誤,沒(méi)有權(quán)限

參考處理:stackoverflow.com/questions/2…

sudo chown -R $USER:admin /usr/local

再次執(zhí)行

brew link python

Linking /usr/local/Cellar/python/3.7.4_1.。。 1 symlinks created

錯(cuò)誤解決,執(zhí)行 python3 可以正確顯示版本號(hào)。

$ python3

Python 3.7.4 (default, Sep 7 2019, 1802)

[Clang 10.0.1 (clang-1001.0.46.4)] on darwin

Type “help”, “copyright”, “credits” or “l(fā)icense” for more information.

2、創(chuàng)建虛擬環(huán)境Python 虛擬環(huán)境可以為 Python 項(xiàng)目提供獨(dú)立的運(yùn)行環(huán)境,使得不同的應(yīng)用使用不同的 Python 版本,我們使用虛擬環(huán)境開(kāi)發(fā)一個(gè) Python 應(yīng)用。

新建后端目錄

$ mkdir backend

$ cd backend/

創(chuàng)建虛擬環(huán)境

python3 -m venv venv

激活虛擬環(huán)境

source venv/bin/activate

關(guān)閉虛擬環(huán)境的命令如下

deactivate

3、安裝 flask關(guān)于 flask 我們?cè)谖恼伦铋_(kāi)始已經(jīng)介紹過(guò)。

pip install flask

如果沒(méi)有報(bào)錯(cuò),那就就安裝成果了。

4、安裝詞云生成庫(kù)wordcloud 是 python 優(yōu)秀的詞云生成庫(kù)。詞云以詞語(yǔ)為基本單位更加直觀的展示文本。

pip install wordcloud

4、編寫代碼關(guān)于 flask 代碼部分參考了The Flask Mega-Tutorial教程,看完第一章就可以寫出應(yīng)用了。這里我解釋一下關(guān)鍵代碼。

在__init__.py中修改python默認(rèn)html和靜態(tài)資源目錄,這個(gè)資源就是我們上面在前端開(kāi)發(fā)中通過(guò)npm run build生成的資源目錄。

app = Flask(__name__,

template_folder=“。。/。。/frontend/dist”,

static_folder=“。。/。。/frontend/dist/static”)

修改完成之后再啟動(dòng) Flask,訪問(wèn)的就是 vue 的頁(yè)面了。

routes.py 里面的代碼,就是主頁(yè)面和生成詞云的接口。

# 真正調(diào)用詞云庫(kù)生成圖片def get_word_cloud(text):# font = “。/SimHei.ttf”# pil_img = WordCloud(width=500, height=500, font_path=font).generate(text=text).to_image()

pil_img = WordCloud(width=800, height=300, background_color=“white”).generate(text=text).to_image()

img = io.BytesIO()

pil_img.save(img, “PNG”)

img.seek(0)

img_base64 = base64.b64encode(img.getvalue()).decode()

return img_base64

# 主頁(yè)面@app.route(’/‘)@app.route(’/index‘)def index():return render_template(’index.html‘)

# 生成詞云圖片接口,以base64格式返回@app.route(’/word/cloud/generate‘, methods=[“POST”])def cloud():

text = request.json.get(“word”)

res = get_word_cloud(text)

return res

最后執(zhí)行flask run就可以跑起來(lái)了

當(dāng)然這是用半天時(shí)間跑起來(lái)的一個(gè)簡(jiǎn)陋的應(yīng)用,但是具備了基本的前后端分離應(yīng)用的功能

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1304

    瀏覽量

    74453
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4876

    瀏覽量

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

    關(guān)注

    0

    文章

    59

    瀏覽量

    8667

原文標(biāo)題:實(shí)戰(zhàn):Flask + Vue 生成漂亮的詞云

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何使用SpringBoot、Vue2.0、MySQL開(kāi)發(fā)一套診所系統(tǒng)?

    ? 如何使用Java語(yǔ)言;前端框架Vue2.0;后端框架:SpringBoot;數(shù) 據(jù) 庫(kù): MySQL 這些技術(shù)開(kāi)發(fā)一套診所系統(tǒng)? 技
    的頭像 發(fā)表于 11-27 16:02 ?284次閱讀
    如何使用SpringBoot、<b class='flag-5'>Vue</b>2.0、MySQL<b class='flag-5'>開(kāi)發(fā)</b>一套<b class='flag-5'>云</b>診所系統(tǒng)?

    咸魚平臺(tái)商品關(guān)鍵字搜索API接口設(shè)計(jì)與實(shí)現(xiàn)

    ? 一、接口設(shè)計(jì)規(guī)范 請(qǐng)求方式 :GET請(qǐng)求 URL路徑 :/api/search 請(qǐng)求參數(shù) : keyword:搜索關(guān)鍵(必填) page:頁(yè)碼(默認(rèn)1) page_size:每頁(yè)數(shù)量(默認(rèn)20
    的頭像 發(fā)表于 11-19 15:32 ?270次閱讀
    咸魚平臺(tái)商品關(guān)鍵字搜索API接口設(shè)計(jì)與實(shí)現(xiàn)

    一款基于Java+Spring Boot+Vue的智慧隨訪管理系統(tǒng)源碼

    系統(tǒng)系統(tǒng)主要包含 隨訪管理 和 系統(tǒng)管理 兩大模塊: 隨訪管理包括三級(jí)隨訪體系(出院/門診隨訪)、智慧庫(kù)(表單配置)、滿意度調(diào)查系統(tǒng); 系統(tǒng)管理提供用戶權(quán)限、字典參數(shù)等基礎(chǔ)配置及代碼生成工具。該系統(tǒng)支持二次開(kāi)發(fā),提供包括隨訪路
    的頭像 發(fā)表于 11-13 15:38 ?395次閱讀
    一款基于Java+Spring Boot+<b class='flag-5'>Vue</b>的智慧隨訪管理系統(tǒng)源碼

    醫(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 開(kāi)發(fā)
    的頭像 發(fā)表于 11-08 14:48 ?515次閱讀
    醫(yī)院隨訪管理系統(tǒng)源碼,三級(jí)隨訪系統(tǒng)源碼,Java+Springboot,<b class='flag-5'>Vue</b>,Ant-Design+MySQL5

    訂單實(shí)時(shí)狀態(tài)查詢接口技術(shù)實(shí)現(xiàn)

    、可靠的訂單實(shí)時(shí)狀態(tài)查詢接口,涵蓋接口設(shè)計(jì)、技術(shù)選型、代碼實(shí)現(xiàn)和性能優(yōu)化。我們將使用Python和Flask框架作為示例,確保內(nèi)容真實(shí)可靠,適合開(kāi)發(fā)人員參考。 1. 接口設(shè)計(jì)原則 訂單實(shí)時(shí)狀態(tài)查詢接口需要滿足以下要求: 實(shí)時(shí)性
    的頭像 發(fā)表于 10-21 17:58 ?730次閱讀
    訂單實(shí)時(shí)狀態(tài)查詢接口技術(shù)實(shí)現(xiàn)

    Vue3組合式API最佳實(shí)踐:從Options API到Composition API

    簡(jiǎn)介 在Vue.js中,Options API一直是主流的開(kāi)發(fā)方式。不過(guò)隨著Vue3的推出,Composition API作為一種全新的開(kāi)發(fā)方式引起了廣泛關(guān)注。本文將從Options
    的頭像 發(fā)表于 10-20 13:36 ?519次閱讀

    如何快速在服務(wù)器上部署Web環(huán)境?

    如何快速在服務(wù)器上部署Web環(huán)境
    的頭像 發(fā)表于 10-14 14:16 ?656次閱讀

    商品圖片批量上傳接口設(shè)計(jì)與實(shí)現(xiàn)

    設(shè)計(jì)、實(shí)現(xiàn)步驟、代碼示例、錯(cuò)誤處理和性能優(yōu)化。文章基于Python Flask框架,確保內(nèi)容真實(shí)可靠,適合開(kāi)發(fā)者快速上手。 1. 接口設(shè)計(jì)概述 一個(gè)標(biāo)準(zhǔn)的商品圖片批量上傳接口應(yīng)遵循RESTful原則,使用HTTP POST方法。
    的頭像 發(fā)表于 10-13 15:25 ?443次閱讀

    中國(guó)信通院發(fā)布“2025計(jì)算十大關(guān)鍵

    日前,中國(guó)信通院正式發(fā)布“2025計(jì)算十大關(guān)鍵”,中國(guó)信通院計(jì)算與大數(shù)據(jù)研究所所長(zhǎng)何寶宏對(duì)“2025計(jì)算十大關(guān)鍵”進(jìn)行了解讀。十大
    的頭像 發(fā)表于 07-30 10:53 ?3162次閱讀
    中國(guó)信通院發(fā)布“2025<b class='flag-5'>云</b>計(jì)算十大關(guān)鍵<b class='flag-5'>詞</b>”

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】安裝openplc

    官網(wǎng)看到開(kāi)發(fā)板可以安裝測(cè)試openplc,下面來(lái)體驗(yàn)下openplc功能。 一、安裝軟件 1.1、安裝軟件包 root@starfive:~# sudo apt-get install -y
    發(fā)表于 07-15 23:30

    鴻蒙5開(kāi)發(fā)寶藏案例分享---Web開(kāi)發(fā)優(yōu)化案例分享

    的理解,再配上點(diǎn)“栗子”(代碼),跟大家好好嘮嘮,保證讓你看得懂、用得上!? 開(kāi)頭打個(gè)招呼: 嘿,各位鴻蒙開(kāi)發(fā)者們,大家好??!是不是經(jīng)常被Web頁(yè)面加載慢、卡頓搞得頭大?尤其是在咱們
    發(fā)表于 06-12 17:20

    Dify攜手亞馬遜科技加速全球企業(yè)生成式AI應(yīng)用規(guī)?;涞?/a>

    簡(jiǎn)單易用的AI應(yīng)用開(kāi)發(fā)平臺(tái)Dify通過(guò)深度集成亞馬遜科技的生成式AI技術(shù)與服務(wù),在保障性能、合規(guī)與全球交付的基礎(chǔ)上,顯著降低企業(yè)在生成
    的頭像 發(fā)表于 06-07 16:00 ?866次閱讀

    HarmonyOS5服務(wù)技術(shù)分享--ArkTS開(kāi)發(fā)Node環(huán)境

    ? 你好呀,開(kāi)發(fā)者小伙伴們!今天我們來(lái)聊聊如何在HarmonyOS(ArkTS API 9及以上)中玩轉(zhuǎn)函數(shù),特別是結(jié)合Node.js和HTTP觸發(fā)器的開(kāi)發(fā)技巧。文章會(huì)手把手帶你從零開(kāi)始,用最接地
    發(fā)表于 05-22 17:21

    Web Components實(shí)踐:如何搭建一個(gè)框架無(wú)關(guān)的AI組件庫(kù)

    作者: 京東科技 牛志偉 一、讓人又愛(ài)又恨的Web Components Web Components是一種用于構(gòu)建可重用的Web元素的技術(shù)。它允許開(kāi)發(fā)者創(chuàng)建自定義的HTML元素,這些
    的頭像 發(fā)表于 04-08 11:27 ?591次閱讀
    <b class='flag-5'>Web</b> Components實(shí)踐:如何搭建一個(gè)<b class='flag-5'>框架</b>無(wú)關(guān)的AI組件庫(kù)

    底層開(kāi)發(fā)與應(yīng)用開(kāi)發(fā)到底怎么選?

    端、后端)等。 2. 技術(shù)要求 編程語(yǔ)言:Java、Python、JavaScript、Swift、Kotlin等。 開(kāi)發(fā)框架:熟悉前端框架(如React、Vue)、后端
    發(fā)表于 03-06 10:10