整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Web前端開發基礎,帶你認識HTML,一起加入這個歡

          Web前端開發基礎,帶你認識HTML,一起加入這個歡樂的世界

          么是HTML

          大家知道平時上網瀏覽的頁面是怎么做出來的嗎?就是通過今天要給大家介紹的語言HTML來完成的。什么是HTML?超文本標記語言(HyperText Markup Language,簡稱為HTML)

          • HyperText: 是指具有交互功能的文本,如:超鏈接,可以從當前頁面跳到另外一個頁面。超文本在現在的互聯網不僅僅指的的文本文件,還可以是視頻,音樂,圖片等
          • Markup Language:通過特殊的符號表示特定的內容,如標題、段落、圖片、表格、超鏈接等。

          HTML是一種編程語言,編程語言都需要寫到文件中,如何創建文件?可以創建一個文本文件,并命名為:home.html,其中home是文件名,文件擴展名為.html告知瀏覽器這個文件包含HTML,這樣瀏覽器才能正確的解釋HTML并顯示出來。

          什么是HTML

          HTML的發展歷程

          HTML最初于1989年由GERN的Tim Berners-Lee發明,至今已經有30多年的歷史了,在這30年的過程中,HTML經歷了幾次重大的版本更新:

          HTML發展歷程

          HTML在剛剛誕生的時候只有幾個最基礎的標簽,做好的頁面也不好看,但是已經支持了超文本。

          在1995年自HTML3誕生開始,漫長殘酷的瀏覽器戰爭也隨之而來,Netscape和Microsoft兩個瀏覽器廠商都在試圖爭霸世界,這場戰爭的受害者是web開發人員,每個瀏覽器公司都在不斷的增加自己的專用擴展包來試圖保證領先,所以web開發人員通常必須要寫兩個單獨的頁面來適應兩大廠商。

          1997年基于HTML4的標準誕生,瀏覽器大戰結束了,來解救我們的是萬維網聯盟W3C,它的計劃是創建一個唯一的web標準,讓世界恢復平靜,W3C計劃把HTML的結構和表現分離成兩種語言:一種語言用于實現結構(HTML),一種語言用于表現(CSS),并且要求所有的瀏覽器廠商都采用這個標準。

          1999年HTML4.01閃亮登場,成為接下來十年當中HTML的必備版本,因為幾乎所有的瀏覽器都采用了這個標準,讓我們web開發人員的日子也好過了一些,但是除了IE瀏覽器,所以開發人員針對IE瀏覽器總是要做一些額外的工作。

          2000年一個新興的事物引起了我們的注意就是XML,它讓HTML開始心煩意亂,他們兩個終于不情愿的結合在了一起,就有了后來的XHTML,XHTML1.0就此誕生了。XHTML的標準更嚴格,所有的標簽必須由開始標簽和結束標簽組成。所以大部分開發人員很討厭XHTML對于HTML的靈活性更擁護,導致XHTML發展到2.0版本的時候甚至慘遭淘汰,所以這場婚姻的結局并不好。

          HTML基礎

          到了2009年,XHTML很快被HTML5取代,因為HTML5延用了HTML4.01的大部分特性,還提供了很多適合web新發展的新特性,而這正是開發人員一直想要的,并且完全支持XHTML風格的代碼,所以HTML5成為大家公認的標準,并于2014年HTML5正式發布,曾經對標準不屑一顧的IE瀏覽器,自IE9瀏覽器開始也加入了全面支持HTML5的陣營。

          現在很清楚了,HTML5對我們來說意味著什么?跟著我一起加入這個歡樂的世界,關注我,后面會繼續給大家介紹Web前端開發所需掌握的技能。

          前天的內容。繼續:

          1. 根據業務畫出流程圖(dag,有向無環圖)。
          2. 看缺乏哪些函數,直接設計函數,主要入參和出參,根據出入參進行寫邏輯。

          dag圖有了,參考這里:

          https://www.toutiao.com/article/7101114126621229601

          這個時候可以根據dag圖做一些數據結構設計,以及函數設計。

          """前端的作用,
          ---------------------------------------------------------------------------------------
          1.功能1:收集長鏈接并生成短鏈接
            dag流程:收集長URL,并確認長URL有效,如果有效則生成短URL,并傳遞到后端服務器。
            1-1 收集長URL: 通過在index.html 中設計一個表單,客戶輸入表單后,用requests.form 方法獲取表單內容
            1-2 檢查長URL是否有效:通過checkurl(longurl)函數,當longurl 有效則返回1,否則返回0
            1-3 生成短URL:通過createshorturl(longurl)函數,從長url里面截取字段另外加上時間來生成一個短url
            1-4 傳遞到后端服務器:把長短URL的關系記錄到后端
                具體實現可以通過requests.post 方法,向對應的restful api 進行請求(備注1),傳遞jason字段(備注2)
                備注1:這里指post 的url,指requsts.post 請求對應的Url,建議post的url要詳細到具體的接口,比如127.0.0.1:8008/api/shorturlcreate 接口,這樣后端服務器可以根據接口特性來進行相應的邏輯處理
                備注2:制作字典,按照 dic1={短鏈:{"長鏈":長鏈,"訪問日期":"null","創建日期":date}} 創建
                另外,requests.post 方式,選擇data=json 方式傳遞,json字段是對備注2里字典信息做字符串序列化的結果 json.dumps(dic1)
          
          
          2.功能2:收集短鏈接做相關跳轉
            dag流程:收集短url,如果短url存在,則接收服務端的redirect請求,跳轉到短URL對應的長URL鏈接上。
            2-1 收集短url:通過在index.html設計一個表單,客戶輸入表單后,用requests.form方法獲取表單內容
            2-2 檢查短url是否存在:通過checksurl(shorturl)函數,當shorturl有效則返回1,否則返回0 (服務端)
            2-3 跳轉到長URL:通過jumpurl(shorturl)函數,請求到服務端。服務端先判斷短URL是否存在,如果存在則做redirect。
                jumpurl函數設計:
                1.訪問到后端服務器,requests.post(url/api/jump,""), 后端服務器根據URL具體的api來返回信息,返回值里包含了URL信息
                2.服務端要構造返回的Header值,根據Location 參數 ,讓客戶瀏覽器跳轉到對應的長鏈URL中
          
          
          
          3.功能3:請求某個短鏈的訪問信息,并進行展示:
            dag流程:收集短url 對應的信息,如果短URL存在,則返回這個短URL被調度的次數等信息
            3-1 在第2-3步,每次服務端指定后端做跳轉的時候,把短URL被訪問的時間做一個記錄。
                服務端操作:
                每次訪問短鏈的時候,對訪問情況做個統計:
                 3-1-1: {短url:訪問時間} 存入redis 另外一個表里。
                 3-2-2:對之前的 數據結構做個更新,主要是對 shorturl 的value做個update,訪問時間增加一行。
          
            3-2 發起請求,通過requests.post() 函數,傳參數為 /api/statics ,到后端
                收集后端返回的json字符串,查詢時間,短url,以及這個url的訪問列表,{date:[list],"shorturl",url, visittime:[list]}。
                用json.loads() 把信息拿到,然后收集visittime的信息,
                按照天的維度對visittime做一個圖像化。---作業。
          
          
          redis 數據結構設計:
                key:value
                shorturl:{"對應的長鏈接":longurl,"訪問時間":[visitdate1,visitdate2],"創建時間":createdate}
                把短鏈做為Key,把長鏈的信息、訪問時間,創建時間作為value,
          
          ---------------------------------------------------------------------------------------


          前端設計1 :

          1.功能1:收集長鏈接并生成短鏈接

          dag流程:收集長URL,并確認長URL有效,如果有效則生成短URL,并傳遞到后端服務器。

          1.收集長URL:通過在index.html 中設計一個表單,客戶輸入表單后,用requests.form 方法獲取表單內容。

          2.檢查長URL是否有效:通過checkurl(longurl)函數,當longurl 有效則返回1,否則返回0。

          3.生成短URL:createshorturl(longurl)函數。

          4.傳參函數:linkshort_long(shorturl,longurl)

          把長短鏈對照信息做成一個字典,并把字典轉化為json字段。

          restapi 方式向后端傳遞相關信息:requests.post("URL", json=post_data)

          def checkurl(longurl):
              #判斷longurl 是否可以訪問
              #如果是有效的,返回頭為200,則返回1
              #如果長連接無效,返回頭為200 之外的,則返回0
              return result
          
          
          def createshorturl(longurl):
              #頭幾個字符基于時間-年月日時
              #后幾個字符取長鏈的前幾個字段
              return shorturl
          
          def linkshort_long(shorturl,longurl):
              #生成一個json字段,并作為post邏輯的輸入。
              #后續這個字典被Json化后傳入到服務器后端,后端程序基于short url 及 createtype 可以做插入redis的操作。
              dic={"shorturl":shorturl,"date":date,"longurl":longurl,"createtype":"build"}
              return dic

          前端設計2:

          dag流程:收集短url,如果短url存在,則接收服務端的redirect請求,跳轉到短URL對應的長URL鏈接上。

          2-1 收集短url:通過在index.html設計一個表單,客戶輸入表單后,用requests.form方法獲取表單內容

          2-2 檢查短url是否存在:通過checksurl(shorturl)函數,當shorturl有效則返回1,否則返回0 (服務端)

          2-3 跳轉到長URL:通過jumpurl(shorturl)函數,請求到服務端。服務端先判斷短URL是否存在,如果存在則做redirect

          jumpurl函數設計:

          1.訪問到后端服務器,requests.post(url/api/jump,""), 后端服務器根據URL具體的api來返回信息,返回值里包含了URL信息

          2.服務端要構造返回的Header值,根據Location 參數 ,讓客戶瀏覽器跳轉到對應的長鏈URL

          
          def checksurl(shorturl):
              #檢查shorturl 是否在后臺服務中存在,
              #后臺判斷是否存在,如果存在則返回確認
              #如果存在則返回值為真,否則為假
              return result
          
          def jumpurl(shorturl):
              #發數據到服務端,
              #服務端判斷短鏈是否存在
              #如果存在則返回 redirect header,做301
              #同時服務端做一個記錄。
              

          前端設計3:

          3.功能3:請求某個短鏈的訪問信息,并進行展示:

          dag流程:收集短url 對應的信息,如果短URL存在,則返回這個短URL被調度的次數等信息

          3-1 在第2-3步,每次服務端指定后端做跳轉的時候,把短URL被訪問的時間做一個記錄。

          #根據請求,做相關展示邏輯。
          
          @app.route('/shorturl/stats')
          def route_statics():
              #從requests 里面獲取shorturl的信息
              #post到服務端,收集訪問信息
              #從服務端獲取返回數值字典
              #用返回字典做展示,跳到一個單獨的頁面,用render_template模版。
              return dict


          服務端操作:

          每次訪問短鏈的時候,對訪問情況做個統計:

          3-1-1: {url:訪問時間} 存入redis 另外一個表里。

          3-2-2:對之前的 數據結構做個更新,主要是對 shorturl value做個update,訪問時間增加一行。

          3-2 發起請求,通過requests.post() 函數,傳參數為 /api/statics ,到后端

          收集后端返回的json字符串,查詢時間,短url,以及這個url的訪問列表,{date:[list],"shorturl",url, visittime:[list]}

          json.loads() 把信息拿到,然后收集visittime的信息,

          按照天的維度對visittime做一個圖像化。---作業。

          
          def check_ifexist(longurl):
          # 檢查長鏈接是否存在,如果存在則跳過
          
          
          def record_check(dic1):
              #收集長短鏈的鏈接請求,如果是訪問/api/record 則進入邏輯
              #把字典信息直接寫redis(),
              #redis插入,主要插入短鏈(key)及短鏈的對應信息表結構(value),另外針對長鏈接是否存在的表結構(key為長鏈接,value為1)
          
          def record_route(shorturl):
              #收集route請求,如果訪問的是/api/route ,則進入邏輯
              #查詢短鏈對應的長鏈接
              #返回header指定location 為長鏈接
              #通過update redis表,記錄這次訪問,
          


          redis 數據結構設計:

          表1:

          keyvalue

          shorturl:{"對應的長鏈接"longurl,"訪問時間":[visitdate1,visitdate2],"創建時間":createdate}把短鏈做為Key,把長鏈的信息、訪問時間,創建時間作為value

          這樣設計表結構的作用是,每次可以查到visit的訪問時間,可以容易查到shorturl被訪問的情況。

          表2

          key:value

          longurl:shorturl

          主要用來查詢對應的longurl 是否存在,把它作為Key更加容易。


          先寫到這里,感覺還是蠻復雜的,不過經過上面的分析,其實大體程序框架已經ready了。

          下一步準備客戶端、服務端的代碼。

          前的技術總監喊我加入他們的接私活團隊,說他們缺一個前端工程師,不缺后端。可我一直是做后端開發的,前端代碼寫的實在是很少,沒有經驗,寫起來肯定很慢了,所以想對前端的HTML知識點做一個匯總

          HTML代碼結構

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Document</title>
          </head>
          <body>
              <h1>一級標題</h1>
              <br/>
              <h2>二級標題</h2>
          </body>
          </html>

          <!DOCTYPE html>聲明這是一個html文檔;<html>元素是html頁面的根元素;整個html文檔包括兩大部分:head頭和body體。

          meta元素提供了頁面的元信息;title元素描述了文檔的標題;body元素包含了可見的頁面內容。

          HTML元素概念

          開始標簽

          元素內容

          結束標簽

          <h1>

          一個標題

          </h1>

          <br/>

          換行


          • HTML 元素以開始標簽起始 ,以結束標簽終止。
          • 元素內容在其中間,如<h1>html元素概念</h1>。
          • 有些元素沒有內容,沒有結束標簽,如<br/>。

          HTML屬性概念

          下面是適用于大多數 HTML 元素的屬性:

          屬性

          描述

          class

          為元素定義一個或多個類名

          id

          定義元素的唯一id

          style

          設定元素的行內樣式

          實例:<a href="toutiao.com">頭條</a>

          • HTML元素可以設置屬性
          • 屬性描述于開始標簽
          • 屬性以鍵/值對的形式出現


          標題元素

          <body>
              <!-- 一般用在標題上,利于seo優化-->
              <h1>這是標題 1</h1>
              <h2>這是標題 2</h2>
              <h3>這是標題 3</h3>
              <h4>這是標題 4</h4>
              <h5>這是標題 5</h5>
              <h6>這是標題 6</h6>
          </body>
          


          段落與換行元素

          <body>
              <!-- 這是注釋 -->
              <!-- </p> 是塊級元素、前后有空行-->
              <p>這個段落</p>
              <p>這<br>個<br>段落</p>
              <hr/>
          </body> 

          基本格式化標簽

          <body>
              <b>加粗</b>
              <i>斜體</i>
              <small>更小的</small> <br><br>
              <strong>重要的</strong> <br><br>
              這是 <sub> 下標</sub> 和 <sup> 上標</sup> <br><br>
              <del> 刪除的文本
          </body>

          超鏈接(鏈接)

          屬性

          描述

          href

          toutiao.com

          鏈接的地址

          target

          _blank

          在何處顯示

          id


          文檔書簽


          <body>
              <!-- 實例 -->
              文本:<a href="http://www.example.com/">文本</a> <br/>
              圖像: <a href="http://www.example.com/">
                  <img src="URL" alt="描述信息">
              </a> <br/>
              郵件: <a href="mailto:qq@example.com">發送e-mail</a> <br/>
              書簽:
              <a id="tips">書簽</a> <br/>
              <a href="#tips">跳到書簽</a>
          </body>  

          圖像標簽

          屬性

          描述

          src

          圖像的 URL 地址

          alt

          無法載入圖像時,顯示替換文本

          width

          指定寬度

          height

          指定高度

          <body>
              <img src="meinv.jpg" alt="美女" width="280" height="180">
          </body>

          哈哈哈,調皮一下

          HTML表格

          表格由 <table> 標簽來定義。每個表格均有若干行(由 <tr> 標簽定義),每行被分割為若干單元格(由 <td> 標簽定義)。字母 td 指表格數據(table data),即數據單元格的內容。

          數據單元格可以包含文本、圖片、列表、段落、表單、水平線、表格等等。

          <body>
              <!-- 邊框屬性:如果不定義邊框屬性,表格將不顯示邊框-->
              <table border="1">
                  <tr>
                      <!-- 表頭使用<th>標簽定義。瀏覽器會把表頭顯示為粗體居中的文本-->
                      <th>姓名</th>
                      <th>年齡</th>
                      <th>性別</th>
                  </tr>
                  <tr>
                      <td>小紅</td>
                      <td>18</td>
                      <th>女</th>
                  </tr>
                  <tr>
                      <td>小明</td>
                      <td>21</td>
                      <td>男</td>
                  </tr>
              </table>
          </body>  

          HTML列表

          <body>
              <!-- 有序列表 數字進行標記-->
              <ol>
                  <li>蘋果汁</li>
                  <li>草莓汁</li>
              </ol>
              <!-- 無序列表 粗體圓點標記-->
              <ul>
                  <li>咖啡</li>
                  <li>飲料</li>
                  <li>茶
                      <!-- 嵌套列表 -->
                      <ol>
                          <li>紅茶</li>
                          <li>綠茶</li>
                      </ol>
                  </li>
              </ul>
          </body>

          HTM區塊

          • 塊級元素在瀏覽器顯示時,會以新行來開始和結束。如<h1>,<p>,<ul>,<table>
          • 內聯元素在顯示時不會以新行開始。如<b>, <td>, <a>, <img>

          <div> 元素

          <span> 元素

          塊級元素

          內聯元素

          HTML 元素的容器

          文本的容器

          搭配css可對內容塊設置樣式屬性

          搭配css可為文本設置樣式屬性

          HTML 布局

          <body>
              <div style="width:500px">
                  <div style="background-color: antiquewhite;">
                      <h1 style="margin-bottom:0;">網頁頭部信息</h1>
                  </div>
                
                  <div style="background-color: aquamarine; height:200px;width:100px;float:left;">
                      <b>網頁左側信息</b><br>
                      中考資訊<br>
                      高考資訊<br>
                      成人自考
                  </div>
                 
                  <div style="background-color: aqua; height:200px;width:400px;float:left;">
                      主題內容
                  </div>
                 
                  <div style="background-color:#FFA500;clear:both;text-align:center;">
                      底部內容
                  </div>
              </div>
          </body>

          HTML表單

          form表單有兩個屬性:

          action

          method

          定義了服務端的文件名

          數據的提交方式

          對接收到的數據進行處理

          有POST與GET方法

          • post:表單數據會包含在表單體內然后發送給服務器,用于提交敏感數據,如用戶名與密碼等。
          • get:默認值,表單數據會附加在action屬性的URL中。
          <body>
              <!-- 表單是一個包含表單元素的區域
              允許用戶在表單中輸入內容-->
              <form action="" method="">
                  <!-- input 輸入標簽 類型是由type屬性定義-->
          
                  <!-- 文本域 type="text" -->
                  年齡: <input type="text" name="age"><br>
          
                  <!-- 密碼字段 type="password" -->
                  密碼: <input type="password" name="age"><br>
                  
                  <!-- 單選框 type="radio" -->
                  <input type="radio" name="sex" value="male">男
                  <input type="radio" name="sex" value="female">女<br>
                  
                  <!-- 復選框 type="checkbox" -->
                  <input type="checkbox" name="like" value="Coffee">喜歡咖啡
                  <input type="checkbox" name="like" value="tea">喜歡茶<br>
          
                  <!-- 提交按鈕 type="submit" -->
                  <!-- 將表單的內容傳送到服務器 -->
                  <input type="submit" value="提交">
              </form>
          </body>

          HTML框架

          <body>
              <!-- 通過使用框架,你可以在同一個瀏覽器窗口中顯示不止一個頁面。 -->
              <iframe src="test.html" width="200" height="200"></iframe>
          </body>

          height 和 width 屬性用來定義iframe標簽的高度與寬度

          HTML <head> 元素介紹

          <head> 元素定義了文檔的信息,包含了所有的頭部標簽元素。常用的標簽元素如下所示。

          <meta>

          文檔的元數據

          <base>

          頁面鏈接標簽的默認地址

          <title>

          文檔的標題

          <link>

          外部樣式資源

          <style>

          客戶端腳本文件

          <script>

          文檔樣式文件

          <meta> 標簽詳解

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <!-- 定義關鍵詞 -->
              <meta name="keywords" content="生活夢想家, 科技愛好者, 新手剪輯師, 記錄生活, 分享美好">
              <!-- 定義描述內容 -->
              <meta name="description" content="我是一個生活夢想家, 科技愛好者, 新手剪輯師, 記錄生活和分享美好的一個人。">
              <!-- 定義文檔作者 -->
              <meta name="author" content="小明">
              <!-- 每10秒鐘刷新當前頁面 -->
              <meta http-equiv="refresh" content="10">
              <title>Document</title>
          </head>
          <body>
          </body>  
          </html>

          這只是HTML的基本內容,后續還會總結HTML5的知識點。


          主站蜘蛛池模板: 亚洲制服中文字幕第一区| 国产精品99精品一区二区三区| 黄桃AV无码免费一区二区三区 | 日韩中文字幕精品免费一区| 91在线看片一区国产| 精品国产福利一区二区| 麻豆果冻传媒2021精品传媒一区下载| 亚洲一区二区三区国产精华液| 精品免费国产一区二区| 东京热无码av一区二区| 日本内射精品一区二区视频| 一区二区传媒有限公司| 无码日韩人妻AV一区二区三区| 国产婷婷色一区二区三区| 精品香蕉一区二区三区| 亚洲av无码天堂一区二区三区| 午夜精品一区二区三区免费视频| 无码福利一区二区三区| 国产成人片视频一区二区| 3d动漫精品啪啪一区二区中| 精品国产日韩亚洲一区91| 国产丝袜视频一区二区三区| 亚洲综合色一区二区三区| 国产观看精品一区二区三区| 麻豆一区二区三区精品视频| 日本精品一区二区久久久| 久久久久人妻一区精品色| 一区免费在线观看| 日本一区频道在线视频| 国产精品 一区 在线| 99精品国产一区二区三区不卡| 99久久精品国产高清一区二区| 爆乳熟妇一区二区三区霸乳 | 国产日本亚洲一区二区三区| 亚洲夜夜欢A∨一区二区三区| 精品一区二区三区在线播放| 国精无码欧精品亚洲一区| 久久久久人妻一区二区三区vr | 国产91精品一区二区麻豆亚洲| 无码国产精品一区二区免费| 亚洲国产欧美国产综合一区 |