【问题标题】:Can Python be used for client side web development? [closed]Python可以用于客户端Web开发吗? [关闭]
【发布时间】:2009-10-08 20:27:30
【问题描述】:

如果是,是否有推荐的框架/教程/提示/等?

N00b Python,但我拥有大量 PHP 经验并希望扩展我的技能。

我知道 Python 擅长服务器端执行,只是想了解客户端。

【问题讨论】:

  • 客户端=浏览器或客户端=soap / json ...?
  • 对不起,是的浏览器。比如 .html .php。
  • 我自己是一名 Pythonista,但发现 CoffeeScript 非常令人愉快。虽然它不是 Python,但它似乎采用了 Python 的一些更好的特性并编译为 JavaScript。不知道它与睡衣相比如何,我必须自己研究一下。
  • 查看 python 的关于该主题的完整 wiki,特别是查看“Brython”wiki.python.org/moin/WebBrowserProgramming
  • 遗憾的是这个问题已经关闭,否则我会写一个答案而不是评论。如今,将 python 作为客户端的最佳方法是使用 github.com/qquick/Transcrypt

标签: python client-side


【解决方案1】:

Python 并没有真正用于客户端,因为没有主要的网络浏览器内置 Python。

然而,随着 Javascript 的发展,它变得越来越像 Python。您可能想一起学习 Python 和 Javascript。

查看https://developer.mozilla.org/en/New_in_JavaScript_1.7 并注意新功能的类似 Python 的性质。 “数组推导”就像 Python 列表推导一样;迭代器和生成器直接来自 Python; “解构赋值”是一个标准的 Python 习语。

Javascript 有点像带有花括号的 Python。它使用非常不同的继承模型,但有一些库可以在 Javascript 的内置系统之上实现更类似于 Python 的类系统。

【讨论】:

  • 是的,对不起,但由于我还没有达到 125 次代表,我不得不以某种方式表达我的愤怒。为什么 Javascript 不像 python?我喜欢参考这个:destroyallsoftware.com/talks/wat
  • 好的,那个参考(这很有趣!)表明 Javascript 有可怕的奇怪缺陷。这只是意味着你需要确保你永远不会做任何那些破碎的事情。这很糟糕,但如果您正在编写浏览器脚本,您只需要处理它。我最初的主张,你不应该太认真,是 Javascript 是“一种”(不是那里的挥手限定符),就像带有花括号的 Python,我认为这显然是正确的,至少对于某些值“有点儿”。如果你阅读我的链接,你会发现 JS 故意从 Python 中复制了很多东西。
  • 我没关系,但仍然等待浏览器最终添加客户端 Python 支持......
  • Python 是我最喜欢的语言,所以当然我希望看到它作为一流的浏览器端语言得到支持。现在 Python 太慢了,但是带有 JIT 的 PyPy 承诺让 Python 变得非常快。但是我们甚至无法获得所有正常工作的完整 Javascript 实现,因此客户端 Python 在不久的将来将只是一个白日梦。而且我担心重要的空白可能是网络的问题。 (如果我们继续这样反复,StackOverflow 会开始唠叨我们带它去聊天,所以这是我最后一次非聊天评论。)
  • Javascript?像 Python 一样?我不这么认为。对我来说,javascript 非常非常非常令人沮丧。
【解决方案2】:

你见过Skulpt吗?

Skulpt 是一个完全在浏览器中的 Python 实现。

无需预处理、插件或服务器端支持,只需编写 Python 并重新加载。

【讨论】:

  • 非常好..我看到这个问题的第一个想法是。不,它可以运行。我想我错了。
  • 用javascript解释器写python解释器!辉煌!好吧,我敢打赌,至少写作很有趣。
  • 好吧,就在不久之前,javascript 还非常缓慢。 Javascript 变得更好,CPU 变得更快。像 skulpt 这样的东西可以作为一只脚踩在门上。如果客户端 Python 变得足够流行,浏览器将开始原生支持它
  • @gnibbler 在我回答这个问题的 3 年里,javascript 引擎和硬件已经变得更快了。这并不像以前看起来那么难看
  • 今天还有Brython,与Skulpt不同的是,支持Python 2.7+
【解决方案3】:

您可以使用pyjamas 将 Python 代码转换为在浏览器中运行的 JS 代码(请注意,睡衣还提供更多功能)。所以是的,您可以使用 Python 进行客户端 Web 开发。

Pyjamas 基本上是Google Web Toolkit 的一个端口,它允许你用Java 编写客户端代码。

【讨论】:

  • 但这和python生成HTML差不多。 Python 不在客户端。它仅用于生成客户端代码,在本例中为 js。所以,我认为它不适用
  • 不,不是,但它有帮助。 :)
  • @Oscar:这有点像说C++不能在计算机上运行,​​因为它首先被编译成机器码;-)
  • @nikow:嗯,是的,从某种意义上说,一切都可能是汇编语法糖。但是在这个特定的例子中,你绝对没有在客户端运行 python。如果是这种情况,您将需要一个 python 解释器,对吗?但是生成的 js 与 python 无关(同样的方式,由 GWT 生成的 js 中没有 java )它确实有帮助。
  • 很有趣,但对我要找的东西有点害羞
【解决方案4】:

没有。浏览器不运行 Python。

【讨论】:

  • 为什么投反对票,这绝对是真的?给我看一个带有原生 python 解释器的主流浏览器。
  • 我没有投票给你,但其他人已经发布了至少两种在浏览器中运行 Python 的方法,使用额外的代码。 Windows 不允许你在没有额外代码的情况下运行 Python,但你不会说“Windows 不运行 Python”
  • 在原始问题的上下文中,我认为这仍然是正确的答案。当有这么多更好的选择时,没有理智的开发人员会向在浏览器中运行 python 的新开发人员推荐。尽管大肆宣传,但浏览器不是操作系统,因此您受到可用技术的限制。
  • 今天有多种方法可以在浏览器中运行 Python(是否原生是另一个问题)。 skulpt.org brython.info transcrypt.org rapydscript.com pyjs.org trinket.io ... 但是我作为一个编程菜鸟(学习 Python)仍然对此并不完全满意!如果我是百万富翁,我会在 Github 上启动一个项目来发明 PROWSER - 具有原生 Python 支持的下一代浏览器 ...github.com/prowser/prowser
  • 没有解释的编程或脚本语言可以“本地”运行。问题特别提到了框架,所以对不同的执行级别有所了解。其他答案发布了将 Python 代码用于客户端 Web 项目的可行方法。
【解决方案5】:

Python 可供客户端使用:skulpt

如果您感兴趣的客户端可能值得一试

http://jqueryui.com/

【讨论】:

  • 是的,我是 jQuery 的忠实粉丝,谢谢
【解决方案6】:

还没有人提到它,但grail 是/非常酷

Grail 是用 Python 编程语言编写的免费可扩展多平台 Web 浏览器。该项目于 1995 年 8 月启动,并于当年 11 月首次公开发布。 [1] .3 beta 包含超过 27,000 行 Python。[1]它的最后一个版本是 1999 年的 0.6 版,最新版本正在开发中。

【讨论】:

    【解决方案7】:

    Silverlight 可以运行 IronPython,因此您可以制作 Silverlight 应用程序。哪个是客户端。

    【讨论】:

    • 我想在浏览器中运行这个,thnx
    • 嗯,它在浏览器中。但与 Javascript 不一样。伙计,如果我们可以使用 Python 而不是 JS,那就太好了。
    • Silverlight 是一个插件(已经死了),所以从技术上讲,它并不是在浏览器中原生运行的。
    • @Gerald 这很吹毛求疵,但由于 Silverlight 确实已经死了,所以这个答案不再有用了。我会删除它,但话又说回来,整个问题都已结束,那何必呢。 :-)
    【解决方案8】:

    在 Windows 上,注册 Windows 脚本宿主的任何语言都可以在 IE 中运行。至少 Python 的 ActiveState 版本可以做到这一点;我似乎记得这些天已经被更正式的版本取代了。

    但该解决方案需要用户安装 python 解释器并运行一些脚本或 .reg 文件以将正确的“魔法”放入注册表中以使挂钩起作用。

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2011-03-15
      • 2013-12-26
      • 2018-12-16
      • 2011-02-10
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多