整合營銷服務商

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

          免費咨詢熱線:

          PyScript:讓Python在HTML中運行

          家好,我是DD,已經是封閉在家的第51天了!

          最近一直在更新Java新特性(https://www.didispace.com/java-features/)和IDEA Tips(https://www.didispace.com/idea-tips/)兩個原創專欄,其他方向內容的動態關注少了。昨天天晚上刷推的時候,瞄到了這個神奇的東西,覺得挺cool的,拿出來分享下:

          相信你看到圖,不用我說,你也猜到是啥了吧?html里可以跑python代碼了!

          看到好多Python公眾號已經開始猛吹未來了,但乍看怎么覺得有點像JSP?或者一些模版引擎?是進步還是倒退呢?與其瞎想,不如仔細看看這個東東的能力吧!

          根據官方介紹,這個名為PyScript的框架,其核心目標是為開發者提供在標準HTML中嵌入Python代碼的能力,使用 Python調用JavaScript函數庫,并以此實現利用Python創建Web應用的功能。

          看到介紹里提到了調用JavaScript函數庫的能力,看來跟JSP或者模版引擎還是有區別的。

          PyScript 快速體驗

          官方給了一個例子,可以幫助我們觀的感受這個開發框架的能力,不妨跟著DD看看,它能做啥吧!

          第一個案例,hello world

          代碼很簡單,就下面這幾行。你只需要創建一個html文件,然后復制進去就可以了。

          <html>
            <head>
              <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
              <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
            </head>
            <body> 
              <py-script> 
                  print('Hello, World!') 
              </py-script> 
            </body>
          </html>
          

          保存好之后,在瀏覽器里打開就能看到這樣的頁面了:

          回頭再看看這個html里的內容,三個核心內容:

          • 引入pyscript的樣式文件:<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
          • 引入pyscript的腳本文件:<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
          • <py-script>標簽中寫具體的python代碼來輸出Hello World

          如果你懶得自己敲代碼的話,本文的兩個案例代碼我打包放在公眾號了,需要的朋友可以關注公眾號“程序猿DD”,回復:pyscript 獲取。

          第二個案例,數據定義 + 數據展示

          先創建一個data.py文件,然后加入前面的代碼。功能很簡單,就是隨機生成(x,y)的坐標

          import numpy as np
          
          def make_x_and_y(n):
              x = np.random.randn(n)
              y = np.random.randn(n)
              return x, y
          

          再創建一個html文件,加入下面的代碼

          <html>
              <head>
                <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
                <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
                <py-env>
                  - numpy
                  - matplotlib
                  - paths:
                    - /data.py
                </py-env>
              </head>
          
            <body>
              <h1>Let's plot random numbers</h1>
              <div id="plot"></div>
              <py-script output="plot">
              import matplotlib.pyplot as plt
              from data import make_x_and_y
          
              x, y = make_x_and_y(n=1000)
          
              fig, ax = plt.subplots()
              ax.scatter(x, y)
              fig
              </py-script>
            </body>
          </html>
          

          這里就稍微復雜一些了,除了hello world中的幾個要點外,這里還有這幾個要關注的地方:

          • <py-env>標簽:這里聲明要引入的包和要引入的文件(上面創建的data.py
          • <py-script output="plot">:這里定義了要在<div id="plot"></div>中輸出的內容,可以看到這里的邏輯都是用python寫的

          這個頁面的執行效果是這樣的:

          是不是很神奇呢?整個過程中都沒有大家熟悉的cs、js內容,就完成了這樣一個圖的頁面實現。

          小結

          最后,談談在整個嘗試過程中,給我的幾個感受:

          1. 開發體驗上高度統一,對于python開發者來說,開發Web應用的門檻可以更低了
          2. 感覺性能上似乎有所不足,幾個復雜的案例執行有點慢,開始以為是部分國外cdn的緣故,后來移到本地后,還是慢。這部分可能還需要進一步優化。

          這個開發框架目前還只是alpha版本,未來一定還會有更多特性與優化出來,總體上我覺得這個框架還是非常cool的,尤其對于剛學會Python,或者只會Python,但又想快速開發Web應用的小伙伴來說,可能將會是個不錯的選擇,那你覺得這個框架如何?未來會不會火?留言區聊聊吧!

          TML教程

          超文本標記語言(英語:HyperText Markup Language,簡稱:HTML)是一種用于創建網頁的標準標記語言。

          您可以使用 HTML 來建立自己的 WEB 站點,HTML 運行在瀏覽器上,由瀏覽器來解析。

          在本教程中,您將學習如何使用 HTML 來創建站點。

          HTML 很容易學習!相信您能很快學會它!

          本教程包含了數百個 HTML 實例。

          使用本站的編輯器,您可以輕松實現在線修改 HTML,并查看實例運行結果。

          <!DOCTYPE html>
          <html>
              <head>
                  <meta charset="utf-8">
                  <title>孫叫獸的博客</title>
              </head>
              <body>
                  <h1>我的第一個標題</h1>
                  <p>我的第一個段落。</p>
              </body>
          </html>

          HTML 文檔的后綴名

          .html

          .htm

          都可以。

          • HTML 簡介

          實例:

          <!doctype html>
          <html>
          <header>
          <meta charset="utf-8">
          <title>孫叫獸的博客</title>
          </header>
          <body>
          <h1>這是我的標題</h1>
          <p>這是我的段落</p>
          </body>
          </html>

          實例解析

          • <!DOCTYPE html> 聲明為 HTML5 文檔
          • <html> 元素是 HTML 頁面的根元素
          • <head> 元素包含了文檔的元(meta)數據,如 <meta charset=“utf-8”> 定義網頁編碼格式為 utf-8。
          • <title> 元素描述了文檔的標題
          • <body> 元素包含了可見的頁面內容
          • <h1> 元素定義一個大標題
          • <p> 元素定義一個段落

          什么是HTML?

          • HTML 是用來描述網頁的一種語言。
          • HTML 指的是超文本標記語言: HyperText Markup Language
          • HTML 不是一種編程語言,而是一種標記語言
          • 標記語言是一套標記標簽 (markup tag)
          • HTML 使用標記標簽來描述網頁
          • HTML 文檔包含了HTML 標簽及文本內容
          • HTML文檔也叫做 web 頁面
          • HTML 標簽
          • HTML 標記標簽通常被稱為 HTML

          標簽

        1. HTML 標簽是由尖括號包圍的關鍵詞,比如 <html>
        2. HTML 標簽通常是成對出現的,比如 <b> 和 </b>
        3. 標簽對中的第一個標簽是開始標簽,第二個標簽是結束標簽
        4. 開始和結束標簽也被稱為開放標簽和閉合標簽
        5. <標簽>內容</標簽>

          html元素

          “HTML 標簽” 和 “HTML 元素” 通常都是描述同樣的意思.

          但是嚴格來講, 一個 HTML 元素包含了開始標簽與結束標簽,如下實例:

          HTML 元素:

          <p>這是一個段落</p>

          web瀏覽器

          Web瀏覽器(如谷歌瀏覽器,Internet Explorer,Firefox,Safari)是用于讀取HTML文件,并將其作為網頁顯示。

          瀏覽器并不是直接顯示的HTML標簽,但可以使用標簽來決定如何展現HTML頁面的內容給用戶

          html網頁結構

          <html>
              <head>
                  <title>頁面標題</title>
              </head>
              <body>
                  <h1>這是一個標題</h1>
                  <p>這是一個段落。</p>
                  <p>這是另外一個段落。</p>
              </body>
          </html>

          html的版本:

          <!DOCTYPE>聲明

          <!DOCTYPE>聲明有助于瀏覽器中正確顯示網頁。

          網絡上有很多不同的文件,如果能夠正確聲明HTML的版本,瀏覽器就能正確顯示網頁內容。

          doctype 聲明是不區分大小寫的,以下方式均可:

          <!DOCTYPE html>
          <!DOCTYPE HTML>
          <!doctype html>
          <!Doctype Html>

          html5

          <!DOCTYPE html>

          html4

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4 Transitional//EN""
          http://www.w3.org/TR/html4/loose.dtd">

          xhtml1.0

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""
          http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

          中文編碼

          目前在大部分瀏覽器中,直接輸出中文會出現中文亂碼的情況,這時候我們就需要在頭部將字符聲明為 UTF-8。

          Python提供的標準庫中有一個名為html的標準庫,該標準庫提供的功能很簡單,僅僅是把一些組成標簽的尖括號或者是一些特殊字符轉換成實體字符。

          這也是Python本身秉持的設計哲學,就是一個函數、一個模塊或者一個標準庫只專注于一件事或者是某一方面的事。



          我們先來大概了解該標準的組成

          
          >>> import html
          >>> dir(html)
          ['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_charref', '_html5', '_invalid_charrefs', '_invalid_codepoints', '_re', '_replace_charref', 'entities', 'escape', 'unescape']

          我們不管那些以_開頭的東東,把注意放在escape和unescape這兩個函數上。

          假設我有一些HTML,我擔心其中會包含一些可能危險的<script>標記。這時有一種方法就是把標簽的尖括號轉換成實體符號,從以上兩個函數的命名可以大概了解相應的功能。

          沒錯escape函數就是轉義的意思,就是把一些字符轉換為實體字符。比如“<”會轉換成“&+lt”、“>”會轉換成“&+gt”等等。(加號表示連接兩邊的符號)

          >>> import html
          >>> help(html.escape)
          Help on function escape in module html:
          
          escape(s, quote=True)
              Replace special characters "&", "<" and ">" to HTML-safe sequences.
              If the optional flag quote is true (the default), the quotation mark
              characters, both double quote (") and single quote (') characters are also
              translated.
          

          查看該函數的幫助可以了解到,它會把特定字符“&”,“<”,“>”等轉換成HTML安全的實體字符。該函數還有一個可選的標記參數,默認為True,意思就是該函數默認為把引用符號(“”、‘’)等一并轉換。

          >>> import html
          >>> demo = "<h1>Hello World!,'</h1>"
          >>> html.escape(demo,quote = False)
          "<h1>Hello World!,'mangfu'</h1>"

          上面的例子中,我設置可選參數quote為False,則它并不會對引號(‘’)進行轉換。

          >>> import html
          >>> demo = "<h1>Hello World!,'</h1>"
          >>> html.escape(demo)
          '<h1>Hello World!,'mangfu'</h1>'

          上面的例子中,我使用該函數默認的可選參數,從結果中可以看出函數輸出已經對引號(‘’)進行轉換。

          至于unescape函數,看該函數的名字就知道它的作用跟escape函數恰恰相反。

          可能大家對這些功能還不是很熟悉,但是這在Web開發方面是很重要的,如果你以后學習Django來搭建自己的網站,會碰到這個功能的。

          大家可以動手試試unescape函數。。。


          主站蜘蛛池模板: 国产成人精品a视频一区| 无码AⅤ精品一区二区三区| 免费无码一区二区三区| 中文字幕aⅴ人妻一区二区| 亚洲人成人一区二区三区| 亚洲电影唐人社一区二区| 人体内射精一区二区三区| 国产精品99精品一区二区三区| 无码一区二区三区AV免费| 精品91一区二区三区| 一区二区三区免费在线视频| 久久99国产精一区二区三区 | 免费高清av一区二区三区| 成人无码AV一区二区| 午夜DV内射一区区| 国产成人精品第一区二区| 日韩AV无码一区二区三区不卡毛片| 91大神在线精品视频一区| 亲子乱av一区二区三区| 人妻体内射精一区二区| 午夜福利av无码一区二区| 亚洲av高清在线观看一区二区| 国产亚洲3p无码一区二区| 国产精品揄拍一区二区久久| 国产一区二区三区在线视頻| 国产乱人伦精品一区二区| 中文字幕一区二区人妻性色| 国产精品99精品一区二区三区 | 国产成人av一区二区三区在线| 中文字幕在线观看一区二区三区 | 欧洲无码一区二区三区在线观看| 99精品国产高清一区二区| 亚欧成人中文字幕一区| 无码少妇一区二区三区浪潮AV| 日本高清不卡一区| 精产国品一区二区三产区| 精品一区二区三区免费毛片| 国产激情一区二区三区| 日韩亚洲一区二区三区| 成人精品一区二区电影| 国产免费播放一区二区|