摘要:初始項(xiàng)目設(shè)置我們將使用包管理器來處理依賴項(xiàng)。使用包管理器可以使您的項(xiàng)目依賴項(xiàng)保持最新狀態(tài),并能夠獲取和安裝最新的包。是小型應(yīng)用的最佳選擇之一。
翻譯:瘋狂的技術(shù)宅
英文標(biāo)題:Creating a full-stack web application with Python, NPM, Webpack and React
英文原文:https://codeburst.io/creating...
本文首發(fā)微信公眾號:充實(shí)的腦洞 。轉(zhuǎn)載需注明出處!
把想法變?yōu)楝F(xiàn)實(shí)的能力是空想家與實(shí)干家的區(qū)別。不管你是在一家跨國公司工作,還是正在為自己的創(chuàng)業(yè)公司而努力,那些有能力將創(chuàng)意轉(zhuǎn)化為真正產(chǎn)品的人,都具有寶貴的技能并擁有明顯的實(shí)力。如果你能在不到一個小時的時間里創(chuàng)建一個全棧的Web應(yīng)用,那么你就有能力為自己下一個偉大的想法迅速的的創(chuàng)建一個簡單的MVP,或者在工作中快速構(gòu)建一個新的應(yīng)用程序。
本文介紹了創(chuàng)建一個簡單的全棧Web應(yīng)用所需的步驟,其中包括一個Python服務(wù)器和一個React前端。你可以輕松的在其基礎(chǔ)上進(jìn)行構(gòu)建,根據(jù)你的實(shí)際需求進(jìn)行修改,或是添加一些其他技術(shù)特性,例如Redux。
世界在互聯(lián)網(wǎng)的驅(qū)動下,計(jì)算機(jī)的基本技術(shù)和簡單工具已經(jīng)成為現(xiàn)代商業(yè)人士的必備技能。本文適合想要學(xué)習(xí)怎樣制作一個簡單的基于web的應(yīng)用程序,并且具備基本編程技能的人。
盡管你可以在我的GitHub上找到本文所有的源代碼,但是如果你能夠從頭開始創(chuàng)建這個程序,將會得到最好的學(xué)習(xí)成果。
初始項(xiàng)目設(shè)置. ├── README.md └── fullstack_template/ ├── server/ └── static/ ├── css/ ├── dist/ ├── images/ └── js/
我們將使用npm包管理器來處理Javascript依賴項(xiàng)。Npm是非常棒的,因?yàn)樗子谑褂茫辛己玫奈臋n支持,有將近50萬個包可供使用,以及合理的默認(rèn)項(xiàng)目設(shè)置方案。
使用包管理器可以使您的項(xiàng)目依賴項(xiàng)保持最新狀態(tài),并能夠獲取和安裝最新的包。
讓我們初始化項(xiàng)目:
$ cd fullstack_template/static $ npm init
在初始化的過程中可以接受默認(rèn)設(shè)置,但是你最好填寫自己的程序名稱和Git庫等參數(shù),結(jié)束后會自動在你的static目錄下生成一個名為package.json 的文件。
package.json文件有如下幾個作用:
跟蹤所有的依賴項(xiàng)及其版本。
它可是使其他開發(fā)人員了解你的項(xiàng)目,比如應(yīng)用的名稱、說明、所有者和所在存儲庫的位置。
可以非常容易的通過npm進(jìn)行自動化安裝、運(yùn)行和更新。
安裝和配置WebpackWebpack是一個模塊打包器。它可以處理你所有的模塊依賴,并生成靜態(tài)資源。 使用模塊打包器可以減少瀏覽器需要加載的模塊數(shù)量,從而大大縮短了網(wǎng)頁的加載時間。
演示了Webpack是怎樣工作的
安裝Webpack:
$ npm i webpack --save-dev
要使用Webpack,我們需要添加一個 Webpack 配置文件。這個配置告訴 Webpack 在哪里可以找到 JavaScript 和 React 文件,以及在哪里放置生成的JavaScript包。
在static目錄中添加一個名為webpack.config.js的文件,下面的內(nèi)容如下:
const webpack = require("webpack"); const config = { entry: __dirname + "/js/index.jsx", output: { path: __dirname + "/dist", filename: "bundle.js", }, resolve: { extensions: [".js", ".jsx", ".css"] }, }; module.exports = config;添加運(yùn)行命令
向package.json文件中添加一些運(yùn)行命令會是你的開發(fā)過程更加順暢。我總是在自己的package.json 文件中添加一些build, dev-build 和 watch 命令。
build用于構(gòu)建生產(chǎn)環(huán)境版本, dev-build用于開發(fā)時的構(gòu)建版本,watch的作用和dev-build類似,只不過可以自動監(jiān)視項(xiàng)目文件是否修改,并且自動重新構(gòu)建被修改的部分,你只需要刷新瀏覽器就可以看到改動后的結(jié)果。
自動化構(gòu)建你的項(xiàng)目還有一個好處,那就是你不會耗費(fèi)時間去思考為什么修改了代碼卻看不到效果,一般遇到這種情況純粹是因?yàn)槟阃浟藰?gòu)建它們!
以下是我的 package.json 文件內(nèi)容:
{ "name": "FullStackTemplate", "version": "1.0.0", "description": "A Template for creating a Full Stack Web Application using Python, NPM, Webpack and React", "main": "index.js", "scripts": { "build": "webpack -p --progress --config webpack.config.js", "dev-build": "webpack --progress -d --config webpack.config.js", "test": "echo "Error: no test specified" && exit 1", "watch": "webpack --progress -d --config webpack.config.js --watch" }, "keywords": [ "fullstack", "template", "python", "react", "npm", "webpack" ], "author": "Angela Branaes", "license": "MIT", "devDependencies": { "webpack": "^3.0.0" } }添加Babel支持
Babel能夠允許我們使用最新的JavaScript特性編碼,即便是瀏覽器還沒有支持它們。通過安裝ES2015和react presets,Babel能夠把使用 Javascript 新特性和 React jsx 的代碼轉(zhuǎn)換為與當(dāng)前瀏覽器兼容的 JavaScript 語法。
Babel轉(zhuǎn)換JavaScript代碼的示例
安裝Babel:
$ npm i babel-core babel-loader babel-preset-es2015 babel-preset-react --save-dev
添加Babel presets到package.json文件中:
"babel": { "presets": [ "es2015", "react" ] },
在 Webpack 的配置中添加一條 babel-loader 規(guī)則。注意,我們在規(guī)則中排除了node_modules。這可以保證 Babel 不會嘗不會對 node 模塊進(jìn)行轉(zhuǎn)換,從而不會影響到node程序的加載速度。
module: { rules: [ { test: /.jsx?/, exclude: /node_modules/, use: "babel-loader" } ] }
創(chuàng)建 index.jsx 和 index.html
為了能在瀏覽器中看到一些東西,我們將創(chuàng)建一個簡單的index.html頁面,這個頁面只顯示一個由JavaScript彈出的“Hello World!”對話框,以此來證明設(shè)置是正確的。
在static目錄中創(chuàng)建一個index.html文件,并填寫下面的代碼:
Creating a Full-Stack Python Application with NPM, React.js and Webpack
在static/js目錄下創(chuàng)建一個index.jsx文件,并添加下面的代碼:
alert(“Hello World!”);
啟動一個獨(dú)立的終端窗口來運(yùn)行前面創(chuàng)建的 Webpack watch 命令,這樣當(dāng)我們在工作時,它可以在后臺一直運(yùn)行。它會在沒有編碼錯誤的前提下自動構(gòu)建你的包。
$ npm run watch
打開瀏覽器并訪問index.html,應(yīng)該能夠看到彈出一個寫著“Hello World!”的提示窗口。
創(chuàng)建一個簡單的 React 應(yīng)用首先需要安裝React:
$ npm i react react-dom --save-dev
下一步讓我們用一個簡單的 React 應(yīng)用替換掉前面的index.jsx,并讓它加載一個創(chuàng)建在多帶帶的 App.js 文件中的 React 類。
// index.jsx import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; ReactDOM.render(, document.getElementById("content"));
React 類需要在不同的React源碼文件中做導(dǎo)出,以方便后面的使用。通常每個文件中只寫一個類,并且導(dǎo)出。
// App.jsx import React from “react”; export default class App extends React.Component { render () { returnHello React!
; } }
如果我們現(xiàn)在刷新瀏覽器,頁面上將會顯示“Hello React!”,而不再是“Hello World!”提示框。
配置Python服務(wù)關(guān)于Python服務(wù)器我們將會使用Flask。Flask是小型Python應(yīng)用的最佳選擇之一。“微框架(microframework)”可以使你在短短幾分鐘內(nèi)輕松快速的使一個服務(wù)跑起來。對于大型應(yīng)用和某些專業(yè)領(lǐng)域,企業(yè)通常會使用 Pyramid 或 Django。如果你想在自己的環(huán)境中擁有很大的靈活性和能夠自定義配置的特性,Pyramid是一個不錯的選擇。Django則提供了一個全功能的Web框架,同時使你不必為應(yīng)用的配置花費(fèi)太多的時間,比如在數(shù)據(jù)庫配置等方面。
創(chuàng)建一個新的virtualenv并安裝Flask
在server目錄中創(chuàng)建Flask服務(wù)源碼文件,添加一個用來返回返回“Hello World!”的端點(diǎn)路由“/hello”,再添加一個主頁面端點(diǎn)路由 “/“ 用來渲染index.html 模版。
# server.py from flask import Flask, render_template app = Flask(__name__, static_folder="../static/dist", template_folder="../static") @app.route("/") def index(): return render_template("index.html") @app.route("/hello") def hello(): return "Hello World!” if __name__ == "__main__": app.run()
運(yùn)行python服務(wù):
$ python server.py
接下來訪問http://localhost:5000/就可以看到 react 應(yīng)用提供的的“Hello React!”提示。訪問http://localhost:5000/hello 將會看到由Python端點(diǎn)路由返回的“Hello World!”
恭喜,現(xiàn)在你已經(jīng)有了一個基本的全棧應(yīng)用
如果你想要學(xué)習(xí)如何與服務(wù)器進(jìn)行通信,以及怎樣使自己的程序更加美觀,請等待本文的下半部分:《一個小時搭建一個全棧Web應(yīng)用框架——界面美化與功能實(shí)現(xiàn)》
本文首發(fā)于公眾號:充實(shí)的腦洞 | |
---|---|
歡迎掃碼關(guān)注,一個技術(shù)宅的保留地 |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87305.html
摘要:初始項(xiàng)目設(shè)置我們將使用包管理器來處理依賴項(xiàng)。使用包管理器可以使您的項(xiàng)目依賴項(xiàng)保持最新狀態(tài),并能夠獲取和安裝最新的包。是小型應(yīng)用的最佳選擇之一。 翻譯:瘋狂的技術(shù)宅英文標(biāo)題:Creating a full-stack web application with Python, NPM, Webpack and React英文原文:https://codeburst.io/creating....
摘要:點(diǎn)擊直達(dá)前文譯一個小時搭建一個全棧應(yīng)用框架上如果沒有,但還是要繼續(xù)學(xué)習(xí)本教程,可以到我的頁面下載代碼。從服務(wù)器返回隨機(jī)語言的每當(dāng)我們與服務(wù)器上的端點(diǎn)進(jìn)行通話時,為了能夠請求一個隨機(jī)的歐洲語言,必須更改文件中的功能。 翻譯:瘋狂的技術(shù)宅原文標(biāo)題:Creating a full-stack web application with Python, NPM, Webpack and Reac...
摘要:點(diǎn)擊直達(dá)前文譯一個小時搭建一個全棧應(yīng)用框架上如果沒有,但還是要繼續(xù)學(xué)習(xí)本教程,可以到我的頁面下載代碼。從服務(wù)器返回隨機(jī)語言的每當(dāng)我們與服務(wù)器上的端點(diǎn)進(jìn)行通話時,為了能夠請求一個隨機(jī)的歐洲語言,必須更改文件中的功能。 翻譯:瘋狂的技術(shù)宅原文標(biāo)題:Creating a full-stack web application with Python, NPM, Webpack and Reac...
摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問起有關(guān)與時,老司機(jī)們首先就會告訴你其實(shí)是個沒有網(wǎng)絡(luò)請求功能的庫。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡單 原文地址:Learning React.js is easier than you think 原文作...
2017-08-18 前端日報 精選 [譯] 關(guān)于 React Router 4 的一切騰訊祭出大招VasSonic,讓你的H5頁面首屏秒開用簡單的方法學(xué)習(xí)ECMAScript 6【譯】一個小時搭建一個全棧Web應(yīng)用框架你應(yīng)該知道的Debug技巧Understanding V8’s Bytecode – DailyJS – MediumAnnouncing TypeScript 2.5 RC 中文...
閱讀 3572·2023-04-25 19:56
閱讀 1679·2021-11-12 10:36
閱讀 1798·2021-11-08 13:19
閱讀 1552·2019-08-30 14:06
閱讀 3044·2019-08-30 11:01
閱讀 1750·2019-08-29 13:23
閱讀 2751·2019-08-29 11:18
閱讀 3436·2019-08-26 13:35