Web 開發基礎

一、 Web 開發簡介

  最早的軟件都是運行在大型機上的,軟件使用者登陸到大型機上去運行軟件。后來隨著 PC 機的興起,軟件開始主要運行在桌面上,而數據庫這樣的軟件運行在服務器端,這種 Client/Server 模式簡稱 CS 架構。隨著互聯網的興起,人們發現,CS 架構不適合 Web,最大的原因是 Web 應用程序的修改和升級非常迅速,而 CS 架構需要每個客戶端逐個升級桌面 App,因此,Browser/Server 模式開始流行,簡稱 BS 架構。在 BS 架構下,客戶端只需要瀏覽器,應用程序的邏輯和數據都存儲在服務器端。瀏覽器只需要請求服務器,獲取 Web 頁面,并把 Web 頁面展示給用戶即可。

  當然,Web 頁面也具有極強的交互性。由于 Web 頁面是用 HTML 編寫的,而 HTML 具備超強的表現力,并且,服務器端升級后,客戶端無需任何部署就可以使用到新的版本,因此,BS 架構迅速流行起來。

  今天,除了重量級的軟件如 Office,Photoshop 等,大部分軟件都以 Web 形式提供。比如,新浪提供的新聞、博客、微博等服務,均是 Web 應用。

Web 應用開發可以說是目前軟件開發中最重要的部分。Web 開發也經歷了好幾個階段:

  1. 靜態 Web 頁面:由文本編輯器直接編輯并生成靜態的 HTML 頁面,如果要修改Web 頁面的內容,就需要再次編輯 HTML 源文件,早期的互聯網Web 頁面就是靜態的;

  2. CGI:由于靜態 Web 頁面無法與用戶交互,比如用戶填寫了一個注冊表單,靜態Web 頁面就無法處理。要處理用戶發送的動態數據,出現了Common Gateway?Interface,簡稱 CGI,用 C/C++編寫。

  3. ASP/JSP/PHP:由于 Web 應用特點是修改頻繁,用 C/C++這樣的低級語言非常不適合 Web 開發,而腳本語言由于開發效率高,與 HTML 結合緊密,因此,迅速取代了 CGI 模式。ASP 是微軟推出的用 VBScript 腳本編程的 Web 開發技術,而 JSP用 Java 來編寫腳本,PHP 本身則是開源的腳本語言。

  4. MVC:為了解決直接用腳本語言嵌入 HTML 導致的可維護性差的問題,Web 應用也引入了 Model-View-Controller 的模式,來簡化 Web 開發。ASP 發展為 ASP.Net,JSP 和 PHP 也有一大堆 MVC 框架。

  目前,Web 開發技術仍在快速發展中,異步開發、新的 MVVM 前端技術層出不窮。Python 的誕生歷史比 Web 還要早,由于 Python 是一種解釋型的腳本語言,開發效率高,所以非常適合用來做 Web 開發。Python 有上百種 Web 開發框架,有很多成熟的模板技術,選擇 Python 開發 Web 應用,不但開發效率高,而且運行速度快。

二、 HTTP 協議簡介

  在 Web 應用中,服務器把網頁傳給瀏覽器,實際上就是把網頁的 HTML 代碼發送給瀏覽器,讓瀏覽器顯示出來。而瀏覽器和服務器之間的傳輸協議是 HTTP,所以:

? HTML 是一種用來定義網頁的文本,會 HTML,就可以編寫網頁;
? HTTP 是在網絡上傳輸 HTML 的協議,用于瀏覽器和服務器的通信。
下面的講解基于 Google 的 Chrome 瀏覽器。

我們需要在瀏覽器中很方便地調試我們的 Web 應用,而 Chrome 提供了一套完整地調試工具,非常適合 Web 開發。

安裝好 Chrome 瀏覽器后,打開 Chrome,在菜單中找到并打開“開發者工具”。

?

?

