做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

Vue.js+Flask做出手機(jī)App

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:37:07
文檔

Vue.js+Flask做出手機(jī)App

Vue.js+Flask做出手機(jī)App:這次給大家?guī)?lái)Vue.js+Flask做出手機(jī)App,Vue.js+Flask做出手機(jī)App的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。一般來(lái)說(shuō),如果你只是想通過(guò)Flask模板使用vue.js庫(kù)也是沒(méi)有問(wèn)題的。但是,實(shí)際上是一個(gè)很明顯的問(wèn)題那就是,Jinja(模板引擎)也和
推薦度:
導(dǎo)讀Vue.js+Flask做出手機(jī)App:這次給大家?guī)?lái)Vue.js+Flask做出手機(jī)App,Vue.js+Flask做出手機(jī)App的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。一般來(lái)說(shuō),如果你只是想通過(guò)Flask模板使用vue.js庫(kù)也是沒(méi)有問(wèn)題的。但是,實(shí)際上是一個(gè)很明顯的問(wèn)題那就是,Jinja(模板引擎)也和
這次給大家?guī)?lái)Vue.js+Flask做出手機(jī)App,Vue.js+Flask做出手機(jī)App的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。

一般來(lái)說(shuō),如果你只是想通過(guò)Flask模板使用vue.js庫(kù)也是沒(méi)有問(wèn)題的。但是,實(shí)際上是一個(gè)很明顯的問(wèn)題那就是,Jinja(模板引擎)也和Vue.js一樣采用雙大括號(hào)用于渲染,但只是一個(gè)還算過(guò)的去的解決方案。

我想要一個(gè)不同的例子。如果我需要建立一個(gè)單頁(yè)應(yīng)用程序(應(yīng)用程序使用單頁(yè)組成, vue-router 在HTML5的History-mode以及其他更多好用的功能)用vue.js,由Flask提供Web服務(wù)?簡(jiǎn)單地說(shuō)應(yīng)該這樣,如下所示:

Flask為 index.html 服務(wù), index.html 包含我的vue.js App。

在前端開發(fā)中我使用Webpack,它提供了所有很酷的功能。

Flask有API端,我可以從我的SPA訪問(wèn)。

我可以訪問(wèn)API端,甚至當(dāng)我為了前端開發(fā)而運(yùn)行Node.js的時(shí)候。

聽起來(lái)是不是很有趣?那讓我們這樣動(dòng)手做做吧。

完整的源代碼,你可以在這里找到:https://github.com/oleg-agapov/flask-vue-spa

客戶端

我將使用Vue CLI產(chǎn)生基本vue.js App。如果你還沒(méi)有安裝它,請(qǐng)運(yùn)行:

$ npm install -g vue-cli

客戶端和后端代碼將被拆分到不同的文件夾。初始化前端部分運(yùn)行跟蹤:

$ mkdir flaskvue
$ cd flaskvue
$ vue init webpack frontend

通過(guò)安裝向?qū)АN业脑O(shè)置是:

Vue 只在運(yùn)行時(shí)構(gòu)建。

安裝Vue-router。

使用ESLint檢查代碼。

選擇一個(gè)ESLint 標(biāo)準(zhǔn)預(yù)設(shè) 。

不試用Karma + Mocha進(jìn)行單位測(cè)試。

不使用Nightwatch建立端到端的測(cè)試。

ok,接著來(lái):

$ cd frontend
$ npm install
# after installation
$ npm run dev

這就可以開始安裝 vue.js 應(yīng)用程序。讓我們從添加一些頁(yè)面開始吧。

添加 home.vue 和 about.vue 到 frontend/src/components 文件夾。它們非常簡(jiǎn)單,像這樣:

// Home.vue
<template>
<p>
<p>Home page</p>
</p>
</template>

and

// About.vue
<template>
<p>
<p>About</p>
</p>
</template>

我們將使用它們正確地識(shí)別我們當(dāng)前的位置(根據(jù)地址欄)。現(xiàn)在我們需要改變 frontend/src/router/index.js 文件以便使用我們的新組件:

import Vue from 'vue'
import Router from 'vue-router'
const routerOptions = [
{ path: '/', component: 'Home' },
{ path: '/about', component: 'About' }
]
const routes = routerOptions.map(route => {
return {
...route,
component: () => import(`@/components/${route.component}.vue`)
}
})
Vue.use(Router)
export default new Router({
routes,
mode: 'history'
})

