趙亮 馮佳(河南警察學(xué)院,河南 鄭州 450000)
?
Moodle平臺語法高亮功能的兩種實(shí)現(xiàn)方法對比分析
趙亮馮佳
(河南警察學(xué)院,河南鄭州450000)
Moodle平臺是一個(gè)開源互聯(lián)網(wǎng)教學(xué)平臺,在運(yùn)行程序設(shè)計(jì)類課程時(shí),語法高亮功能的缺失嚴(yán)重影響平臺的使用效果。鑒于此,基于當(dāng)前流行的開源代碼語法高亮解決方案,設(shè)計(jì)了兩種在Moodle中實(shí)現(xiàn)語法高亮的方法,并從多方面分析對比兩種方法并得出結(jié)論。
Moodle;語法高亮;GeSHi;SyntaxHighlighter
Moodle是由澳大利亞教師Martin Dougiamas創(chuàng)建的一個(gè)開源項(xiàng)目,21世紀(jì)初在國內(nèi)高校一度風(fēng)行,但由于中文支持不好,早期版本功能繁雜體驗(yàn)差,不管在國內(nèi)還是國外都未得到廣泛應(yīng)用。而隨著版本的迭代更新,3.0版本的Moodle已經(jīng)修復(fù)了中文顯示的問題,隨著“微課”“翻轉(zhuǎn)課堂”的興起,Moodle作為一個(gè)功能強(qiáng)大的成熟框架,再次得到教育技術(shù)領(lǐng)域的關(guān)注[1]。
Moodle是一個(gè)基于主要使用PHP構(gòu)建的Web系統(tǒng),因此可跨平臺運(yùn)行在支持PHP的服務(wù)器上,包括Linux、Windows和MacOS,常見的架構(gòu)是LAMP(Linux操作系統(tǒng),Web服務(wù)程序Apache,數(shù)據(jù)庫MySQL,后端腳本PHP,)如使用Windows Server,Web服務(wù)程序也可對應(yīng)地使用IIS。
Moodle的安裝和部署十分方便簡單,對于熟悉Web Services的用戶,添加一個(gè)空白數(shù)據(jù)庫,將Moodle目錄放置于web目錄下即可輕松完成配置。而且bitnami還提供了集成XAMPP等Web套件一鍵安裝發(fā)布的安裝包,大部分高校教師可以輕松完成配置。因此,Moodle在高校應(yīng)用極其廣泛,很多學(xué)校都有自己的站點(diǎn)。
河南警察學(xué)院的平臺上線于2015年9月,上線即承擔(dān)了《網(wǎng)絡(luò)協(xié)議分析》4個(gè)中隊(duì)的實(shí)驗(yàn)實(shí)訓(xùn)任務(wù),期間遷移過一次服務(wù)器,3.0版本的Moodle測試功能中支持?jǐn)?shù)據(jù)庫的網(wǎng)絡(luò)遷移,平臺運(yùn)行狀況整體良好,在問卷調(diào)查中學(xué)生滿意度達(dá)到95%以上。2015年10月平臺向系內(nèi)教師開放,《電子數(shù)據(jù)的檢驗(yàn)與分析》(取證)課程的實(shí)驗(yàn)也遷移到本平臺上,2016年1月平臺承擔(dān)了《網(wǎng)絡(luò)協(xié)議分析》和《取證》課程的期末考試任務(wù)。
語法高亮功能,是程序設(shè)計(jì)中一些高級文本編輯器以及IDE中必備的功能,通過高亮來區(qū)分、操作符、變量、注釋,可以讓代碼的可讀性更好,同時(shí)也更加美觀。
圖1分別是記事本、Notepad++和Eclipse中一段java代碼的顯示效果,記事本沒有語法高亮,而后兩者使用了語法高亮,代碼可讀性區(qū)別顯而易見。
而Moodle平臺當(dāng)承擔(dān)程序語言課程時(shí),語法高亮是一個(gè)必備的功能,雖然Moodle有著大量的擴(kuò)展和插件,但是目前并沒有完善的支持語法高亮的插件。語法高亮,在Moodle平臺的應(yīng)用主要集中在以下幾個(gè)方面:①教程、考試等用戶可見的模塊,應(yīng)有語法高亮的功能;②學(xué)生在編輯作業(yè)時(shí)輸入的代碼,應(yīng)有語法高亮的功能;③在線文本編輯器應(yīng)方便地通過標(biāo)簽方式高亮編輯后的代碼。
圖1 代碼高亮效果對比
3.1方法一:GeSHi插件方式
GeSHi的全稱是Generic Syntax Highlighter,即通用語法高亮器,項(xiàng)目地址是http://qbnz.com/highlighter。GeSHi有著以下特點(diǎn)。
3.1.1服務(wù)端兼容性。GeSHi的編碼完全用PHP。這意味著良好的兼容性,任何支持PHP的服務(wù)器都能使用GeSHi。
3.1.2客戶端兼容性。GeSHi兼容XHTML標(biāo)準(zhǔn)的輸出,通過使用CSS樣式表類來高亮顯示。
3.1.3多語言支持。GeSHi目前支持超過100種語言的高亮顯示,包括PHP、HTML、CSS、java、C、Lisp、XML、Perl、Python和ASM等。
3.1.4高度可定制。GeSHi的允許你改變高亮顯示的輸出方式,同樣也是通CSS類來實(shí)現(xiàn)的。
3.1.5靈活性。GeSHi基于模塊化設(shè)計(jì)。關(guān)閉不必須的特性,預(yù)載CSS樣式表可以顯著提升速度。
GeSHi的插件全部為PHP文件,本質(zhì)上就是一個(gè)PHP類庫,實(shí)現(xiàn)web文本的語法高亮方式如下:
其中,include語句載入geshi庫,新建一個(gè)geshi對象,其中$source是需要高亮的代碼或者頁面,調(diào)用parse_code()函數(shù)就可以完成代碼部分的高亮。
3.1.6GeSHi在Moodle平臺上的實(shí)現(xiàn)及部署。根據(jù)需求分析,如果要使Moodle下不同的頁面中的特定部分能夠語法高亮,需要使用Moodle的Filter模塊,F(xiàn)ilter模塊是Moodle提供的使用正則表達(dá)式匹配文本,并對匹配到的文本進(jìn)行相關(guān)操作的模塊,語法高亮可以使用Filter功能對特殊關(guān)鍵字標(biāo)簽生效,如[code][/code]標(biāo)簽的實(shí)現(xiàn)如下:
Filter生效后,需要在使用用對相應(yīng)的代碼部分添加[code][/code]標(biāo)簽來完成。
3.2方法二:SyntaxHighlighter主題方式
SyntaxHighlighter是一個(gè)基于JavaScript的代碼高亮開源插件,由Alex Gorbatchev開發(fā),項(xiàng)目地址是http:// alexgorbatchev.com/SyntaxHighlighter。SyntaxHighlighter也有著以下特點(diǎn)。
3.2.1兼容性。SyntaxHighlighter是在前端層面高亮顯示代碼,所以不存在服務(wù)端兼容的問題,前端同樣是支持XHTML標(biāo)準(zhǔn)和CSS。
3.2.2多語言支持。SyntaxHighlighter目前僅提供23種常見的語言的支持。
3.2.3高度可定制。SyntaxHighlighter使用筆刷的方式來實(shí)現(xiàn)代碼高亮,定制顯示效果只需要修改筆刷即可。
3.2.4性能。SyntaxHighlighter是前端語言,不占用服務(wù)器端資源,性能差別僅在于瀏覽器。
3.2.5SyntaxHighlighter插件組成。SyntaxHighlighter插件包括以下幾個(gè)文件夾:Scripts,面存放了所有功能性的JS文件;Src,源文件,里面是shCore和shLegacy這兩個(gè)核心JS文件,和Scripts里的一致;Styles,存放了各種主題風(fēng)格的css文件以及顯示小圖標(biāo)需要的圖片。
SyntaxHighlighter的核心是shCore文件,語法高亮的功能性函數(shù)都在此文件中定義。此外,Scrpits里還提供了常見的23種筆刷文件,如shBrushCpp,shBrushJava等,用于對不同的語言采用不同的高亮規(guī)則。
因?yàn)镾yntaxHighlighter是高亮實(shí)現(xiàn)機(jī)制是基于前端JS,因此部署到Moodle上可以通過修改主題的方式。
3.2.6Moodle主題機(jī)制。Moodle主題包含以下幾個(gè)目錄及文件,具體功能如表1所示。
表1 Moodle主題包含的目錄/文件及其功能
Moodle主題的工作原理如圖2所示,使用PixCSS等資源的是MVC架構(gòu)中的view部分,包括Moodle主體頁面及自定義layout頁面,lib.php提供自定義工具函數(shù),config.php配置主題,最終用戶可以通過setting.php完成主體的設(shè)置及個(gè)性化。由此可知,在主題中配置SyntaxHighlighter,shCore.js和JS筆刷文件需要放置于javascript目錄下,CSS文件需要放置于style目錄下,并在Config.php中完成JS和CSS的載入:
圖2 Moodle主題生效機(jī)制
完成以上工作后,還需要在各種有需求的view頁面加入以下JS代碼:
4兩種高亮實(shí)現(xiàn)方法的對比分析
本文嘗試的2種方法均可以完成Moodle平臺上語法高亮的需求,方便程序設(shè)計(jì)類課程的課程在Moodle平臺上線,表為2種方法各自的綜合對比。
總之,使用前端JS解決方案的SyntaxHighlighter優(yōu)于在后端使用php的GeSHi,雖然使用
標(biāo)簽存在沖突的可能性,但現(xiàn)階段瀏覽器對JS支持良好的環(huán)境下,使用SyntaxHighlighter無疑是一種更加便捷、高效的代碼高亮方法。
表2 2種高亮實(shí)現(xiàn)方法的綜合對比
[1]陳肖庚,王頂明.MOOC的發(fā)展歷程與主要特征分析[J].現(xiàn)代教育技術(shù),2013(11):5-10.
Comparison and Analysis of Two Methods to Realize the Syntax Highlighting Function of Moodle Platform
Zhao LiangFeng Jia
(Henan Police College,Zhengzhou Henan 450000)Moodle is an open-source internet education platform,When running the program design courses,the lack of syntax highlighting features a serious impact on the use of the platform.In view of this,based on the current popular open source code syntax highlighting solution,the two in Moodle syntax highlighting method were designed,and analyzed and compared the two methods from many aspects,and draw the conclusion.
Moodle;syntax highlighting;GeSHi;SyntaxHighlighter
TP311.52
A
1003-5168(2016)04-0020-03
2016-03-12
馮佳(1985-),男,碩士,工程師,研究方向:交通管理,ITS技術(shù);趙亮(1987-),男,碩士,研究方向:信息安全,網(wǎng)絡(luò)空間安全。
猜你喜歡全噴涂逐層組裝實(shí)現(xiàn)可穿戴電子織物高亮電致發(fā)光 紡織科學(xué)研究(2023年12期)2023-12-19 12:36:08自編插件完善App Inventor與樂高機(jī)器人通信 電子制作(2019年22期)2020-01-14 03:16:34創(chuàng)世代碼 動漫星空(2018年11期)2018-10-26 02:24:02創(chuàng)世代碼 動漫星空(2018年2期)2018-10-26 02:11:00創(chuàng)世代碼 動漫星空(2018年9期)2018-10-26 01:16:48創(chuàng)世代碼 動漫星空(2018年5期)2018-10-26 01:15:02中央高亮企業(yè)家精神 知識經(jīng)濟(jì)·中國直銷(2017年11期)2017-11-28 05:32:41高亮國畫作品 藝術(shù)評論(2017年11期)2017-03-29 07:56:23MapWindowGIS插件機(jī)制及應(yīng)用 黑龍江工程學(xué)院學(xué)報(bào)(2015年5期)2015-12-04 01:39:38基于Revit MEP的插件制作探討 智能建筑電氣技術(shù)(2015年1期)2015-03-01 03:07:55