成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編譯為JavaScript:不兼容性的另類解決方案

開發 前端
JavaScript很常用,但也因為其不兼容性很令人頭疼。一個另類的解決方法就是,將其他語言編譯為JavaScript。本文列舉了GWT、Smalltalk、Python等語言將JavaScript做為編譯目標的情況。

搞過Web開發的都或多或少摸過JavaScript,而盡管Javascript無處不在,但還是很難讓人喜歡它。在類似Google V8、Apple/WebKit的Nitro/SquirrelFish Extreme和Firefox的TraceMonkey這樣的VM出現之前,Javascript的性能并不理想。多個瀏覽器間互不兼容的實現也讓開發十分痛苦。jQuery和其他一些類庫提供了方便好用的抽象,可以用同一種API進行編程,甚至消除不兼容性。

另一種解決方法:編譯為JavaScript

解決該問題的另一種方法是徹底隱藏Javascript,將其作為編譯目標。Google的GWT就是一個很成熟的例子,它接受Java代碼(用Java API的一個子集寫的),并將它編譯為針對瀏覽器的Javascript。現實中GWT的真實案例之一就是Google Wave客戶端。最近,一些其他語言的實現也加入了這一行列。

Avi Bryant,Smalltalk Seaside Web框架的作者,開發了Clamato,這是一種能編譯為常見Javascript的Smalltalk方言。Avi在FutureRuby時InfoQ對他的采訪中描述了Clamato的設計原則。

Clamato的指南頁面允許你在瀏覽器中打開一個Clamato(Smalltalk)類瀏覽器,查看并編輯Clamato源代碼。要查找類的話,就使用類瀏覽器左上角的文本框。比較有意思的是那個自托管的基于PEG的Clamato解析器(在文本框中鍵入“PP”可以看到解析器和各種組合程序的類)。從Seaside風格的HTML構造器(Clamato瀏覽器中的HTMLCanvas類)中我們可以看到Seaside的影子。可視化組件能用它來構造GUI,例如,指南中的計數器組件:

  1. renderOn: html  
  2.   html h3 with: @counter.  
  3.   html button  
  4.     with: '+';  
  5.     onClick: [@counter := @counter + 1. self reload].  
  6.   html button  
  7.     with: '-';  
  8.     onClick: [@counter := @counter - 1. self reload]. 

renderOn: html這一行定義了一個新的方法,范例的其他部分是方法體,它構建了帶一個頁眉和兩個按鈕的HTML,兩個按鈕配置了事件處理器。無獨有偶,最近還出現了另一個基于瀏覽器的Smalltalk——GWT Smalltalk。它的作者Peter Fisk之前創造了Vista Smalltalk,它可以基于.Net,也可以基于ActionScript。GWT Smalltalk使用了GWT來生成運行在瀏覽器中的Jaavscript。

GWT Smalltalk剛處于起步階段,但發展很快。目前已經支持使用XMPP,這讓它能方便地與Google Wave進行交互(XMPP是Google Wave極其重要的一部分)。你可以從Industry Misinterpretations對Peter Fisk的采訪播客和GWT Smalltalk的博客上獲得更多細節。

講完了Smalltalk,再來看看Python,它也有自己的Javascript編譯器——pyjamas:

pyjamas是一個獨立的Python到Javascript的編譯器、一個AJAX框架/類庫和一種Widget集API作為入門,最好的去處是在線pyjamas圖書。

另一種能編譯為Javascript的語言是Moby Scheme。讓它如此引人注目的是它針對移動設備(目前是Android)的方式——將代碼編譯為Javascript。這一做法是可行的,因為有PhoneGap,而且Android里那個基于WebKit的瀏覽器自帶了一個高效的Javascript VM。PhoneGap是一個允許Javascript訪問本地設備功能的類庫,這設備可以是加速度計、GPS、攝像頭,也可以是類似通訊簿之類的東西。 PhoneGap的作者用它建起了溝通不同智能電話設備間的橋梁,它們可以有不同的編程環境,只要都有WebKit和快速的Javascript VM就可以了。通過讓Javascript訪問設備功能,就能為智能電話開發跨平臺的應用。

【編輯推薦】

  1. IBM的EGL新工具:更強大的JavaScript?
  2. 十個最常用的JavaScript自定義函數
  3. JavaScript 2.0新特性搶先看 向經典語言靠近
  4. 開源語言排行榜:PHP與JavaScript受青睞
  5. 揭秘史上最昂貴的一行Javascript代碼
責任編輯:yangsai 來源: InfoQ
相關推薦

2015-03-12 10:33:47

Javascript兼容性解決

2010-09-06 14:46:25

CSSXHTML

2010-09-16 10:50:55

CSS兼容IE6

2013-06-17 15:26:35

WP開發WindowsPhonWindows8兼容性

2010-09-15 10:25:18

IE7IE8CSS兼容性

2010-08-26 09:09:11

CSS兼容性

2010-09-15 10:32:54

IE8兼容

2010-10-09 12:58:59

JS腳本兼容

2010-08-11 15:17:51

瀏覽器兼容性問題

2010-08-17 15:26:38

IE7IE8CSS兼容性

2022-03-01 17:24:33

iOS兼容性方案

2010-09-16 11:08:50

JSIEFirefox

2023-04-17 19:43:54

兼容性測試軟件測試

2010-08-20 11:01:10

IE7IE8CSS

2012-02-10 09:12:29

微軟WOAARM

2011-04-12 16:51:29

Javascript兼容性

2010-08-17 15:58:01

IE8兼容性視圖

2009-03-07 09:49:07

Windows 7兼容性

2010-10-08 15:00:08

FirefoxJavaScript兼

2010-08-27 14:35:37

IEFirefox兼容
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰成人在线观看 | 香蕉久久av | 亚洲视频在线观看 | 9porny九色视频自拍 | 欧美一级在线免费观看 | 亚洲精品www | 欧美激情视频一区二区三区在线播放 | 精品亚洲一区二区三区四区五区高 | 国产一级大片 | 精品麻豆剧传媒av国产九九九 | 欧美 日韩 国产 成人 | 久久黄视频 | 三区在线 | 国产区在线免费观看 | 欧美在线精品一区 | 欧美精品在线观看 | 亚洲成人国产精品 | 麻豆久久久9性大片 | 精品欧美视频 | 欧美日韩国产精品一区 | 日本免费一区二区三区 | 午夜天堂 | 成人在线免费 | 中文字幕一区二区三区四区五区 | 国产伦精品一区二区三区高清 | 久久久久久av | 免费午夜剧场 | 精品久久久久久久 | 成人免费视频在线观看 | 成年人网站免费视频 | 中文字幕国产视频 | 一久久久 | 国产成人99久久亚洲综合精品 | 日韩欧美国产精品一区二区 | 97福利在线 | 男女羞羞网站 | 日韩av在线播 | 精品久久一区 | 欧美αv | 国产在线观看av | 日韩中文字幕在线视频 |