劉 艷
(河南師范大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,河南 新鄉(xiāng) 453007)
當(dāng)前,農(nóng)業(yè)信息的及時(shí)提供不僅可以加速農(nóng)產(chǎn)品的流通,也是建設(shè)現(xiàn)代農(nóng)業(yè)的基礎(chǔ)[1]。我國(guó)農(nóng)業(yè)相關(guān)人員獲取農(nóng)業(yè)相關(guān)信息的主要途徑為:綜合搜索引擎約占53%;其次是農(nóng)業(yè)全文搜索引擎;最后是農(nóng)業(yè)分類搜索引擎[2]。但從具體占比數(shù)據(jù)來(lái)看,農(nóng)業(yè)分類搜索等專業(yè)門戶網(wǎng)站的比重還較低,說(shuō)明利用專業(yè)途經(jīng)獲取農(nóng)業(yè)信息的存在諸多困難[3]。
當(dāng)“互聯(lián)網(wǎng)+”和農(nóng)業(yè)之間深度融合以后,互聯(lián)網(wǎng)技術(shù)帶來(lái)了及時(shí)的數(shù)據(jù)、信息和嶄新的技術(shù)手段,從而使得農(nóng)業(yè)產(chǎn)業(yè)中的各個(gè)環(huán)節(jié)、涉及農(nóng)業(yè)領(lǐng)域的眾多細(xì)分市場(chǎng),都有了更多的條件、技術(shù)和可能來(lái)進(jìn)行創(chuàng)新。農(nóng)業(yè)信息研究可以通過(guò)IT技術(shù),突破時(shí)間空間限制,實(shí)現(xiàn)及時(shí)有效地互聯(lián)互通,進(jìn)而將大大促進(jìn)農(nóng)業(yè)知識(shí)、農(nóng)業(yè)資源、農(nóng)業(yè)科技、農(nóng)業(yè)生產(chǎn)、農(nóng)產(chǎn)品市場(chǎng)等各方面信息的快速及時(shí)傳遞,解決信息的不對(duì)稱問(wèn)題。在優(yōu)化農(nóng)業(yè)生產(chǎn)的同時(shí),也能對(duì)接農(nóng)副產(chǎn)品供需市場(chǎng),解決傳統(tǒng)時(shí)期農(nóng)業(yè)信息不暢而滯銷等問(wèn)題。農(nóng)業(yè)信息化對(duì)農(nóng)業(yè)生產(chǎn)過(guò)程中所需各類資源,都有相當(dāng)高程度的重新配置作用,這將大大提高土地、勞動(dòng)力、資金等各項(xiàng)生產(chǎn)資源的配置利用效率?!盎ヂ?lián)網(wǎng)+”結(jié)合大數(shù)據(jù)、物聯(lián)網(wǎng)等近年來(lái)興起的信息技術(shù),可以不斷提升農(nóng)業(yè)各個(gè)生產(chǎn)環(huán)節(jié)智能化程度,提高生產(chǎn)效率,進(jìn)而實(shí)現(xiàn)“生產(chǎn)環(huán)境可測(cè)、生產(chǎn)過(guò)程可控、產(chǎn)品質(zhì)量可溯”,也能部分解決食品安全等問(wèn)題。信息化農(nóng)業(yè)的推廣,在節(jié)約人力成本的同時(shí),同時(shí)也大大提高了農(nóng)產(chǎn)品的質(zhì)量和產(chǎn)量,進(jìn)而也增強(qiáng)了農(nóng)業(yè)的抗風(fēng)險(xiǎn)能力。
AngularJS[4]是一個(gè)功能強(qiáng)大的基于JavaScript,用來(lái)構(gòu)建大型應(yīng)用,高性能的Web應(yīng)用程序的框架,是開源的,完全免費(fèi)的,并且由數(shù)千名世界各地的開發(fā)者開發(fā)維護(hù),為開發(fā)者提供了一個(gè)在干凈的模型—視圖—控制器(Model View Controller,MVC)方式,編寫的應(yīng)用都是跨瀏覽器兼容的,易于維護(hù)的動(dòng)態(tài)網(wǎng)絡(luò)應(yīng)用框架。
模型視圖控制器是一種Web應(yīng)用程序開發(fā)設(shè)計(jì)模式[5]。傳統(tǒng)的MVC主要由模型、視圖、控制器幾個(gè)成分組成。MVC是當(dāng)前應(yīng)用比較廣泛的模式構(gòu)建,因?yàn)樗鼜挠脩艚缑鎸雍椭С址蛛x關(guān)注隔離了應(yīng)用邏輯。
在開發(fā)程序的過(guò)程中,AngularJS允許并且優(yōu)先鼓勵(lì)開發(fā)者使用模塊化的思想來(lái)開發(fā)應(yīng)用。為了使開發(fā)者書寫的代碼更加簡(jiǎn)潔明快,AngularJS允許在單個(gè)的js文件中完成模塊的命名,并可以將其稱為module.js文件。每個(gè)程序中允許有多個(gè)模塊,每個(gè)模塊應(yīng)該含有定義功能的部分。模塊方法有眾多優(yōu)點(diǎn)。AngularJS也允許開發(fā)者利用angular.modle()來(lái)定義模塊,這種方法要求有兩個(gè)參數(shù),第一個(gè)參數(shù)是要定義的模塊名,第二是依賴表,也就是要求被射入到模塊當(dāng)中的依賴列表[6]。
AngularJS系統(tǒng)利用不同的手段來(lái)組合來(lái)自模型的數(shù)據(jù)并傳遞給視圖。每視圖的組成部分是動(dòng)態(tài)插值的。AngularJS的完成模式允許把程序中的模型當(dāng)作為唯一數(shù)據(jù)源。視圖自始至終僅僅是數(shù)據(jù)的呈現(xiàn)模式。雙向數(shù)據(jù)綁定功能是AngularJS中眾多功能之一,也是AngularJS的重要特性。
服務(wù)是JavaScript函數(shù)或?qū)ο螅试SAngularJS程序中應(yīng)用??刂破?、過(guò)濾器等都可以通過(guò)指令調(diào)用服務(wù)。服務(wù)的輸入依靠AngularJS的依賴注入模式。AngularJS提供了如$http和$route等眾多常見的內(nèi)置服務(wù),每種服務(wù)都有一種特殊的功能。開發(fā)者可以利用$route來(lái)定義路由消息等。
依賴注入式AngularJS的重要特性之一[7]。在AngularJS的系統(tǒng)中,依賴注入可以說(shuō)到處存在。經(jīng)常在下面場(chǎng)景(函數(shù))中會(huì)應(yīng)用依賴注入:使用工廠方法來(lái)完成定義組件(components)時(shí):如directive,factory,filter,provider,controller等。這些工廠函數(shù)需要注冊(cè)到某個(gè)模塊上。
利用微信關(guān)注用戶的基本信息,主要包括用戶微信名(或者昵稱)、用戶微信頭像、用戶注冊(cè)性別、用戶所在地域、用戶使用語(yǔ)言等方面。該技術(shù)將適用于訂閱號(hào)、服務(wù)號(hào)以及微信用戶自定義菜單中的所有場(chǎng)景[8]。
本系統(tǒng)的服務(wù)對(duì)象主要是一般農(nóng)民、農(nóng)業(yè)院校的師生、農(nóng)業(yè)技術(shù)人員、涉農(nóng)企業(yè)負(fù)責(zé)人等人士。可提供商家企業(yè)信息、涉農(nóng)科技、展覽展示、農(nóng)資信息、花卉信息、涉農(nóng)養(yǎng)生等方面的信息服務(wù)。系統(tǒng)總體分為展示前臺(tái)和后臺(tái)。前臺(tái)展示又分為推薦、搜索、導(dǎo)航、詳情、微信交互等。后臺(tái)管理包括登錄、列表、篩選、編輯、設(shè)置等。
在首頁(yè)顯示的熱詞排行下面,從左至右依次可以點(diǎn)擊顯示今日、本周、本月3個(gè)時(shí)間段內(nèi)通過(guò)該網(wǎng)絡(luò)搜索頻次最高的一些詞匯。在首頁(yè)面的搜索框中輸入關(guān)心的詞匯后,如果有滿足條件的詞條出現(xiàn),搜索結(jié)果會(huì)及時(shí)顯現(xiàn)。搜索結(jié)果實(shí)時(shí)顯現(xiàn)是本系統(tǒng)的一個(gè)亮點(diǎn)。為了更好地交流信息,留言評(píng)價(jià)。利用全局Access Token技術(shù),系統(tǒng)開發(fā)了與微信進(jìn)行交互的功能。使微信用戶關(guān)注即可進(jìn)入網(wǎng)站系統(tǒng),同時(shí)采用HTML5技術(shù)研發(fā),打開速度較傳統(tǒng)頁(yè)面提升較大,訪問(wèn)更快速方便。用戶掃描網(wǎng)頁(yè)上的二維碼后,用戶手機(jī)系統(tǒng)將出現(xiàn)取得用戶信息許可的通知界面,獲取用戶微信登錄信息的前端邏輯。
本系統(tǒng)根據(jù)動(dòng)態(tài)網(wǎng)站系統(tǒng)的需要,該系統(tǒng)采用ThinkPHP+MySQL的數(shù)據(jù)庫(kù)管理模式[9]。管理員成功登錄后臺(tái)后,系統(tǒng)將自動(dòng)呈現(xiàn)百科條目列表。列表包含條目ID、標(biāo)題、縮略圖、摘要、分類、添加時(shí)間、點(diǎn)擊統(tǒng)計(jì)、編輯操作等。在列表頁(yè)面下,每條條目右側(cè)有對(duì)應(yīng)的編輯、刪除按鈕,點(diǎn)擊后管理員可以根據(jù)提示進(jìn)行相應(yīng)的操作。在列表頁(yè)面下,設(shè)計(jì)了分類篩選功能,也就是管理者可以先根據(jù)類別查詢條目。在列表頁(yè)面的右上角,點(diǎn)擊分類按鈕,就可以顯示各種分類,點(diǎn)擊該類別,就可以方便地查詢?cè)擃悇e下的所有條目。管理員成功登錄后,在列表頁(yè)面,點(diǎn)擊頁(yè)面左上角的添加條目按鈕,系統(tǒng)將跳轉(zhuǎn)到添加新一條條目的頁(yè)面。管理員添加條目時(shí),需要添加該條目的標(biāo)題、分類、正文等。在正文部分,系統(tǒng)提供了常用的編輯功能,同時(shí)也可以插入編輯圖片。完成條目的內(nèi)容編輯后,點(diǎn)擊提交即可。當(dāng)然,系統(tǒng)也提供了取消添加、刪除臨時(shí)添加條目的內(nèi)容。
本文在廣泛調(diào)研的基礎(chǔ)上,確定了系統(tǒng)的總體設(shè)計(jì)。根據(jù)各部分的功能,利用HTML5,CSS3和AngularJS等當(dāng)前最先進(jìn)的前端開發(fā)技術(shù),MySQL,ThinkPHP等后端數(shù)據(jù)技術(shù),以及微信交互、模塊消息等方式對(duì)農(nóng)業(yè)信息搜索系統(tǒng)進(jìn)行了開發(fā)。