英文原文:Yakov Fain,中文編譯:Flash開(kāi)發(fā)者大會(huì )
本文是一段記錄談話(huà),是我跟 Anatole Tartakovsky和 Victor Rasputnis的談話(huà)內容,他們是我的商業(yè)伙伴,來(lái)自Farata系統,這次談話(huà)發(fā)生在我們滑雪后的雪山上。
Yakov.有多種方法可以為它們的企業(yè)創(chuàng )建 Web 應用程序,這和給鄰居里的披薩店開(kāi)發(fā) Web 站點(diǎn)并不相同。在過(guò)去五年中我們一直主要使用 Adobe Flex 作為前端 Web 應用程序的開(kāi)發(fā)。Flex 應用程序運行在可預測的運行時(shí)環(huán)境Flash Player中??删幾gactionscript代碼,并且擁有成套方便的開(kāi)發(fā)工具。
這些天,flex的地位正在”新的戰略”中發(fā)生轉變。即使 Flex 仍然是用于開(kāi)發(fā) Web 應用程序的最佳框架,你仍然可以感覺(jué) HTML5 的壓力。但是,只使用 HTML5 是不足夠開(kāi)發(fā) Web 應用程序的 — 你仍然需要DHTML — HTML、 JavaScript、 CSS 和XMLHttpRequest對象。
Anatole. 過(guò)去我們使用它們進(jìn)行開(kāi)發(fā),現在似乎我們再次進(jìn)入同一水域,難道經(jīng)過(guò)七八年后,它還是同一條河流?DHTML在ie5中就有了,幾年后更名為 AJAX。
Y. 回到1999年,微軟創(chuàng )建XMLHttpRequest對象,讓他們的郵件客戶(hù)端Outlook Web版本在瀏覽器窗口中不需要刷新整個(gè)頁(yè)面就能更新。這么做對嗎?
A. 部分對吧。 IE5中也有XSL轉換工具生成HTML和支持自定義插件開(kāi)發(fā)。IE5的市場(chǎng)占有率在90%左右(指的是1999年),在企業(yè),這是唯一核準的瀏覽器。
Victor. 與此同時(shí),IE5 支持 HTML 組件稱(chēng)為 HTC 的模型。它允許您創(chuàng )建包含自定義組件的屬性和方法的htc文件,所有這些屬性在Web瀏覽器的DOM中是可見(jiàn)的 。
A. 事實(shí)上,比起那些提供HTML5支持的框架,這是一個(gè)更加進(jìn)步的模型。因為您可以使用一種標記語(yǔ)言結合 JavaScript 來(lái)支持您的組件。這種模式是類(lèi)似于 Flex所提供的。今天,我們看一些插件環(huán)境 ,允許使用各種框架。這種情況并沒(méi)有任何好轉。
積極的一面,已更改的 Web 瀏覽器和 JavaScript 的性能大大改善。瀏覽器支持 12/6/8 每個(gè)域的連接 (相對于 2 五年前),這給 AJAX應用程序帶來(lái)性能提升。
Y.但讓我們實(shí)際點(diǎn)來(lái)說(shuō)說(shuō),我作為一個(gè)企業(yè)的 IT 經(jīng)理?yè)碛杏邢薜念A算和 5 人團隊來(lái)開(kāi)發(fā) Web 應用程序。如果我使用可預測的基于良好開(kāi)發(fā)環(huán)境的 Flex 或 Java 等(IDE,編譯器、 調試器、 分析工具) 我的工作會(huì )比較容易。但使用 JavaScript,情況就不同了。首先,使用 JavaScript 開(kāi)發(fā)周期長(cháng) (光閱讀代碼的操作成本就高)。
第二,我不光需要找到熟練的 AJAX 開(kāi)發(fā)者,而且他們需要掌握一堆現代 JavaScript 框架。
第三,編譯器不捕獲程序員錯誤,所以我需要分配更多的時(shí)間進(jìn)行測試。維克托,你怎么看這個(gè)?
V.如果你問(wèn)我有什么大變化 — — 就是感覺(jué)。在這世紀之初,我們工作在 DHTML 環(huán)境中。只有少量的開(kāi)發(fā)者參與這種”令人懷疑”的開(kāi)發(fā)。企業(yè)架構師也難采用這一 pre-AJAX 模式,并且經(jīng)常問(wèn)同樣的問(wèn)題,”這不是 J2EE,對嗎?”,我們會(huì )回答,”對,它不是”。然后,很顯然,就被劃歸到業(yè)余產(chǎn)品。
在過(guò)去六年,用 Flex 開(kāi)發(fā)慢慢成為核準的企業(yè)技術(shù) – 它可編譯,可控制的環(huán)境,具有良好的性能、 測試工具和國際化支持。然而,adobe竟然對flex不管不顧了。
Y.他們處理的方式可以列入教科書(shū)作為極壞的公關(guān)例子,而不是什么值得驕傲的在2011年10月舉行的Adobe MAX 大會(huì )上宣布將flex捐獻給Apache基金會(huì ),博得大家起立鼓掌。事后才一個(gè)月,他們又發(fā)布消息宣布,adobe將不再支持flashplayer (Flex 運行庫) 瀏覽器插件。這聽(tīng)起來(lái)像是,他們想要殺死flex。但是,我們都知道flex還活著(zhù)!
V. 是的它是活著(zhù)。從技術(shù)上講,它仍然是開(kāi)發(fā) Web 應用程序最理想的環(huán)境,但政治上成為過(guò)去的產(chǎn)品。
Y.現在很多企業(yè)創(chuàng )建者會(huì )說(shuō),”5年前我們告訴過(guò)你與JavaScript呆在一起的…”,但我想聽(tīng)聽(tīng)你們的觀(guān)點(diǎn),關(guān)于使用 Flex 與 JavaScript 開(kāi)發(fā)的成本,那一樣更貴?
V.這取決于管理這個(gè)項目的人的類(lèi)型。如果一個(gè)企業(yè)的經(jīng)理人是一個(gè)臨時(shí)的角色。他工作6-12個(gè)月后,可能被轉移到另一個(gè)位置,或者離開(kāi)公司。他對最終結果是不感興趣的,他可以在特定的時(shí)間內,留在預定的范圍內,但該項目從長(cháng)遠來(lái)看可能會(huì )失敗。
JavaScript 開(kāi)發(fā)者每小時(shí)工資,低于那些知道Flex的開(kāi)發(fā)者。而使用Flex開(kāi)發(fā)更容易,結果似乎很好與基于 JavaScript 的應用程序進(jìn)行比較。用 Flex 開(kāi)發(fā)費用可能最初更多,但產(chǎn)生更好的結果,而這對于企業(yè)經(jīng)理人來(lái)說(shuō)并不重要。
Y. 是的企業(yè)經(jīng)理人的主要目標是往上爬和獲得良好的獎金和退休金,而不是創(chuàng )建先進(jìn)的應用程序。
V. 他們不總是要往上爬。有時(shí)他們跳槽到另一家公司,在相同的位置會(huì )帶來(lái)更多的錢(qián)或其他職業(yè)機會(huì )。這就是為什么對于這些企業(yè)經(jīng)理人來(lái)說(shuō),特定項目的成功可能優(yōu)先級較低。
Y.所以哪個(gè)更昂貴 — — Flex 還是 JavaScript 項目?
V. 如你所知,在 Farata 系統,我們用Flex開(kāi)發(fā)所有的內部項目。但是,如果客戶(hù)打算為JavaScript 打開(kāi)他們的錢(qián)包,我們也很樂(lè )意幫助他們。
A.如果你想用Flex 和 HTML5開(kāi)發(fā)兩個(gè)完全相同的項目,HTML5 項目將更加昂貴的可能性很大。但我懷疑,有人甚至嘗試用HTML5項目來(lái)達到Flex級別的質(zhì)量。首先,任何 HTML5 企業(yè)項目會(huì )有較低的要求。從基本的參數,如可靠性,能夠適應不同屏幕大小和簡(jiǎn)化密度。實(shí)現這些功能,將在包括七個(gè)瀏覽器中測試通過(guò)才行,測試和開(kāi)發(fā)人員將花費大部分時(shí)間在調試中。
你會(huì )節省編譯的時(shí)間,但會(huì )花更多時(shí)間運行時(shí)測試。最后HTML5項目可交付的結果可能不到Flex開(kāi)發(fā)項目的一半。但是,您將獲得一點(diǎn) Web 適應性強、 容易執行全文搜索和聚合的優(yōu)勢。與其他技術(shù)的集成也將變得更容易。使用 HTML/JavaScript。你得決定對于您的應用程序來(lái)說(shuō)這些優(yōu)勢是否都是重要的。如果是,就選擇 HTML5。
但通常HTML 部分這是只是整個(gè)項目的冰山一角?;竟δ芡ǔT?Java 或 .Net開(kāi)發(fā),后臺辦公應用程序無(wú)論如何都要使用 Flex 作 UI開(kāi)發(fā) 。
Y. 踏著(zhù)HTML5標志的所有這些人會(huì )很高興地開(kāi)始新的JavaScript項目,因為它適用于任何地方,它是免費的,許多開(kāi)源的框架,不屬于這些財大氣粗的公司,如Adobe。在過(guò)去,恨透了微軟,在2012年年初,又恨透了Adobe。你可以做任何事情,刪減任何角落,去掉功能,但不要使用Flex啟動(dòng)一個(gè)新項目。這樣,我們就屬于主流 – 我們將使用JavaScript開(kāi)發(fā)。
A.是的,但是 JavaScript 將限制任何重大和復雜的企業(yè)項目。您可以開(kāi)發(fā)一些相當獨立的窗口,但在 HTML 中創(chuàng )建一個(gè)好調試的應用程序 (不是站點(diǎn)) 并非易事。
現在讓我們返回到瀏覽器的性能大幅度提高的前提。由于 JavaScript 框架開(kāi)始支持不同的瀏覽器,在性能和總體用戶(hù)體驗方面,減小了 Flex 和 JavaScript 應用程序之間的差距。我建議建立前端和后端的辦公應用程序之間的明確的邊界。你不用擔心外部用戶(hù)的生產(chǎn)力。但如果是企業(yè)內部用戶(hù)(內勤),他們每個(gè)人是工薪階層,他們需要更好的生產(chǎn)力。
我們花了六年多時(shí)間在在DHTML上。我們寫(xiě)我們自己的框架和為財富100強企業(yè)實(shí)施DHTML企業(yè)應用。我們知道,在這些環(huán)境中的所有漏洞,和那些仍然未打補丁的的。截至今天,你無(wú)法比擬Flex和DHTML。但也有一些狹窄的領(lǐng)域,在那里你必須為Flex應用程序補充DHTML。
大多數企業(yè)應用程序的前端,后端,和內部辦公(支持錯誤修復等)。前端層可以包含DHTML和Flex部分,因為今天開(kāi)發(fā)前端和后臺辦公應用程序是在相同的環(huán)境。
Y.讓我們談?wù)勗谑袌?chǎng)上的 JavaScript 框架的情況。五年前有約 200 種框架。在 2012 年的形勢是有一點(diǎn)點(diǎn)不同 — — 我們說(shuō)的數十個(gè) JavaScript 框架。但盡管如此,沒(méi)有一種框架能涵蓋所有 Web 應用程序的需要。維克托,你怎么看?
V. Adobe 動(dòng)搖了 Flex 世界之后,我很震驚了一會(huì )兒。然后我意識到任何好的工具或環(huán)境總有一天會(huì )被新事物替代?;ㄒ恍r(shí)間研究現在市場(chǎng)的 JavaScript 框架之后我注意到,框架有兩個(gè)主要類(lèi)別:
a) 那些允許你以現有的 Web 站點(diǎn)為基礎,并由一根魔杖,將新屬性添加到所有或某些標記上,他們會(huì )開(kāi)始閃爍,閃耀,或做一些其他有趣的東西。這種框架不提倡基于組件的開(kāi)發(fā)。他們可能不包含導航組件、 網(wǎng)格、 樹(shù),正如阿納托爾所說(shuō),它們是非常典型的企業(yè)開(kāi)發(fā)任務(wù)中的用于 UI 的框架。
b)類(lèi)似于 Flex 提供高級別的組件,它們可能基于標記,并且在 Flex 中編碼,每當你需要知道 Flash Player 內幕時(shí),你甚至能夠深入挖掘此類(lèi)組件。但總體而言,此類(lèi)組件是為了解決不同的問(wèn)題 — 顯示和 CSS 在這里不太重要。這些組件主要處理某些事件,提供模型-視圖-控制器的支持等等。
通過(guò)進(jìn)一步分析,我學(xué)會(huì )了Ext JS 框架,它跟Flex相似,但沒(méi)有提供編譯,數據綁定,而且更少的控制。
我經(jīng)常舉一個(gè)例子,假如一只貓,從我的手提電腦的鍵盤(pán)上跑過(guò),而此時(shí)我正好在文本編輯器中打開(kāi)著(zhù)一個(gè)JavaScript 文件。面即使我沒(méi)有注意到這一點(diǎn),我還是可以成功簽入此文件到代碼庫,但過(guò)后可能無(wú)法正常工作。由此可見(jiàn)未編譯環(huán)境是危險的地方。
Y.你這個(gè)示例,是否也可以用到那些有狗的開(kāi)發(fā)者身上?
V. 可以,但錯誤的數量將增加。
Y.目前,開(kāi)發(fā)者軍團正轉向JQuery 框架。但我們縱向討論。如前所述,JQuery 有利于提高現有 JavaScript 站點(diǎn)。Ext JS 使你開(kāi)始設計應用程序的用戶(hù)界面更接近面向對象的原則。Ext JS 具有豐富的用戶(hù)界面組件,集加載程序,提供事件模型 — 這是一個(gè)不同和更好的方法,阿納托爾,你認為是嗎?
A.現在我主導項目使用這兩種框架。JQuery 是一種小型的框架 (明智的代碼),它可用于開(kāi)發(fā)大約 80%的 Web 站點(diǎn)。您應該使用它的外觀(guān)和用戶(hù)交互體驗的功能。但是,您不能將它用于構建您的應用程序組件模型。Ext JS 的組件模型適用于約 20%的 Web 站點(diǎn),其中包括應用程序模塊,而不是只是一組 Web 頁(yè)。通常它是重要的視圖導航或向導,用來(lái)執行重要業(yè)務(wù)流程,或者工作流包含客戶(hù)端的部分。
Y.Data grid,哦,好…
A.是的,高級別組件和工作流因為用戶(hù)通常需要執行幾個(gè)步驟來(lái)完成業(yè)務(wù)流程。而這些應用程序的 20%將需要花費項目 80%的開(kāi)發(fā)時(shí)間。所以,你不需要在這兩個(gè)框架之間作出選擇。我的 AJAX 項目的主要問(wèn)題不是選擇什么框架去開(kāi)發(fā),而是找到合適的軟件開(kāi)發(fā)者。
V.絕對,極端的專(zhuān)注和注意力是必須的。
Y.或者你可以使用更多的框架,幫助測試。
V.一切必須徹底反復測試。在 JavaScript 中重構是一場(chǎng)噩夢(mèng)。
A.軟件開(kāi)發(fā)人員必須記住— 所有未完成的代碼。我們的許多在已編譯的語(yǔ)言中很有把握的代碼,在 JavaScript 中都是不支持的。
值得一提的另一類(lèi)用Java開(kāi)發(fā)的框架, 用于生成進(jìn)一步的JavaScript,這是一個(gè)有爭議的想法,因為寫(xiě)代碼之后,您需要調試它。這時(shí)你將認識JavaScript,這是你的一門(mén)外語(yǔ)。
Y.我猜,你的意思是 GWT。為什么這是一個(gè)胎死腹中的主意,有一很大原因。 JavaScript 和 Java 編程的的思想和心理都不相同。五年前,我已經(jīng)寫(xiě)了articledemonstrating 講了Cobol、 Java、Lisp程序員如何以不同的方式解決同一任務(wù)。我想,是時(shí)候將 JavaScript 版本添加到此示例中了。
A. 在寫(xiě) Java/GWT 的人已經(jīng)知道如何讀懂和解釋在調試器中的 JavaScript 代碼。另外,GWT 隱藏了很大一部分JavaScript 功能。
Y. 加上 Java 不支持動(dòng)態(tài) programming…
A. 并非太多人使用動(dòng)態(tài)編程,但是這將很好的改變語(yǔ)言。二十年前,有混合的語(yǔ)言,允許使用點(diǎn)符號,要求一些代碼片段,來(lái)執行一些動(dòng)態(tài)和靜態(tài)編程。我們有一個(gè)選擇,要么操作員編譯,要么在運行時(shí)解釋。作為開(kāi)發(fā)者,我的心態(tài)難以平復,直到JavaScript支持這項功能。
V. 阿納托利,通過(guò)多年,人們才接受一種解釋型語(yǔ)言(JavaScript中,ActionScript中,等)在瀏覽器內運行的概念?
A.這個(gè)問(wèn)題在許多年前就提出了 – 記得curl語(yǔ)言嗎?這些語(yǔ)言在R&D …
V.但他們從來(lái)沒(méi)有成為Web瀏覽器使用的標準。
A.完全正確!蘋(píng)果禁止讓Flash Player進(jìn)入其流行的設備中,這成為Flex發(fā)展的一個(gè)巨大的障礙。如果一些廠(chǎng)商決定在他們的設備中不允許任何其他語(yǔ)言或環(huán)境,殺死這些新的想法,同樣的事情也可能發(fā)生。例如,Google推出了一種新的語(yǔ)言稱(chēng)為Dart,但微軟表示,“不,我們將改進(jìn)JavaScript?!?/p>
Y.JavaScript框架承諾向你隱藏所有不兼容,并做到定制功能,如果供應商不要他們的某些功能。
A.我不認為任何人可以將世界文學(xué)翻譯成tribe Tumba-Yumba這種表現力非常有限的語(yǔ)言。這就是為什么不同語(yǔ)言適合不同的任務(wù)或大小不同的應用程序。JavaScript只是一種非?;镜恼Z(yǔ)言。
V. 但如果你使用Ext JS,他們的文檔建議使用ext.create方法替代new操作。從技術(shù)上講,他們是擴展或替換JavaScript本身的結構。任何框架架構師,他要創(chuàng )建一個(gè)受控的環(huán)境,就會(huì )闖進(jìn)JavaScript的困境里去。
A.部分是正確的。如果你想創(chuàng )建一個(gè)真正的動(dòng)態(tài)或靜態(tài)的帶有錯誤檢查和運行時(shí)編譯的語(yǔ)言,你會(huì )設置它們的數據為強類(lèi)型,從而可以?huà)伋霎惓!?/p>
C + +支持操作符重載,人們使用了一段時(shí)間這個(gè)功能。但它并沒(méi)有持續多久 – 他們意識到,閱讀和理解自己的代碼變得十分困難。如果一種語(yǔ)言允許你寫(xiě)一段很難理解的代碼 – 那最好是刪除此代碼。
V.我想添加一個(gè)對JavaScript和ActionScript進(jìn)行比較的話(huà)題……我感到不舒服的是別人會(huì )讀,支持,重構我的JavaScript代碼。其實(shí),我在幾個(gè)月后都會(huì )很難受的重構自己的JavaScript代碼。在非編譯的環(huán)境中,它很棘手。我不記得函數特定的參數是什么類(lèi)型。
在編譯環(huán)境中,我一直都知道每一種對象的類(lèi)型,是否一個(gè)對象仍然有某個(gè)屬性,或者被移除。但是在解釋環(huán)境中沒(méi)有這些。
A. 你可以研究代碼,打開(kāi)每一個(gè)基類(lèi),檢查參考,并找出它的屬性是什么 – 語(yǔ)言將幫助你。在我26歲時(shí),我喜歡動(dòng)態(tài)語(yǔ)言,開(kāi)發(fā)經(jīng)理也聘請年輕,很熱情,但經(jīng)驗不足的開(kāi)發(fā)人員。
V.今天的勞動(dòng)力市場(chǎng),由這樣的人組成 — — 價(jià)格便宜、 熱情,和缺乏經(jīng)驗。
A. 關(guān)于A(yíng)jax的項目,這樣的開(kāi)發(fā)人員將花費前兩個(gè)月的時(shí)間學(xué)習,第三個(gè)月,他將開(kāi)始工作,并在6個(gè)月內退出,退出的原因很簡(jiǎn)單 – 開(kāi)發(fā)已經(jīng)很困難,項目到達了窮途末路。當此類(lèi)項目的代碼庫達到臨界點(diǎn),發(fā)展過(guò)程將被卡住。
V. 開(kāi)發(fā)者退出也不一定是因為該項目卡住了。開(kāi)發(fā)者在就業(yè)市場(chǎng)會(huì )獲得更有價(jià)值的信息。
A. 換句話(huà)說(shuō),該項目將停止在5-6個(gè)月內 – 它變得無(wú)力的,因為它的項目規模。這就是為什么我想強調的AJAX項目和編譯環(huán)境中正在開(kāi)發(fā)的項目,如ActionScript項目,有很大的區別。
Y. 我想回到JavaScript框架和瀏覽器的兼容性問(wèn)題。我喜歡電視機的比喻。即使我的最新,最偉大的3D液晶高清電視機,你有一個(gè)30年前的黑白電視,我們都可以觀(guān)看同一部電影,即使畫(huà)面的質(zhì)量會(huì )有所不同。在如今,可以說(shuō)“用戶(hù)體驗會(huì )有所不同?!?/p>
現在讓我們來(lái)談?wù)劄g覽器。你可能使用最新的谷歌瀏覽器,但我是企業(yè)用戶(hù),使用IE 6。JavaScript應用程序,如何確保在這兩種瀏覽器上做到相同效果?
V. 框架的核心部分,嘗試解決瀏覽器的兼容性。他們盡可能在其限制范圍內確保每個(gè)網(wǎng)頁(yè)在每個(gè)瀏覽器中盡可能好的工作。
A.我不同意。在我看來(lái)你不需要通過(guò)框架的層級來(lái)解決瀏覽器的兼容性,只需要把你的應用程序在不同的瀏覽器中測試和調整就可以了。
V. 是的,我已經(jīng)開(kāi)始對框架作一些修改,對于任何支持框架的廠(chǎng)商而言,保持兼容性是一個(gè)巨大的挑戰。我記得我們在本世紀初創(chuàng )建的XMLSP框架。我們有一個(gè)大不列顛的客戶(hù)說(shuō),“這個(gè)產(chǎn)品是比你的公司大”。如果我沒(méi)有記錯,我們有五人在XMLSP上工作。
我敢肯定,Sencha有更多的開(kāi)發(fā)者為Ext JS工作,這是一個(gè)前所未有的大框架。大部分的代碼庫和任務(wù),正在努力實(shí)現Adobe Flex的功能。這也難怪,任何這樣的框架都始終需要修復和改進(jìn)。
我沒(méi)有懷恨,當我在別人的框架內進(jìn)行修復時(shí)。我知道這些家伙只是沒(méi)有時(shí)間搞定一切。您需要構建一個(gè) JavaScript 框架類(lèi)似于一個(gè)好的樂(lè )高玩具集,很需要你的創(chuàng )造力,別生氣的態(tài)度?;ㄒ恍r(shí)間在框架上來(lái)治愈框架,然后在您的應用程序代碼上工作,至少這是我當前看到的狀態(tài)。
A. 重新措辭一下要么使用的簡(jiǎn)單框架組件,但不解決兼容性問(wèn)題,要么準備卷起袖子,了解框架底下是什么,重新為你的項目配置人員,不僅是應用程序開(kāi)發(fā)人員,還包括系統工程師,還有那些要花一半時(shí)間自定義框架的人。
V. 這么看來(lái)框架也成為你的產(chǎn)品了。我不同意在自定義框架上花一半的時(shí)間。這一切都依賴(lài)于長(cháng)期計劃。您押注在一個(gè)特定的框架,并計劃使用多年,而不是投入改進(jìn),但這個(gè)框架只是為解決一個(gè)項目需要,只適用于一些補丁和變動(dòng)。在大多數項目修補一個(gè)框架就足夠了。
Y. 總之,JavaScript開(kāi)發(fā)人員將需要面臨跟Java,JavaFX,Silverlight或Flex開(kāi)發(fā)者相同的任務(wù):
- 通信的可靠性。如果數據沒(méi)有到達服務(wù)器或從服務(wù)器發(fā)出?是否有可能恢復丟失的數據?從哪里獲得丟失的數據?我們可以重新發(fā)送丟失的數據?并重復做什么?
- 您的應用程序的模塊化。如果用戶(hù)沒(méi)有點(diǎn)擊在主屏幕上的某些菜單項目,就不加載到應該處理此菜單的代碼。
- 如何快速將應用程序的主窗口加載到用戶(hù)的計算機?框架的核心代碼是否沉重?
- 在哪里存儲應用程序的狀態(tài) - 在服務(wù)器還是客戶(hù)端上呢?
- 框架是否提供了豐富的組件庫?
- 框架是否支持創(chuàng )建松耦合的應用程序組件?是否有精心設計的事件模型?
- 你選擇的框架內有沒(méi)有覆蓋大部分應用程序需要,或者你需要使用幾個(gè)框架?
- 是否有寫(xiě)很好的參考文檔可用?
- 是否有一個(gè)活躍的社區,可以幫助你解決技術(shù)問(wèn)題?
我能繼續在這個(gè)清單中添加項目。因此,如果HTML5這個(gè)字眼很容易讓你感到興奮,那么冷靜下來(lái)吧。它不只是添加一個(gè)視頻標記到網(wǎng)頁(yè)中。這是一項艱苦的JavaScript工作??梢灶A見(jiàn),我們公司將迎來(lái)很多有趣和富有挑戰性的項目,辛勤工作,我們不要抱怨。
聯(lián)系客服