0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Brython:替代JavaScript的前端开发工具

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-11-02 11:41 次阅读

Python作为胶水语言,真的是无所不能。这不,最近又出现一个基于Python3,目标是替代JavaScript的前端开发工具—Brython.

好用吗?咱今天来试试用它写一个计算器有多简单:

不过,我们首先要知道它作为Python的客户端Web编程工具,和JS有什么区别呢?

1.特点

1.可轻易地在页面中内嵌Python终端进行测试

图片

2.运行速度接近于CPyhon

3.写法方便,社区强大,可进行敏捷开发

我个人觉得相同的功能,用Python写起来可能会比JS快。

4.和JS一样,你不用安装任何东西就可以开始编写

下面就用Brython做一些简单的实验吧。

2.实验

1.在页面上显示 Hello !:

< !doctype html >
< html >
< head >
< meta charset="utf-8" >
< script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython.min.js" >
< /script >
< /head >
< body onload="brython()" >
< script type="text/python" >
from browser import document
document <= "Hello !"
< /script >
< /body >
< /html >

将这份代码保存为index.html,双击在浏览器中打开,即可看到Hello !字样:

图片

原理:

代码的head中,引入了一个Brython引擎附带的 brython.min.js 模块,用于使用Python控制页面。

而在 和 之间就是相应的Python代码。

可以看到,需要在document中显示文本,直接输入:

document <= "你所需要显示的文本"

即可,后续你将会看到用Brython使用标准化的DOM语法和页面交互的例子。

2.用HTML标签来做文本格式化:

如加粗文本:

from browser import document, html
document <= html.B("Hello !")

部分加粗、部分不加粗:

from browser import document, html
document <= html.B("Hello, ") + "world !"

i 标签:

document <= html.UL(html.LI(i) for i in range(5))

超链接:

document <= html.A("Python实用宝典", href="https://pythondict.com")

以上例子如下:

< !doctype html >
< html >
< head >
< meta charset="utf-8" >
< script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython.min.js" >
< /script >
< /head >
< body onload="brython()" >
< script type="text/python" >
from browser import document, html
document <= html.B("Hello !")
document <= html.UL(html.LI(i) for i in range(5))
document <= html.A("Python实用宝典", href="https://pythondict.com")
< /script >
< /body >
< /html >

效果:

图片

3.写一个简单的计算器

先写好简单的图形架构,用th和tr标签即可:

from browser import document, html
calc = html.TABLE()
calc <= html.TR(html.TH(html.DIV("0", id="result"), colspan=3) +
                html.TH("C", id="clear"))
lines = ["789/",
        "456*",
        "123-",
        "0.=+"]
calc <= (html.TR(html.TD(x) for x in line) for line in lines)
document <= calc

图片版代码:

图片

图片

然后加上一些css就可以把这个简单的图形架构变漂亮了:

< style >
*{
font-family: sans-serif;
font-weight: normal;
font-size: 1.1em;
}
td{
background-color: #ccc;
padding: 10px 30px 10px 30px;
border-radius: 0.2em;
text-align: center;
cursor: default;
}
#result{
border-color: #000;
border-width: 1px;
border-style: solid;
padding: 10px 30px 10px 30px;
text-align: right;
}
< /style >

图片

最后只需要做运算符的事件触发器即可,从下面这行代码:

calc <= (html.TR(html.TD(x) for x in line) for line in lines)

可以看出,所有的按钮都被创建为td标签,因此我们要获得所有这些按钮是否被点击,仅需要:

for button in document.select("td"):
    button.bind("click", action)

意思是,按钮被点击后便执行 action 操作,action操作定义如下:

def action(event):
    """Handles the "click" event on a button of the calculator."""
    # The element the user clicked on is the attribute "target" of the
    # event object
    element = event.target
    # The text printed on the button is the element's "text" attribute
    value = element.text
    
    if value not in "=C":
        # update the result zone
        if result.text in ["0", "error"]:
            result.text = value
        else:
            result.text = result.text + value
            
    elif value == "C":
        # reset
        result.text = "0"
        
    elif value == "=":
        # execute the formula in result zone
        try:
            result.text = eval(result.text)
        except:
            result.text = "error"