如果你試著輸入 localhost:8080 和 localhost:8080/about ,你應(yīng)該看到相應(yīng)的頁(yè)面。

我們幾乎已經(jīng)準(zhǔn)備好構(gòu)建一個(gè)項(xiàng)目,并且能夠創(chuàng)建一個(gè)靜態(tài)資源文件包。在此之前,讓我們?yōu)樗鼈冎匦露x一下輸出目錄。在 frontend/config/index.js 找到下一個(gè)設(shè)置:

index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),

把它們改為

index: path.resolve(__dirname, '../../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../../dist'),

所以/dist文件夾的HTML、CSS、JS會(huì)在同一級(jí)目錄/frontend 。現(xiàn)在你可以運(yùn)行 $ npm run build 創(chuàng)建一個(gè)包。

后端

對(duì)于Flask服務(wù)器,我將使用Python版本3.6。在 /flaskvue 創(chuàng)建新的子文件夾存放后端代碼并初始化虛擬環(huán)境:

$ mkdir backend
$ cd backend
$ virtualenv -p python3 venv

為了使虛擬環(huán)境中運(yùn)行(MacOS):

$ source venv/bin/activate

在Windows中需要激活此文檔(http://pymote.readthedocs.io/en/latest/install/windows_virtualenv.html)。

在虛擬環(huán)境下安裝:

(venv) pip install Flask

現(xiàn)在讓我們?yōu)镕lask服務(wù)端編寫代碼。創(chuàng)建根目錄文件run.py:

(venv) cd ..
(venv) touch run.py

向這個(gè)文件添加下一個(gè)代碼:

from flask import Flask, render_template
app = Flask(__name__,
static_folder = "./dist/static",
template_folder = "./dist")
@app.route('/')
def index():
return render_template("index.html")

這段代碼與Flask的 **“Hello World”**代碼略有不同。主要的區(qū)別是,我們指定存儲(chǔ)靜態(tài)文件和模板位置在文件夾 /dist ,以便和我們的前端文件夾區(qū)別開。在根文件夾中運(yùn)行Flask服務(wù)端:

(venv) FLASK_APP=run.py FLASK_DEBUG=1 flask run

這將啟動(dòng)本地主機(jī)上的Web服務(wù)器: localhost:5000 上的 FLASK_APP 服務(wù)器端的啟動(dòng)文件, flask_debug = 1 將運(yùn)行在調(diào)試模式。如果一切正確,你會(huì)看到熟悉的主頁(yè),你已經(jīng)完成了對(duì)Vue的設(shè)置。

同時(shí),如果您嘗試輸入/about頁(yè)面,您將面臨一個(gè)錯(cuò)誤。Flask拋出一個(gè)錯(cuò)誤,說(shuō)找不到請(qǐng)求的URL。事實(shí)上,因?yàn)槲覀兪褂昧薍TML5的History-Mode在Vue-router需要配置Web服務(wù)器的重定向,將所有路徑指向index.html。用Flask做起來(lái)很容易。將現(xiàn)有路由修改為以下:

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return render_template("index.html")

現(xiàn)在輸入網(wǎng)址localhost:5000/about 將重新定向到index.html和vue-router將處理路由。

添加404頁(yè)

因?yàn)槲覀冇幸粋€(gè)包羅萬(wàn)象的路徑,我們的Web服務(wù)器在現(xiàn)在已經(jīng)很難趕上404錯(cuò)誤,F(xiàn)lask將所有請(qǐng)求指向index.html(甚至不存在的頁(yè)面)。所以我們需要處理未知的路徑在vue.js應(yīng)用。當(dāng)然,所有的工作都可以在我們的路由文件中完成。

在frontend/src/router/index.js添加下一行:

const routerOptions = [
{ path: '/', component: 'Home' },
{ path: '/about', component: 'About' },
{ path: '*', component: 'NotFound' }
]

這里的路徑'*'是一個(gè)通配符, Vue-router 就知道除了我們上面定義的所有其他任何路徑。現(xiàn)在我們需要更多的創(chuàng)造 NotFound.vue 文件在**/components**目錄。試一下很簡(jiǎn)單:

// NotFound.vue
<template>
<p>
<p>404 - Not Found</p>
</p>
</template>

現(xiàn)在運(yùn)行的前端服務(wù)器再次 npm run dev ,嘗試進(jìn)入一些毫無(wú)意義的地址例如: localhost:8080/gljhewrgoh 。您應(yīng)該看到我們的“未找到”消息。

添加API端

我們的 vue.js/flask 教程的最后一個(gè)例子將是服務(wù)器端API創(chuàng)建和調(diào)度客戶端。我們將創(chuàng)建一個(gè)簡(jiǎn)單的Api,它將從1到100返回一個(gè)隨機(jī)數(shù)。

打開run.py并添加:

from flask import Flask, render_template, jsonify
from random import *
app = Flask(__name__,
static_folder = "./dist/static",
template_folder = "./dist")
@app.route('/api/random')
def random_number():
response = {
'randomNumber': randint(1, 100)
}
return jsonify(response)
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return render_template("index.html")

首先我導(dǎo)入random庫(kù)和jsonify函數(shù)從Flask庫(kù)中。然后我添加了新的路由 /api/random 來(lái)返回像這樣的JSON:

{
"randomNumber": 36
}

你可以通過(guò)本地瀏覽測(cè)試這個(gè)路徑: localhost:5000/api/random。

此時(shí)服務(wù)器端工作已經(jīng)完成。是時(shí)候在客戶端顯示了。我們來(lái)改變home.vue組件顯示隨機(jī)數(shù):

<template>
<p>
<p>Home page</p>
<p>Random number from backend: {{ randomNumber }}</p>
<button @click="getRandom">New random number</button>
</p>
</template>
<script>
export default {
data () {
return {
randomNumber: 0
}
},
methods: {
getRandomInt (min, max) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min + 1)) + min
},
getRandom () {
this.randomNumber = this.getRandomInt(1, 100)
}
},
created () {
this.getRandom()
}
}
</script>

在這個(gè)階段,我們只是模仿客戶端的隨機(jī)數(shù)生成過(guò)程。所以,這個(gè)組件就是這樣工作的:

  1. 在初始化變量 randomNumber 等于0。

  2. 在methods部分我們通過(guò) getRandomInt(min, max) 功能來(lái)從指定的范圍內(nèi)返回一個(gè)隨機(jī)數(shù), getrandom 函數(shù)將生成隨機(jī)數(shù)并將賦值給 randomNumber

  3. 組件方法 getrandom 創(chuàng)建后將會(huì)被調(diào)用來(lái)初始化隨機(jī)數(shù)

  4. 在按鈕的單擊事件我們將用 getrandom 方法得到新的隨機(jī)數(shù)

現(xiàn)在在主頁(yè)上,你應(yīng)該看到前端顯示我們產(chǎn)生的隨機(jī)數(shù)。讓我們把它連接到后端。

為此目的,我將用 axios 庫(kù)。它允許我們用響應(yīng)HTTP請(qǐng)求并用 Json 返回 JavaScript Promise 。我們安裝下它:

(venv) cd frontend
(venv) npm install --save axios

打開 home.vue 再在 <script> 部分添加一些變化:

import axios from 'axios'
methods: {
getRandom () {
// this.randomNumber = this.getRandomInt(1, 100)
this.randomNumber = this.getRandomFromBackend()
},
getRandomFromBackend () {
const path = `http://localhost:5000/api/random`
axios.get(path)
.then(response => {
this.randomNumber = response.data.randomNumber
})
.catch(error => {
console.log(error)
})
}
}

在頂部,我們需要引用Axios庫(kù)。然后有一個(gè)新的方法 getrandomfrombackend 將使用Axios異步調(diào)用API和檢索結(jié)果。最后, getrandom 方法現(xiàn)在應(yīng)該使用 getrandomfrombackend 函數(shù)得到一個(gè)隨機(jī)值。

