javascript作為一種依附于瀏覽器的腳本語言,似乎天生就沒得到過親娘的疼愛。 最開始同志們都只知道用它在html上搞點兒滾動的文字,鼠標后面拖一長串的(*&$W(%*&,或者是狀態欄上不斷跳躍的 xxx歡迎您。那時候的javascript做出的效果,大多屬于畫蛇添足,喧賓奪主型的,只是教給一些小孩子玩玩所謂的技術效果,沒有其他實際意義。 后來很長一段時間里,js的最大作用就是瀏覽器這邊的預先數據校驗,什么document.formName.fieldName.value == ''就focus()alert(),即便這樣很多人也不會用里邊的regex。 等到了ajax這個新瓶舊酒的東西蹦出來了,一開始也是緩慢發展,經歷了漫長的prototypejs一統江湖的時候,通過它足以看到壟斷者的脾 氣,它完全不提供api文檔,還記得當時所有人的建議都是直接去看源代碼,汗啊。幸好人民的力量是偉大的,jquery,mootools,yui一個一 個追了上來,prototypejs為形式所迫,不得不加上api,為廣大勞苦大眾提供更為優秀的服務了。還是競爭力量大啊,公平的市場造就完美的服務。 前言介紹到此為止,咱們就看看在這個號稱ajax百花齊放的年代里,為什么javascript還是不能挺起腰桿,也許在頁面控制上很多組件庫, 比如extjs,yui,jqueryui都邁出了輝煌的一步,但是在其他的方面,比如圖形處理上,javascript依然步履維艱。 最簡單的一個問題就是,javascript到現在也沒有自己的內置ui庫,想想學c,學java,學python什么的,入門教材里中會有一章 會講講可視化開發。但是javascript沒有。 是因為c的第一個hello world是printf在console里的,javascript的第一個hello world是alert在window里的嗎? 這就是明顯的歧視,從來就沒人把javascript當作編程語言里的公民來看待,如果是個作坊,它最多就算個學徒打雜的。很多工作都不屑于讓它 去做。 如果我們想用javascript畫圖,當前可以通過什么途徑實現呢?首先咱們先說好,jfreechart那種后臺生成圖片發送到前臺的方法就 不要包括進來了,我們就排列一下html+js進行畫圖的方式。 1.使用瀏覽器支持的圖形引擎,比如ie下的vml,firefox,opera,safari支持的svg或者canvas。 2.http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm, 這是一個相當純正的js圖形庫,它特立獨行的地方就是:“完全使用div來畫圖。” 3.http://excanvas.sourceforge.net/,google 提供的工具庫,可以在ie下使用vml模擬其他瀏覽器上canvas的api。 4.http://dojotoolkit.org/, 宣傳火暴的dojo提供一套2d和3d的圖形api,會自動根據瀏覽器在vml,svg,canvas之間進行切換。 5.http://prototype-graphic.xilinus.com/這 也是一套根據瀏覽器自動切換實現方式的圖形api。 6.http://www.lutanho.net/svgvml3d/index.html還有這個,是專門用 svg和vml實現3d效果的。 其他一些基于excanvas,jsgraphics的組件庫咱們就不列了,基本這幾年看到的底層圖形庫也就只有這些,有一些還常年累月沒有更新 了。如果你想只使用javascript光是前期的抉擇就是死掉億萬個腦細胞。如果選擇jsgraphics會不會因為使用那么多div造成效率下降啊, 而且它是模擬圖形,縮放旋轉這些圖形變換能保證嗎?如果使用vml,svg,canvas的話,ie和其他瀏覽器完全不對付,就連google出的 excanvas都沒有實現全部的功能,網上說為什么現在很多基于excanvas的報表工具都沒有餅圖,就是因為excanvas用vml實現不了 arcTo和clipTo。好幾兆的dojo就用來畫幾張圖似乎有些不劃算。prototype-graphic只有svn,連發布的下載包都沒有。 svgvml3d自從06年就再沒更新過了。也許有的同學又開始不屑支持ie以外的瀏覽器,那么我偷偷告訴你一件事情,vml在不同版本的ie下面都是有 差矣的。 想想就知道,依靠這些薄弱的圖形庫javascript能敵得過flash嗎?更別提以后出現的什么wwf了。 從某種角度上講,svg其實蠻適合做javascript的外套的,可adobe收購了macromedia,svgviewer從此流 產,flash成了主旋律。即便是ie8宣稱會原生支持svg也不知道要等到何年何月了,到時候誰知道ms會不會又搞出一套不兼容w3c的新標準?即便是 現在支持svg的瀏覽器都沒有完全實現了svg標準的,opera實現的估計最全了,safari和firefox都沒有實現amination動畫標 簽,但是safari的渲染效果更漂亮,挺符合apple一貫作風的。現在想想firefox也就只有調試方便的優點了,pattern,filter好 多都沒有實現,圖形一多還會發頓,估計只能等firefox3了。不知道現在瀏覽器廠商是如何規劃的?如果想支持svg為什么不能實現好標準,半成品用起 來實在有夠不爽。 退一萬步講,就各個瀏覽器都實現了標準,js圖形組件也還完全達不到要求,不可能指望普通開發者拿著文本編輯器從line,rect,cycle 開始畫起,因為現在各自實現的差矣太大,ide完全沒辦法下手,而且大多數人需要能拿來就用button,menu,各式各樣的window,panel 這些svg,vml,canvas也都還不支持,等到滿足條件的時候,市場份額怕早被其他的產品瓜分的一干二凈了。 同志們,現在你們不覺得“用js畫圖是一種自虐行為”嗎?

dm520