图片版代码:

图片

如果不是=号或C号,则进行 字符串拼接

如果是C号,则清空result。

如果是=号,则需要计算出结果,直接对字符串用eval()函数即可完成目的。

这边是全部核心代码了,写起来真的极其方便。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1238

    浏览量

    68471
  • 计算器
    +关注

    关注

    16

    文章

    425

    浏览量

    36510
  • javascript
    +关注

    关注

    0

    文章

    511

    浏览量

    53406
  • 前端开发
    +关注

    关注

    0

    文章

    21

    浏览量

    4159
收藏 人收藏

    评论

    相关推荐

    #开发工具 安卓开发工具

    开发工具andriod工具使用
    勤学苦练的废材
    发布于 :2022年11月21日 13:29:13

    可视化的javascript开发工具

    Netscape Visual JavaScript Netscape出品可视化的javascript开发工具。 同时可以下载Visual javascript Component
    发表于 03-31 14:34 13次下载

    Chrome引发WEB开发工具之战,Javascript,

    Chrome引发WEB开发工具之战,Javascript, Flash, Silverlight谁主沉浮?一名Web软件公司的执行官表示谷歌新浏览器Chrome的发布也许将引发新一轮浏览器的战争,但对于同为WEB应用程序开
    发表于 09-12 10:30 594次阅读

    STM32 VR开发工具

    STM32 VR开发工具
    发表于 02-17 13:38 39次下载

    全志VR开发工具

    全志VR开发工具
    发表于 02-17 14:08 31次下载

    ARM开发工具解读

    1.6 ARM开发工具 用户选用ARM处理器开发嵌入式产品时,选择合适的开发工具可以加快开发进度,节省开发成本。根据功能不同,ARM应用软件
    发表于 10-18 13:29 3次下载
    ARM<b class='flag-5'>开发工具</b>解读

    前端开发环境介绍_前端开发环境安装与配置

    本恩主要介绍的是前端开发环境以及前端开发环境安装与配置。现在也有不少前端开发工具,比如Backb
    的头像 发表于 02-01 13:08 1.7w次阅读

    web前端开发工具排行:8款html开发工具推荐下载

    前端负责实现页面效果,后端主要负责功能开发。那web开发都用什么工具呢?最常用的前端开发工具有哪
    的头像 发表于 02-01 17:20 8.5w次阅读

    Microchip苹果配件开发工具

    这一讲是Microchip苹果配件开发工具包苹果配件开发工具
    的头像 发表于 06-06 13:45 2051次阅读

    如何使用KEELOQ3开发工具包作为开发工具来在目标板上仿真和调试固件

    本文档介绍了如何使用 KEELOQ® 3 开发工具包作为开发工具来在目标板上仿真和调试固件。
    发表于 06-13 08:30 36次下载
    如何使用KEELOQ3<b class='flag-5'>开发工具</b>包作为<b class='flag-5'>开发工具</b>来在目标板上仿真和调试固件

    前端需要JavaScript的原因是什么

    前端需要JavaScript为什么?许多微前端解决方案都是JavaScript框架。JavaScript不是可选的。想要高度交互的体验,而
    的头像 发表于 10-16 14:50 2029次阅读

    6个高效的前端开发工具

    高效的前端开发工具有哪些?在互联网中许多开发工具可以让前端开发人员的工作生活变得更加轻松。应用程序的功能越来越丰富,也导致了
    的头像 发表于 01-05 16:00 4057次阅读

    六款程序员必看的前端在线开发工具

    六款程序员必看的前端在线开发工具
    的头像 发表于 04-05 17:03 2549次阅读

    JavaScript开发工具有哪些?

    Web设计开发逐渐成为计算机编程重要部分之一,在这篇文将分享八个最好用的JavaScript开发工具及代码编译器,希望对网页设计师和开发人员有所帮助。
    的头像 发表于 07-27 16:06 5336次阅读

    javascript属于前端

    和动态性。 JavaScript通常被认为是前端开发的基础。前端开发包括网页的设计和开发,以及通
    的头像 发表于 12-03 11:43 699次阅读