保存文件,到瀏覽器,運(yùn)行一個(gè)開發(fā)服務(wù)器再次刷新 localhost:8080 。你應(yīng)該看到控制臺(tái)錯(cuò)誤沒(méi)有隨機(jī)值。但別擔(dān)心,一切都正常。我們得到了 CORS 的錯(cuò)誤意味著Flask服務(wù)器API默認(rèn)會(huì)關(guān)閉其他Web服務(wù)器(在我們這里,vue.js App是在 Node.js服務(wù)器上運(yùn)行的應(yīng)用程序)。如果你 npm run build 項(xiàng)目,那在 localhost:5000 (如Flask服務(wù)器)你會(huì)看到App在工作的。但是,每次對(duì)客戶端應(yīng)用程序進(jìn)行一些更改時(shí),都創(chuàng)建一個(gè)包并不十分方便。

讓我們用打包了CORS插件的Flask,將使我們能夠創(chuàng)建一個(gè)API訪問(wèn)規(guī)則。插件叫做FlaskCORS,讓我們安裝它:

(venv) pip install -U flask-cors

你可以閱讀文檔,更好的解釋你要使你的服務(wù)器怎么樣使用CORS。我將使用特定的方法,并將**{“origins”: “*”}**應(yīng)用于所有/api/*路由(這樣每個(gè)人都可以使用我的API端)。在run.py加上:

from flask_cors import CORS
app = Flask(__name__,
static_folder = "./dist/static",
template_folder = "./dist")
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})

有了這種改變,您就可以從前端調(diào)用服務(wù)端。

更新:

事實(shí)上,如果你想通過(guò)Flask提供靜態(tài)文件不需要CORS。感謝Carson Gee的下面的這一招。

這個(gè)主意是這樣的。如果應(yīng)用程序在調(diào)試模式下,它只會(huì)代理我們的前端服務(wù)器。否則(在生產(chǎn)中)只為靜態(tài)文件服務(wù)。所以我們這樣做:

import requests
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
if app.debug:
return requests.get('http://localhost:8080/{}'.format(path)).text
return render_template("index.html")

很優(yōu)雅的魔法:sparkles:!

現(xiàn)在有了一個(gè)完整的全棧**(full-stack) 應(yīng)用程序,用您最喜愛(ài) Vue.js 和 Flask**技術(shù)構(gòu)建。

后記

最后,我想就如何改進(jìn)這個(gè)解決方案談幾句話。

首先利用CORS,如果你想讓你的API端訪問(wèn)外部的服務(wù)器。否則的話只需要使用代理服務(wù)器與前端開發(fā)技巧。

另一個(gè)改進(jìn)是避免客戶端硬編碼API路由。也許你需要考慮一些API端點(diǎn)的字典。因此,當(dāng)您更改API路由時(shí),只需刷新一個(gè)字典即可。前端仍然有一個(gè)有效的端點(diǎn)。

通常在開發(fā)過(guò)程中,你將至少有2個(gè)終端窗口:一個(gè)是Flask和另一個(gè)是vue.js。在生產(chǎn)中可以擺脫Vue而只單獨(dú)運(yùn)行Node.js服務(wù)器。

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注Gxl網(wǎng)其它相關(guān)文章!

推薦閱讀:

vue封裝輕量級(jí)文件上傳組件

使用iScroll做出網(wǎng)頁(yè)內(nèi)容滾動(dòng)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vue.js+Flask做出手機(jī)App

Vue.js+Flask做出手機(jī)App:這次給大家?guī)?lái)Vue.js+Flask做出手機(jī)App,Vue.js+Flask做出手機(jī)App的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。一般來(lái)說(shuō),如果你只是想通過(guò)Flask模板使用vue.js庫(kù)也是沒(méi)有問(wèn)題的。但是,實(shí)際上是一個(gè)很明顯的問(wèn)題那就是,Jinja(模板引擎)也和
推薦度:
標(biāo)簽: app vue.js flask
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 宽甸| 达日县| 茌平县| 周口市| 高要市| 柳州市| 宣化县| 马山县| 凌云县| 育儿| 克山县| 宜昌市| 镇坪县| 内乡县| 龙里县| 汽车| 阳原县| 客服| 邢台市| 古交市| 锡林郭勒盟| 嘉荫县| 柳林县| 华阴市| 元谋县| 弥勒县| 平果县| 顺义区| 娄底市| 泾源县| 额尔古纳市| 江华| 佛学| 嵩明县| 贵州省| 乐昌市| 民县| 井陉县| 东阿县| 阿拉善盟| 阳高县|