Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
的
用PHP生成HTML文檔, 支持標(biāo)簽嵌套縮進(jìn), 支持標(biāo)簽自定義屬性
起因
這個(gè)東西確實(shí)也是心血來(lái)潮寫(xiě)的, 本來(lái)打算是輸出HTML片段用的, 但后來(lái)就干脆寫(xiě)成了一個(gè)可以輸出完整HTML的功能;
我很滿意里邊的實(shí)現(xiàn)縮進(jìn)的機(jī)制, 大家有用到的可以看看
p.s. 現(xiàn)在都是真正的前后端分離了(vue, nodejs, webpack...), 這個(gè)東西喜歡就用, 不喜歡就算了~
支持的標(biāo)簽
html, head, meta, title, body, input, select/option, form, table, div, 注釋, 以及 自定義標(biāo)簽(成對(duì)出現(xiàn)的標(biāo)簽), 還有一大堆屬性(在下邊有介紹)
實(shí)現(xiàn)
整體
1.每個(gè)標(biāo)簽都對(duì)應(yīng)一個(gè)類, 比如 標(biāo)簽<html>, 對(duì)應(yīng)了一個(gè)叫html的類
2.標(biāo)簽中有用到的屬性, 我都放到了一個(gè)類中了, 并提供了方法去獲取賦了值的屬性
嵌套縮進(jìn)
每個(gè)標(biāo)簽我都設(shè)計(jì)了一個(gè)類, 比如 table 標(biāo)簽, 就有一個(gè)叫table的類與之對(duì)應(yīng)
每個(gè)類里邊一般都有以下3個(gè)重要成員:
1.本標(biāo)簽的縮進(jìn)值
2.輸出本標(biāo)簽最終字符串的方法, out()
3.給本標(biāo)簽添加子標(biāo)簽的方發(fā), append()
其中append()接收的是子標(biāo)簽的對(duì)象, 在最終調(diào)用$html->out()的時(shí)候, 每個(gè)子標(biāo)簽對(duì)象里的out()方法會(huì)被依次調(diào)用, 縮進(jìn)值也會(huì)從上層類傳遞到最下層類并累加;
另外, 每個(gè)類都包含了屬性類(calss attribute ), 每個(gè)類的縮進(jìn)值是從屬性類里繼承而來(lái)的, 所以如果修改了屬性類里的縮進(jìn)量, 所有類的縮進(jìn)量就跟著改變了
你也可以給標(biāo)簽類添加一個(gè)自己的縮進(jìn)值來(lái)覆蓋統(tǒng)一的縮進(jìn)值
屬性
我這里的方案是定義一個(gè)類(calss attribute ), 里邊有
1.標(biāo)簽可能擁有的屬性
2.對(duì)應(yīng)的setXxx方法
3.組裝非空的屬性拼成字符串的方法
4.為了不影響下次顯示, 會(huì)有專門(mén)的清空方法, 把之前賦值的屬性都清空
這樣的話, 在定義標(biāo)簽屬性的時(shí)候, 需要的就賦上值, 不需要的不賦值就不會(huì)在最終的HTML代碼中顯示出來(lái)
源碼地址: 傳到碼云了,看其中的test.php文件,是介紹他的用法。
以上就是用php生成HTML文件的類的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注其它相關(guān)文章!
更多技巧請(qǐng)《轉(zhuǎn)發(fā) + 關(guān)注》哦!
天我來(lái)談?wù)勎覍?duì)傳統(tǒng)HTML與VUE的區(qū)別理解(不談太深的區(qū)別,查了一下網(wǎng)上那些說(shuō)的都一樣,我只談很多人最關(guān)心的不一樣的,說(shuō)不對(duì)請(qǐng)理解,對(duì)不太了解或想了解VUE的人)。
1、 什么是vue
官網(wǎng)介紹:vue是一套構(gòu)建用戶界面的漸進(jìn)式框架。它與其他重量級(jí)框架不同的是,vue采用自下而上增量開(kāi)發(fā)的設(shè)計(jì)。Vue的核心庫(kù)只關(guān)注視圖層,非常容易學(xué)習(xí),非常容易與其他庫(kù)或已有項(xiàng)目整合。
Vue的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的API實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖層組件。
2、什么是HTML(HTML5)
HTML5是Web中核心語(yǔ)言HTML的規(guī)范,用戶使用任何手段進(jìn)行網(wǎng)頁(yè)瀏覽時(shí)看到的內(nèi)容原本都是HTML格式的,在瀏覽器中通過(guò)一些技術(shù)處理將其轉(zhuǎn)換成為了可識(shí)別的信息。
總結(jié):它們相同的地方就一句話:用途和結(jié)果都是一樣的,不管是VUE還是HTML,最終都是將數(shù)據(jù)使用各種UI及方式展現(xiàn)給用戶,也就是都是視圖層頁(yè)面的。
有人會(huì)說(shuō)使用HTML和VUE開(kāi)發(fā)有什么區(qū)別呢?許多人覺(jué)得結(jié)果都是視圖層表達(dá),而且VUE打包發(fā)布后不還是HTML+一堆JS文件,而且還要引入導(dǎo)入編譯感覺(jué)特麻煩,感覺(jué)VUE好難,為什么要學(xué)VUE?
1、開(kāi)發(fā)和部署
VUE 開(kāi)發(fā)過(guò)程確實(shí)挺麻煩的,要安裝依賴,要npm一堆包(還經(jīng)常失敗)。而HTML就簡(jiǎn)單多了,直接就拿來(lái)主意,下載下來(lái),改改就用。
部署的話都差不多,都是在任何服務(wù)上都可以直接使用,而且都沒(méi)有什么依賴。
但是我覺(jué)得VUE的開(kāi)發(fā)類似于開(kāi)發(fā)一個(gè)APP,所以他的打包結(jié)果是比純HTML+JS更安全的,相當(dāng)于做過(guò)混淆,因而他發(fā)布后的體積更小。
2、數(shù)據(jù)通訊
HTML+JS 數(shù)據(jù)POST,GET 等基本訪問(wèn)方式,但是如果直接在HTML中使用數(shù)據(jù)判斷,或數(shù)據(jù)循環(huán)輸出必須借助js,jquery等通過(guò)前端處理然后對(duì)id進(jìn)行賦值操作,所以一般只能借助動(dòng)態(tài)語(yǔ)言如php,java,.net等語(yǔ)言環(huán)境進(jìn)行轉(zhuǎn)化,但這樣使得web對(duì)動(dòng)態(tài)語(yǔ)言環(huán)境依賴性過(guò)強(qiáng),造成后端遷移時(shí)太過(guò)于復(fù)雜,而且這樣的Web一般要求前端和后端部署在一起。
VUE則不依賴于動(dòng)態(tài)語(yǔ)言輸出環(huán)境,只要是雙方約定了數(shù)據(jù)傳輸接口,服務(wù)器放在哪里,不管使用什么后臺(tái)語(yǔ)言都沒(méi)關(guān)系,因而他的靈活性更強(qiáng)。
3、安全性
有些產(chǎn)品有些公司對(duì)語(yǔ)言是有選擇的,主要是不想讓代碼暴露太多,而HTML+JS的方式往往是達(dá)不到要求的,因而現(xiàn)在許多企業(yè)還是在使用桌面軟件的形式,又或者是要你使用對(duì)方的云服務(wù),而私有云部署則要貴的很多,而且比較貴的軟件還要安裝秘鑰軟件,加密狗等方式,無(wú)非就是防止你將軟件轉(zhuǎn)移或無(wú)限使用或獲取他的核心算法(雖然js也是有混淆方法的,但很少有人會(huì)這么做,我也沒(méi)試過(guò)但是很影響效率)。
以前我在一個(gè)公司就是加班寫(xiě)了一個(gè)WEB程序里邊有一個(gè)算法是分析公司產(chǎn)品結(jié)構(gòu)的(那時(shí)VUE還不盛行),正好呢又遇到一個(gè)懂點(diǎn)的老板(居然會(huì)用F12),結(jié)果看到核心代碼了,當(dāng)時(shí)就否定了,改用了WinForm 重寫(xiě),那個(gè)辛苦你懂的。
VUE的打包的話,其實(shí)就是根據(jù)在頁(yè)面中所使用到的組件然后根據(jù)你的邏輯關(guān)系等進(jìn)行混淆打包,然后在用戶加載時(shí)按需進(jìn)行加載解析,從某種意義上來(lái)說(shuō)做WEB是一種保護(hù)。我覺(jué)得這與桌面程序及APP打包效果是一樣的(軟件和APP也是可以反編譯嘛,反編譯后的結(jié)果就是混淆),當(dāng)然不說(shuō)加密混淆了。
現(xiàn)在國(guó)內(nèi)出現(xiàn)了像DCloud、APICloud(雖然這二家經(jīng)常打架,畢竟相似度很高,我不做評(píng)論,但不可否認(rèn)對(duì)一個(gè)只會(huì)寫(xiě)HTML+JS的人轉(zhuǎn)寫(xiě)APP是一個(gè)不錯(cuò)的選擇)這些由HTML5開(kāi)始的跨平臺(tái)軟件也開(kāi)始支持VUE了。
最后附上VUE打包后的調(diào)試預(yù)覽圖,純HTML的就不多說(shuō)了,自己F12吧。
51CTO.com快譯】在本文中,我們將逐一介紹目前人氣較高的三種編程語(yǔ)言:PHP、Ruby和Python。
我們將分析它們是如何工作的,它們彼此有何不同,誰(shuí)在使用它們,以及每種語(yǔ)言受歡迎的程度。
一、 PHP:互聯(lián)網(wǎng)上最受歡迎的腳本語(yǔ)言
PHP(超文本預(yù)處理器語(yǔ)言)是由Rasmus Lerdorf設(shè)計(jì)的一種基于服務(wù)器端腳本解釋語(yǔ)言,因?yàn)殚_(kāi)發(fā)效率高、靈活、學(xué)習(xí)成本低,所以常被用于創(chuàng)建動(dòng)態(tài)的交互式網(wǎng)站,當(dāng)然除了網(wǎng)站以為,還可以用它來(lái)實(shí)現(xiàn)APP的API接口開(kāi)發(fā),一些簡(jiǎn)單的服務(wù)程序開(kāi)發(fā),尤其是當(dāng)SWOOLE誕生之后,很多PHP開(kāi)發(fā)者就用這個(gè)來(lái)開(kāi)發(fā)服務(wù)程序。
WordPress是用PHP開(kāi)發(fā)的一個(gè)非常流行的博客平臺(tái),我們可以使用它來(lái)快速實(shí)現(xiàn)我們的網(wǎng)站,同時(shí)還可以使用它來(lái)實(shí)現(xiàn)一些基于CMS的網(wǎng)站系統(tǒng),當(dāng)然如果你對(duì)PHP和WordPress感興趣,可以參考課程(http://rockingcode.com/);你只需要認(rèn)真的學(xué)習(xí)9個(gè)小時(shí)后,就能學(xué)會(huì)如何從零開(kāi)始將一個(gè)網(wǎng)站,設(shè)計(jì)成一個(gè)響應(yīng)式扁平式的WordPress網(wǎng)站。
據(jù)維基百科聲稱,截至2013年1月,PHP已安裝在超過(guò)2.4億個(gè)網(wǎng)站(其中39%抽樣)和210萬(wàn)臺(tái)網(wǎng)站服務(wù)器上。
(1)PHP的優(yōu)點(diǎn)
采用PHP許可證發(fā)布的免費(fèi)軟件
容易上手(學(xué)習(xí)曲線短而平)
由廣大用戶和開(kāi)發(fā)人員組成的龐大社區(qū)
提供了廣泛的數(shù)據(jù)庫(kù)支持
提供大量的可用擴(kuò)展和源代碼
允許在受限制環(huán)境下執(zhí)行代碼
提供原生會(huì)話管理和擴(kuò)展API
對(duì)微軟的ASP(動(dòng)態(tài)服務(wù)器頁(yè)面)等與之競(jìng)爭(zhēng)的語(yǔ)言而言,是個(gè)不錯(cuò)的替代選擇
可以部署到大多數(shù)網(wǎng)站服務(wù)器上
適用于幾乎每一種操作系統(tǒng)和平臺(tái)
(2)PHP的缺點(diǎn)
不適合開(kāi)發(fā)桌面應(yīng)用程序
錯(cuò)誤處理機(jī)制歷來(lái)很差勁
全局配置參數(shù)會(huì)改變語(yǔ)言語(yǔ)義,給部署和可移植性帶來(lái)了復(fù)雜性
對(duì)象在默認(rèn)情況下值調(diào)用(CallByValue),這與大多數(shù)語(yǔ)言恰好相反,這讓許多程序員猝不及防
通常被認(rèn)為不如其他編程語(yǔ)言來(lái)得安全可靠
(3)誰(shuí)在使用PHP?
Zend
雅虎
谷歌
美國(guó)宇航局
萬(wàn)維網(wǎng)聯(lián)盟(W3C)
(4)受歡迎程度
據(jù)維基百科聲稱,截至2013年1月,PHP已安裝在超過(guò)2.4億個(gè)網(wǎng)站(其中39%抽樣)和210萬(wàn)臺(tái)網(wǎng)站服務(wù)器上。
(5)語(yǔ)法
PHP腳本由< ?php開(kāi)始,以?>結(jié)束。PHP文件的默認(rèn)文件擴(kuò)展名是“.php”。PHP文件通常含有HTML標(biāo)記和一些PHP腳本代碼。
<?php// PHP code goes here?>
二、Python:通用編程語(yǔ)言
Python是一種廣泛使用的高級(jí)語(yǔ)言(但它也用于一系列廣泛的非腳本語(yǔ)言),以便程序員用行數(shù)較少的代碼就能表達(dá)概念。它是在上世紀(jì)80年代末提出來(lái)的,由Guido van Rossum開(kāi)發(fā)。
就跟所有腳本語(yǔ)言一樣,Python代碼酷似偽代碼。這種編程語(yǔ)言具有優(yōu)雅的設(shè)計(jì)和語(yǔ)法規(guī)則,這讓它即便在擁有多個(gè)程序員的開(kāi)發(fā)團(tuán)隊(duì)中也具有相當(dāng)強(qiáng)的可讀性。它支持構(gòu)建計(jì)算機(jī)程序的結(jié)構(gòu)和元素的多種方法,包括面向?qū)ο缶幊毯秃瘮?shù)式編程。
(1)Python的優(yōu)點(diǎn)
簡(jiǎn)單易學(xué)
可在多個(gè)系統(tǒng)和平臺(tái)上運(yùn)行
易讀、條理化的語(yǔ)法
提供了快速原型和動(dòng)態(tài)語(yǔ)義功能
出色的社區(qū)支持
通過(guò)測(cè)試和導(dǎo)入關(guān)鍵函數(shù),易于構(gòu)建應(yīng)用程序
通過(guò)認(rèn)真實(shí)施程序包和模塊,獲得可重用性
面向?qū)ο缶幊舔?qū)動(dòng)型
(2)Python的缺點(diǎn)
它在處理多處理器/多核心工作方面其實(shí)不是很好
相比Java等其他語(yǔ)言,Python開(kāi)發(fā)人員群體比較小
缺少商業(yè)支持機(jī)構(gòu),即便對(duì)開(kāi)源項(xiàng)目而言也是如此(不過(guò)這種情況在變化)
數(shù)據(jù)庫(kù)訪問(wèn)層方面有限制
眾所周知,運(yùn)行速度不如Java等語(yǔ)言
(3)誰(shuí)在使用Python?
雅虎地圖
Zope公司
Linux Weekly News
Shopzilla
Ultraseek
(4)受歡迎程度
據(jù)維基百科聲稱,自2008年以來(lái),Python屢屢躋身于TIOBE編程社區(qū)指數(shù)評(píng)選的八大最受歡迎的編程語(yǔ)言。它是語(yǔ)法并非主要基于C的受歡迎程度排在第三位的語(yǔ)言。
(5)語(yǔ)法
調(diào)用解釋器而不將腳本文件作為參數(shù)來(lái)傳遞可調(diào)出下列提示符:
$ pythonPython2.4.3(#1,Nov112010,13:34:43)[GCC4.1.220080704(RedHat4.1.2-48)]on linux2Type<"help<",<"copyright<",<"credits<"or<"license<"formore information.<><><>
將同一文本輸入到Python提示符的右邊,按回車鍵,會(huì)輸出文本:
<><><>print <"Put some text here!<";
(6)崗位需求
據(jù)Jobs Tractor網(wǎng)站在過(guò)去12個(gè)月分析在推特上廣告的45000多個(gè)開(kāi)發(fā)崗位的情況來(lái)看,結(jié)果如下:
PHP – 8238
Ruby – 2937
Python – 1587
雖然PHP在這個(gè)網(wǎng)站上仍擁有最大的統(tǒng)計(jì)數(shù)字,切忌別將這種統(tǒng)計(jì)數(shù)字作為學(xué)習(xí)或使用一種編程語(yǔ)言的參考依據(jù)。
三、Ruby:解釋型的、純粹的面向?qū)ο缶幊陶Z(yǔ)言
Ruby(編程語(yǔ)言)經(jīng)常與Ruby on Rails(或簡(jiǎn)稱rails)在一起,后者是一種開(kāi)源全棧Web應(yīng)用程序框架。它是一種動(dòng)態(tài)、命令式的面向?qū)ο缶幊陶Z(yǔ)言,由日本的松本行弘(Yukihiro Matsumoto)開(kāi)發(fā)。這種語(yǔ)言受到了Perl、Eiffel和Smalltalk的影響。它有動(dòng)態(tài)類型系統(tǒng)和自動(dòng)內(nèi)存管理功能。
(1)Ruby的優(yōu)點(diǎn)
和PHP一樣是開(kāi)源的
適用于多個(gè)平臺(tái)
可以嵌入到超文本標(biāo)記語(yǔ)言(HTML)中
一種甚高級(jí)語(yǔ)言(VHLL)
提供了將數(shù)據(jù)方法封裝在對(duì)象里面的功能
純粹的OOP(面向?qū)ο缶幊蹋?/p>
超豐富的字符串和文本處理技術(shù)/方法
很容易連接DB2、MySQL、Oracle和Sybase等數(shù)據(jù)庫(kù)
用Ruby編寫(xiě)的可擴(kuò)展程序很容易維護(hù)
擁有一套整潔、簡(jiǎn)易的語(yǔ)法,讓新開(kāi)發(fā)人員很容易上手
能夠用一套簡(jiǎn)單的API編寫(xiě)多線程的應(yīng)用程序
提供了高級(jí)的數(shù)組類
能夠用Ruby或C編寫(xiě)外部擴(kuò)展庫(kù)
允許“保留字”用作標(biāo)識(shí)符,只要解析器并不覺(jué)得有歧義,但是不太建議這樣做。
更好的安全功能
它有調(diào)試器
它有靈活的語(yǔ)法
功能強(qiáng)大的字符串處理機(jī)制
(2)Ruby的缺點(diǎn)
很難學(xué)會(huì)
缺少信息資源
相比其他編程語(yǔ)言,處理時(shí)間(CPU時(shí)間)比較長(zhǎng)
開(kāi)發(fā)和更新比較慢
(3)誰(shuí)在使用Ruby?
Google Sketchup
37signals
GitHub
Shopify
Indiegogo
Basecamp
(4)受歡迎程度
據(jù)Ruby官方網(wǎng)站聲稱,Ruby躋身于全球十大最受歡迎的編程語(yǔ)言排行榜(比如TIOBE指數(shù))。其迅猛發(fā)展主要?dú)w功于用Ruby編寫(xiě)的軟件大行其道,尤其是Ruby on Rails Web框架。
(5)語(yǔ)法
所有Ruby文件都會(huì)有擴(kuò)展名“.rb”。使用/usr/bin目錄下的Ruby解釋器,你就可以運(yùn)行Ruby代碼。
#!/usr/bin/ruby -wputs"Put something here";
學(xué)習(xí)一種新的編程語(yǔ)言很費(fèi)時(shí)間,也很乏味。.Net開(kāi)發(fā)人員會(huì)跳出來(lái)說(shuō)“我為啥要學(xué)?我是專業(yè)的.Net開(kāi)發(fā)人員,平日的工作讓我沒(méi)時(shí)間來(lái)學(xué)習(xí)一種新的編程語(yǔ)言。”
但實(shí)則不然。你可以從新的編程語(yǔ)言當(dāng)中學(xué)到許多知識(shí),如果它們對(duì)其他經(jīng)過(guò)優(yōu)化的語(yǔ)言加以完善,更是如此。Ruby就是這樣一種語(yǔ)言。我同樣認(rèn)為,由某種編程語(yǔ)言方面的開(kāi)發(fā)新手變成專業(yè)人員確實(shí)不易,但你會(huì)感謝這番經(jīng)歷。現(xiàn)在我只想告訴大家:如果你堅(jiān)持使用Ruby,那么不會(huì)吃虧。樂(lè)觀些!
(6)Ruby是什么?
如上所述,Ruby是一種完善的語(yǔ)言,它結(jié)合了眾多編程語(yǔ)言的思想和方法。Ruby出色地融合了Python易于理解的流程、Smalltalk的優(yōu)雅性和Perl簡(jiǎn)單易學(xué)的語(yǔ)法風(fēng)格,同時(shí)也是一種高級(jí)的面向?qū)ο缶幊陶Z(yǔ)言(如今的大多數(shù)編程語(yǔ)言都是如此),它是在上世紀(jì)90年代中期出現(xiàn)在日本的,現(xiàn)在Ruby已逐漸開(kāi)始在歐美也更流行起來(lái)。
Ruby以動(dòng)態(tài)類型系統(tǒng)和自動(dòng)內(nèi)存管理著稱。我說(shuō)的動(dòng)態(tài)類型是指,Ruby程序中的大多數(shù)類型檢查是在運(yùn)行時(shí)執(zhí)行的,這意味著你沒(méi)必要為整數(shù)和字符串類型而操心。Ruby會(huì)為你做這項(xiàng)工作。我們會(huì)在后面的一個(gè)簡(jiǎn)短例子中深入探討這個(gè)話題。
推出Ruby的基本目的是讓人們很容易了解代碼與機(jī)器交互。Ruby之父松本行弘堅(jiān)持認(rèn)為,設(shè)計(jì)Ruby的初衷是提高程序員的工作效率,而不是優(yōu)化機(jī)器。
(7)Rails是什么?
Rails是用Ruby編寫(xiě)的一種極其高效的應(yīng)用程序框架,由David Heinemeier Hansson開(kāi)發(fā)。據(jù)說(shuō),相比用基于Java的應(yīng)用程序框架來(lái)開(kāi)發(fā),用Rails開(kāi)發(fā)的Web應(yīng)用程序其速度要快十倍。Rails是基于Ruby的開(kāi)源框架,它可用于快速的數(shù)據(jù)庫(kù)集成。
Rails以打破常規(guī)的概念著稱,因此避免了約定,采用了一種動(dòng)態(tài)編程結(jié)構(gòu)。應(yīng)用程序的基本代碼和更新后的數(shù)據(jù)庫(kù)始終含有Rails從頭到尾執(zhí)行程序所需要的一切。
一個(gè)基本的Ruby程序
看看輸入這段代碼會(huì)有怎樣的結(jié)果:
代碼:
personal=“I don’t love my girlfriend” puts personal
輸出:
I don’t love my girlfriend
這實(shí)際上會(huì)將結(jié)果打印輸出到控制臺(tái)。沒(méi)有初始化、分號(hào)和主要方法。
現(xiàn)在,不妨看一下我們要翻轉(zhuǎn)字符串時(shí)PHP與Ruby在編程方面的簡(jiǎn)單區(qū)別:
PHP:
strrev(“string”); Ruby: “string”.reverse
哇!你的字符串馬上就會(huì)翻轉(zhuǎn)。看一下用這兩種編程語(yǔ)言來(lái)實(shí)現(xiàn)的難易程度。基于Ruby的編程語(yǔ)言讓你很容易編寫(xiě)程序。它更像用英語(yǔ)來(lái)編寫(xiě),而不是用編碼語(yǔ)言來(lái)編寫(xiě)。它是編程語(yǔ)言的未來(lái)。
(8)Ruby(和Rails)的優(yōu)點(diǎn)
我知道Ruby這個(gè)世界很大,我連皮毛都未觸及,一篇小小博文根本不足以探究Ruby的世界。因此,我們不妨直接介紹Ruby的優(yōu)點(diǎn):
優(yōu)雅――正如我在前面指出,這個(gè)優(yōu)點(diǎn)正是Ruby的強(qiáng)項(xiàng)。作為一種編程語(yǔ)言,Ruby超優(yōu)雅,幾乎就像英語(yǔ)。正是由于類似英語(yǔ)的這個(gè)優(yōu)點(diǎn),新手也很容易上手Ruby,不必害怕。
簡(jiǎn)潔而強(qiáng)大――上面的例子本身就解釋了Ruby代碼有多簡(jiǎn)潔。代碼盡可能簡(jiǎn)短。另外,Ruby與其他任何語(yǔ)言一樣強(qiáng)大,因?yàn)樗敲嫦驅(qū)ο蟮母呒?jí)編程語(yǔ)言,就像其他新潮的編程語(yǔ)言那樣。
從不重新發(fā)明輪子――Rails(Ruby)是一種編程接口,它根本不會(huì)讓你重新發(fā)明輪子。它生成的代碼可反復(fù)地重復(fù)使用。
內(nèi)置測(cè)試――Rails以用具(harness)和示例數(shù)據(jù)(fixture)著稱,它們充當(dāng)支持代碼,因而讓程序員更容易編寫(xiě)測(cè)試用例。另外,Rails創(chuàng)建簡(jiǎn)單的測(cè)試樁模塊(test stub),這些樁模塊可以由程序員來(lái)擴(kuò)展。
開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境――Rails巧妙地在三個(gè)不同的環(huán)境(即開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境)下啟動(dòng)你的項(xiàng)目。這三個(gè)環(huán)境用起來(lái)彼此略有不同,各自補(bǔ)充原始的軟件開(kāi)發(fā)生命周期。
(9)展示時(shí)間
現(xiàn)在,不妨看一下幾個(gè)使用Ruby來(lái)實(shí)現(xiàn)的總體比較優(yōu)秀的網(wǎng)站(其實(shí)是知名網(wǎng)站)。你會(huì)看到設(shè)計(jì)人員如何借助Ruby在眾多網(wǎng)站中脫穎而出。
A List Apart
Basecamp
CrunchBase
Github
四、那么,哪種是我該使用和學(xué)習(xí)的最佳編程語(yǔ)言?
你從大多數(shù)程序員會(huì)聽(tīng)到的答案是“你用它們都可以處理各項(xiàng)任務(wù)。”它們都是不錯(cuò)的選擇。沒(méi)有好壞之分。這總是取決于你想完成什么樣的任務(wù)。
如果你邁出一步學(xué)習(xí)一種編程語(yǔ)言,那么很可能會(huì)使用內(nèi)置框架來(lái)用于你的項(xiàng)目。基本上來(lái)說(shuō),Web框架讓你更容易開(kāi)發(fā)應(yīng)用程序。大多數(shù)網(wǎng)站都有一系列共同的功能(比如處理會(huì)話和數(shù)據(jù)驗(yàn)證),框架可以防止你每當(dāng)創(chuàng)建網(wǎng)站時(shí)重寫(xiě)這部分內(nèi)容。
如果你已經(jīng)有了深入了解,PHP有幾種CMS框架可供使用。最流行的PHP內(nèi)容管理系統(tǒng)(CMS)是WordPress、Joomla和Drupal,大多數(shù)有豐富的插件。你可以輕松編寫(xiě)新的CMS,只需要耐心地看完幾天的教程。
還有其他相當(dāng)好的框架,但是使用流行框架提高了迅速找到支持或找到所需插件的可能性。就Python而言,有Django和CherryPy這兩種Web框架,它們?yōu)槟闾峁┝讼喈?dāng)不錯(cuò)的工具包。
如果你選擇了Ruby,你認(rèn)為你受到的限制性會(huì)大一點(diǎn)(因?yàn)檫@種語(yǔ)言比較新),但其基本框架是Rails。你還需要考慮哪種語(yǔ)言提供最出色的支持,那樣萬(wàn)一你在代碼方面遇到了問(wèn)題,可以迅速找到答案。
PHP是用于編寫(xiě)HTML頁(yè)面的最佳語(yǔ)言。
Python是一種通用編程語(yǔ)言。它可以用于構(gòu)建從Web應(yīng)用程序、爬蟲(chóng)程序、守護(hù)進(jìn)程到桌面GUI應(yīng)用程序的幾乎一切程序。
Ruby最擅長(zhǎng)快速構(gòu)建數(shù)據(jù)實(shí)體的Web應(yīng)用程序,那樣你可以專注于特別功能,而不是插入、更新和刪除這些查詢操作。
就是這樣。但愿你已大致了解了要學(xué)哪種編程語(yǔ)言。
原文標(biāo)題:The Three Programming Languages in a Nutshell
文章審核人:回憶的翅膀
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。