Elements 顯示網頁的結構,Network 顯示瀏覽器和服務器的通信。我們點 Network,確保第一個小紅燈亮著,Chrome 就會記錄所有瀏覽器和服務器之間的通信:當我們在地址欄輸入 www.sina.com.cn 時,瀏覽器將顯示新浪的首頁。在這個過程中,瀏覽器都干了哪些事情呢?通過 Network 的記錄,我們就可以知道

我們來總結一下 HTTP 請求的流程:
步驟 1:瀏覽器首先向服務器發送 HTTP 請求,請求包括:
方法:GET 還是 POST,GET 僅請求資源,POST 會附帶用戶數據;
路徑:/full/url/path;
域名:由 Host 頭指定:Host: www.sina.com.cn
以及其他相關的 Header;
如果是 POST,那么請求還包括一個 Body,包含用戶數據。
步驟 2:服務器向瀏覽器返回 HTTP 響應,響應包括:
響應代碼:200 表示成功;
響應類型:由 Content-Type 指定;
以及其他相關的 Header;

通常服務器的 HTTP 響應會攜帶內容,也就是有一個 Body,包含響應的內容,網頁的HTML 源碼就在 Body 中。

步驟 3:如果瀏覽器還需要繼續向服務器請求其他資源,比如圖片,就再次發出HTTP 請求,重復步驟 1、2。

Web 的 HTTP 協議采用了非常簡單的請求-響應模式,從而大大簡化了開發。當我們編寫一個頁面時,我們只需要在 HTTP 請求中把 HTML 發送出去,不需要考慮如何附帶圖片、視頻等,瀏覽器如果需要請求圖片和視頻,它會發送另一個 HTTP 請求,因此,一個 HTTP 請求只處理一個資源。

HTTP 格式

每個 HTTP 請求和響應都遵循相同的格式,一個 HTTP 包含 Header 和 Body 兩部分,其中 Body 是可選的。

HTTP 協議是一種文本協議,所以,它的格式也非常簡單。

HTTP GET 請求的格式:
GET /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3
每個 Header 一行一個,換行符是\r\n。
HTTP POST 請求的格式:
POST /path HTTP/1.1
Header1: Value1
Header2: Value2
Header3: Value3
body data goes here...
當遇到連續兩個\r\n 時,Header 部分結束,后面的數據全部是 Body。
HTTP 響應的格式:
200 OK
Header1: Value1
Header2: Value2
Header3: Value3

?


body data goes here...

HTTP 響應如果包含 body,也是通過\r\n\r\n 來分隔的。請再次注意,Body 的數據類型由 Content-Type 頭來確定,如果是網頁,Body 就是文本,如果是圖片,Body 就是圖片的二進制數據。

當存在 Content-Encoding 時,Body 數據是被壓縮的,最常見的壓縮方式是 gzip,所以,看到 Content-Encoding: gzip 時,需要將 Body 數據先解壓縮,才能得到真正的數據。壓縮的目的在于減少 Body 的大小,加快網絡傳輸。

HTTP 請求方法

根據 HTTP 標準,HTTP 請求可以使用多種請求方法。
HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

HTTP 狀態碼分類

HTTP 狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,后兩個數字沒有分類的作用。HTTP 狀態碼共分為 5 種類型:

下面是常見的 HTTP 狀態碼:
? 200 - 請求成功
? 301 - 資源(網頁等)被永久轉移到其它 URL
? 404 - 請求的資源(網頁等)不存在
? 500 - 內部服務器錯誤

三、 HTML 簡介

超文本標記語言(HyperText Markup Language,簡稱:HTML)是一種用于創建網頁的標準標記語言。你可以使用 HTML 來建立自己的 WEB 站點,HTML 運行在瀏覽器上,由瀏覽器來解析。HTML 定義了一套語法規則,來告訴瀏覽器如何把一個豐富多彩的頁面顯示出來。HTML 長什么樣?

我們來看看最簡單的 HTML 長什么樣:

<html>
<head><title>Hello</title>
</head>
<body><h1>Hello, world!</h1>
</body>
</html>

可以用文本編輯器編寫 HTML,然后保存為 hello.html,雙擊或者把文件拖到瀏覽器中,就可以看到效果:

?

?

HTML 文檔就是一系列的 Tag 組成,最外層的 Tag 是<html>。規范的 HTML 也包含<head>...</head>和<body>...</body>(注意不要和 HTTP 的 Header、Body 搞混了),由于 HTML 是富文檔模型,所以,還有一系列的 Tag 用來表示鏈接、圖片、表格、表單等等。

總結:

? HTML 不是一種編程語言,而是一種標記語言
? 標記語言是一套標記標簽 (markup tag)
? HTML 使用標記標簽來描述網頁
? HTML 文檔包含了 HTML 標簽及文本內容


3.1 HTML 標簽
HTML 標記標簽通常被稱為 HTML 標簽 (HTML tag)。
HTML 標簽是由 尖括號 包圍的關鍵詞,比如 <html>
HTML 標簽通常是 成對出現 的,比如 <b> 和 </b>
標簽對中的第一個標簽是 開始標簽 ,第二個標簽是 結束標簽
開始和結束標簽也被稱為 開放標簽 和 閉合標簽
  <標簽>內容</標簽>

HTML 元素
"HTML 標簽" 和 "HTML 元素" 通常都是描述同樣的意思.
但是嚴格來講, 一個 HTML 元素包含了開始標簽與結束標簽,如下實例:
HTML 元素:
  <p>這是一個段落。</p>

HTML 速查手冊

四、 CSS 簡介

CSS 是 Cascading Style Sheets(層疊樣式表)的簡稱,CSS 用來控制 HTML 里的所有元素如何展現,比如,給標題元素<h1>加一個樣式,變成 48 號字體,灰色,帶陰影:

<html>
<head><title>Hello</title><style>h1 {color: #333333;font-size: 48px;text-shadow: 3px 3px 3px #666666;}</style>
</head>
<body><h1>Hello, world!</h1>
</body>
</html>
效果如下:                        

CSS 可以通過以下方式添加到 HTML 中:
? 內聯樣式- 在 HTML 元素中使用"style" 屬性
? 內部樣式表 -在 HTML 文檔頭部 <head> 區域使用<style> 元素 來包含 CSS
? 外部引用 - 使用外部 CSS 文件
最好的方式是通過外部引用 CSS 文件.
CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明:

?

選擇器通常是你需要改變樣式的 HTML 元素。
每條聲明由一個屬性和一個值組成。
屬性(property)是你希望設置的樣式屬性(style attribute)。每個屬性有一個值。
屬性和值被冒號分開。
CSS 聲明總是以分號(;)結束,聲明組以大括號({})括起來。
為了讓 CSS 可讀性更強,你可以每行只描述一個屬性。

五、 JavaScript 簡介

JavaScript 雖然名稱有個 Java,但它和 Java 真的一點關系沒有。JavaScript 是為了讓HTML 具有交互性而作為腳本語言添加的,JavaScript 既可以內嵌到 HTML 中,也可以從外部鏈接到 HTML 中。如果我們希望當用戶點擊標題時把標題變成紅色,就必須通過 JavaScript 來實現:

<html>
<head><title>Hello</title><style>h1 {color: #333333;font-size: 48px;text-shadow: 3px 3px 3px #666666;}</style><script>function change() {document.getElementsByTagName('h1')[0].style.color = '#ff0000';}</script>
</head>
<body><h1 onclick="change()">Hello, world!</h1>
</body>
</html>                        

點擊標題后效果如下:

?

HTML 中的 JavaScript 腳本必須位于 <script> 與 </script> 標簽之間。腳本可被放置在 HTML 頁面的 <body> 和 <head> 部分中。通常,我們需要在某個事件發生時執行代碼,比如當用戶點擊按鈕時。如果我們把JavaScript 代碼放入函數中,就可以在事件發生時調用該函數。也可以把腳本保存到外部文件中。外部文件通常包含可被多個網頁使用的代碼。外部 JavaScript 文件的文件擴展名是 .js。如需使用外部文件,請在 <script> 標簽的 "src" 屬性中設置該 .js 文件

小結

如果要學習 Web 開發,首先要對 HTML、CSS 和 JavaScript 作一定的了解。HTML 定義了頁面的內容,CSS 來控制頁面元素的樣式,而 JavaScript 負責頁面的交互邏輯。當我們用 Python 或者其他語言開發 Web 應用時,我們就是要在服務器端動態創建出HTML,這樣,瀏覽器就會向不同的用戶顯示出不同的 Web 頁面。

轉載于:https://www.cnblogs.com/sunBinary/p/10423468.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388201.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388201.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

power bi函數_在Power BI中的行上使用聚合函數

power bi函數Aggregate functions are one of the main building blocks in Power BI. Being used explicitly in measures, or implicitly defined by Power BI, there is no single Power BI report which doesn’t use some sort of aggregate functions.聚合功能是Power BI…

關于如何在Python中使用靜態、類或抽象方法的權威指南

Python中方法的工作方式 方法是存儲在類屬性中的函數&#xff0c;你可以用下面這種方式聲明和訪問一個函數 >>> class Pizza(object):... def __init__(self, size):... self.size size... def get_size(self):... return self.size...>&…

廣義估計方程估計方法_廣義估計方程簡介

廣義估計方程估計方法A key assumption underpinning generalized linear models (which linear regression is a type of) is the independence of observations. In longitudinal data this will simply not hold. Observations within an individual (between time points) …

css二

結構性偽類:nth-child(index)系列1.:first-child2.:last-child3.nth-last-child(index)4.only-child :nth-of-type(index)系列1.first-of-type2.last-of-type3.nth-last-type(index)4.only-of-type :not偽類處理導航欄最后一個豎劃線a:not(:last-of-type) :empty偽類 選中所有內…

Unity3d鼠標點擊屏幕來控制人物的走動

今天呢&#xff0c;我們來一起實現一個在RPG中游戲中十分常見的功能&#xff0c;通過鼠標點擊屏幕來控制人物的走動。首先來說一下原理&#xff0c;當我們點擊屏幕時&#xff0c;我們按照一定的方法&#xff0c;將屏幕上的二維坐標轉化為三維坐標&#xff0c;然后我們從攝像機位…

Java中的ReentrantLock和synchronized兩種鎖定機制的對比

2019獨角獸企業重金招聘Python工程師標準>>> 多線程和并發性并不是什么新內容&#xff0c;但是 Java 語言設計中的創新之一就是&#xff0c;它是第一個直接把跨平臺線程模型和正規的內存模型集成到語言中的主流語言。核心類庫包含一個 Thread 類&#xff0c;可以用它…

10.15 lzxkj

幾天前寫的&#xff0c;忘了放了&#xff0c;在此填坑 10月16的題我出的不寫題解了 lzxkj 題目背景 眾所不周知的是&#xff0c; 酒店之王 xkj 一個經常迷失自我的人 有一天&#xff0c; 當起床鈴再一次打響的時候&#xff0c; TA 用 O(1)的時間在 TA 那早就已經生銹的大腦中自…

大數定理 中心極限定理_中心極限定理:直觀的遍歷

大數定理 中心極限定理One of the most beautiful concepts in statistics and probability is Central Limit Theorem,people often face difficulties in getting a clear understanding of this and the related concepts, I myself struggled understanding this during my…

萬惡之源 - Python數據類型二

列表 列表的介紹 列表是python的基礎數據類型之一 ,其他編程語言也有類似的數據類型. 比如JS中的數 組, java中的數組等等. 它是以[ ]括起來, 每個元素用 , 隔開而且可以存放各種數據類型: lst [1,a,True,[2,3,4]]列表相比于字符串,不僅可以存放不同的數據類型.而且可…

230. Kth Smallest Element in a BST

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.Note: You may assume k is always valid, 1 ≤ k ≤ BSTs total elements.Example 1: Input: root [3,1,4,null,2], k 13/ \1 4\2 Output: 1 Example 2: Input: root …

探索性數據分析(EDA)-不要問如何,不要問什么

數據科學 &#xff0c; 機器學習 (Data Science, Machine Learning) This is part 1 in a series of articles guiding the reader through an entire data science project.這是一系列文章的第1部分 &#xff0c;指導讀者完成整個數據科學項目。 I am a new writer on Medium…

unity3d 攝像機跟隨鼠標和鍵盤的控制

鼠標控制&#xff1a; using UnityEngine; using System.Collections; public class shubiao : MonoBehaviour { //public Transform firepos; public int Ball30; public int CurBall1; public Rigidbody projectile; public Vector3 point; public float time100f; public…

《必然》九、享受重混盛宴,是每個人的機會

今天說的是《必然》的第七個關鍵詞&#xff0c;過濾Filtering。1我們需要過濾如今有一個問題&#xff0c;彌漫在我們的生活當中&#xff0c;困擾著所有人。那就是“今天我要吃什么呢&#xff1f;”同樣的&#xff0c;書店里這么多的書&#xff0c;我要看哪一本呢&#xff1f;網…

IDEA 插件開發入門教程

2019獨角獸企業重金招聘Python工程師標準>>> IntelliJ IDEA 是目前最好用的 JAVA 開發 IDE&#xff0c;它本身的功能已經非常強大了&#xff0c;但是每個人的需求不一樣&#xff0c;有些需求 IDEA 本身無法滿足&#xff0c;于是我們就需要自己開發插件來解決。工欲善…

安卓代碼還是xml繪制頁面_我們應該繪制實際還是預測,預測還是實際還是無關緊要?

安卓代碼還是xml繪制頁面Plotting the actual and predicted data is frequently used for visualizing and analyzing how the actual data correlate with those predicted by the model. Ideally, this should correspond to a slope of 1 and an intercept of 0. However, …

Mecanim動畫系統

本期教程和大家分享Mecanim動畫系統的重定向特性&#xff0c;Mecanim動畫系統是Unity3D推出的全新的動畫系統&#xff0c;具有重定向、可融合等諸多新特性&#xff0c;通過和美工人員的緊密合作&#xff0c;可以幫助程序設計人員快速地設計出角色動畫。一起跟著人氣博主秦元培學…

【嵌入式硬件Esp32】Ubuntu 1804下ESP32交叉編譯環境搭建

一、ESP32概述EPS32是樂鑫最新推出的集成2.4GWi-Fi和藍牙雙模的單芯片方案&#xff0c;采用臺積電(TSMC)超低功耗的40nm工藝&#xff0c;擁有最佳的功耗性能、射頻性能、穩定性、通用性和可靠性&#xff0c;適用于多種應用和不同的功耗要求。 ESP32搭載低功耗的Xtensa LX6 32bi…

你認為已經過時的C語言,是如何影響500萬程序員的?...

看招聘職位要c語言的占比真不多了&#xff0c;是否c語言真得落伍了&#xff1f; 看一下許多招聘平臺有關于找純粹的c語言開發的占比確實沒有很多&#xff0c;都被Java&#xff0c;php&#xff0c;python等等語言刷屏。這對于入門正在學習c語言的小白真他媽就是驚天霹靂&#xf…

換熱站起停條件

循環泵 自動條件&#xff1a; 一、循環泵啟動條件 兩臺泵/三臺泵&#xff1a; 1&#xff09;本循環泵在遠程狀態 2&#xff09;本循環泵自動狀態 3&#xff09;本循環泵沒有故障 4&#xff09;二次網的回水壓力&#xff08;測量值&#xff09;>設定值 5&#xff09;…

云尚制片管理系統_電影制片廠的未來

云尚制片管理系統Data visualization is a key step of any data science project. During the process of exploratory data analysis, visualizing data allows us to locate outliers and identify distribution, helping us to control for possible biases in our data ea…