国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

移動校園生活幫之輕松校園行

2020-02-22 03:58:10鄧雯雯馮穎凌
電腦知識與技術(shù) 2020年36期
關(guān)鍵詞:移動校園應(yīng)用

鄧雯雯 馮穎凌

摘要:隨著移動互聯(lián)網(wǎng)的迅速發(fā)展,移動應(yīng)用帶來的便利使人們慢慢開始改變自己的生活習(xí)慣。微信、支付寶的普及打開了移動支付的大門,淘寶、京東等軟件引領(lǐng)了全民網(wǎng)購的潮流,釘釘、騰訊課堂、慕課網(wǎng)等教育應(yīng)用開啟了網(wǎng)課時代,移動互聯(lián)網(wǎng)正在慢慢地滲透進人們的生活中。本課題以React-Native為框架,提供一個具有多功能和信息內(nèi)容的移動跨平臺應(yīng)用。該應(yīng)用主要包含登錄注冊模塊、熱門推薦模塊、簽到模塊、天氣預(yù)報模塊以及課表模塊。本文通過對需求的分析和功能的實現(xiàn)進行的闡述,以模塊化和組件化的思想對應(yīng)用的功能進行獨立的劃分,實現(xiàn)代碼的低耦合高內(nèi)聚。同時對React Native 的啟動白屏問題提出了解決思路和優(yōu)化方案。

關(guān)鍵詞:react-native;校園;移動;應(yīng)用

中圖分類號:TP391? ? ? ?文獻標識碼:A

文章編號:1009-3044(2020)36-0243-03

1 引言

在傳統(tǒng)開發(fā)中,為了兼容Android操作系統(tǒng)和iOS操作系統(tǒng)的移動設(shè)備,一款app應(yīng)用需要分兩次開發(fā),由于在不同客戶端平臺下要求的技術(shù)不同,所以企業(yè)需要花費大量的人力成本和研發(fā)成本,而且每次應(yīng)用更新都要雙端同步,這使得維護成本也大大提高。

而React Native 框架的出現(xiàn)恰好解決了上述的問題,React Native的跨平臺性能夠讓一套代碼運行在兩種系統(tǒng)上,前端開發(fā)人員只需要通過JavaScript開發(fā)業(yè)務(wù)代碼,并不需要額外地去學(xué)習(xí)客戶端技術(shù),這樣就大大降低了開發(fā)人員的學(xué)習(xí)成本并且增強了移動應(yīng)用的可擴展性。而且React Native和原生移動應(yīng)用在使用感受上十分相似,甚至可以說是無法區(qū)分差別的[[1]]。

隨著信息越來越多元化,在如今校園中,移動校園app無疑是一個信息整合的高效、統(tǒng)一的渠道。因此,本課題選取React Native為框架,基于解決當前校內(nèi)大學(xué)生實際生活需求和生活習(xí)慣,提供一個具有多功能和信息內(nèi)容的跨平臺移動應(yīng)用。

2 主要技術(shù)與實現(xiàn)

2.1 主要技術(shù)

本課題研究內(nèi)容是基于React Native框架的移動校園app,該應(yīng)用客戶端主要包含登錄注冊模塊、熱門推薦模塊、簽到模塊、天氣預(yù)報模塊以及課表模塊。

以模塊化思想劃分功能,這樣每個模塊都是一個獨立的功能,可以減少代碼的耦合性,提高代碼質(zhì)量,并且使結(jié)構(gòu)更加清晰,利于后期維護。

后端使用技術(shù)棧: Node.js + Express+ Mongoose

圖形化管理工具—Robo 3T

分析思路:

1)用express框架搭建一個web應(yīng)用程序,提供數(shù)據(jù)接口。

2)Mongoose數(shù)據(jù)庫基于scheme結(jié)構(gòu)去定義了一種直接的數(shù)據(jù)模型。

分析思路:

用express框架搭建一個web應(yīng)用程序,提供數(shù)據(jù)接口。

Mongoose數(shù)據(jù)庫基于scheme結(jié)構(gòu)去定義了一種直接的數(shù)據(jù)模型。

2.2 React Native框架的原理和通信

React Native使用JSX來描述用戶界面,但UI組件渲染、動畫效果、網(wǎng)絡(luò)請求等都是通過原生實現(xiàn)的,開發(fā)人員編寫JavaScript業(yè)務(wù)代碼,通過React Native的中間層對調(diào)用原生控件,獲得與原生應(yīng)用一致的用戶體驗[[3]]。在Android平臺下,React Native主要是由C++層、Java層、JavaScript層組成。

C++實現(xiàn)的動態(tài)鏈接庫作為中間適配層橋接,實現(xiàn)了JavaScript與Java層的雙向通信。這里主要是C++層封裝的JavaScriptCore組件執(zhí)行了JavaScript代碼的解析,同時完全隔離了Java層和JavaScript層,開發(fā)人員只需要專注于JavaScript的代碼實現(xiàn)[[4]]。

Java層是ReactNative框架加載和啟動的入口,它封裝了負責(zé)React Native與Native code通信的Bridge組件。通過啟動C++層的JavaScript解釋器,然后JavaScriptCore解析執(zhí)行JavaScript代碼,然后把計算好的結(jié)果返回給Native code,然后Native code驅(qū)動設(shè)備上的硬件。因此通過Bridge組件,讓JavaScript能夠調(diào)用豐富的原生接口,充分發(fā)揮硬件的能力,優(yōu)化應(yīng)用性能。原生接口包括圖片資源訪問、圖形圖像繪制、3D加速、網(wǎng)絡(luò)請求、震動效果、原生控件繪制、地圖、定位、通知等。

3 模塊的分析與實現(xiàn)

3.1? 登錄注冊模塊的分析與實現(xiàn)

實現(xiàn)思路:

1)在服務(wù)器連接mongoose數(shù)據(jù)庫,創(chuàng)建User模型。數(shù)據(jù)庫中結(jié)構(gòu)如下:

2)設(shè)置一個變量isSignIn,默認是true,通過控制這個變量,切換組件的樣式以及將用填寫的信息傳給不同的函數(shù),執(zhí)行不同的方法。這樣可以實現(xiàn)組件和代碼的復(fù)用。

3)如果isSignIn的值是false,說明用戶想要注冊賬號,則把數(shù)據(jù)傳給服務(wù)端,服務(wù)端將數(shù)據(jù)存入數(shù)據(jù)庫中。如果isSignIn的值是true,說明用戶想要登錄賬號,則把數(shù)據(jù)傳給服務(wù)端,服務(wù)端在數(shù)據(jù)庫查找,找到的話就說明登錄成功。

4)通過react-navigation(路由)進行頁面跳轉(zhuǎn),之后的頁面跳轉(zhuǎn)實現(xiàn)也是如此。

3.2首頁模塊的分析與實現(xiàn)

實現(xiàn)思路:

1) 輪播圖使用了react-native-swiper插件。

2) 子菜單中每一個跳轉(zhuǎn)按鈕復(fù)用同一個組件,只需要改變每次傳入的參數(shù)即可。子菜單用一個數(shù)組記錄,里面存放數(shù)據(jù)是對象。

3) 同理,長列表中每一欄也可以復(fù)用同一個組件,UI組件隨著傳入的參數(shù)渲染出不同的內(nèi)容。然后在每次渲染前,獲取當前日期時間,并且使用正則轉(zhuǎn)換數(shù)據(jù)格式,渲染出獲取數(shù)據(jù)的日期時間。

4) 點擊熱門模塊的某一項,發(fā)送路由跳轉(zhuǎn)。同時將id值傳入請求數(shù)據(jù)的接口。

3.3課表模塊的分析與設(shè)計

分析需求:

1)以表格的形式展示課表信息,每一行對應(yīng)特定時間段的課表信息,每一列對應(yīng)日期當天的課表信息。

2)能夠修改并更新課表信息。

實現(xiàn)思路:

1) 在服務(wù)端鏈接mongoose數(shù)據(jù)庫,創(chuàng)建Timetable的模型。

2) 使用flex布局,將主軸方向水平方向(默認是垂直的)。根據(jù)課表是一個二維數(shù)組,所以用兩個循環(huán)語句把課表的行和列的內(nèi)容都渲染出來,并且數(shù)據(jù)塊不為空,將不同的行綁定不同的顏色。

3) 用一個變量控制課表的狀態(tài),通過點擊修改,會將替換表格中的UI組件,將組件替換成,這樣就可以編輯文本了。

3.4天氣預(yù)報模塊的分析與設(shè)計

分析需求:

天氣預(yù)報模塊包含以下模塊:

1) 實現(xiàn)天氣頭部模塊;

2) 實現(xiàn)小時天氣模塊;

3) 實現(xiàn)每日天氣模塊;

4) 實現(xiàn)空氣質(zhì)量模塊;

5) 實現(xiàn)生活指數(shù)模塊。

功能:獲取并展示定位地點的天氣信息并且可以切換不同地區(qū)。

實現(xiàn)思路:

1) 初始化頁面的時候,檢查是否有定位權(quán)限,如果有,則說明定位成功,觸發(fā)回調(diào)函數(shù),去請求數(shù)據(jù),如果沒有,則觸發(fā)請求定位權(quán)限的回調(diào)函數(shù),經(jīng)過用戶確認后,同意則去觸發(fā)請求數(shù)據(jù)的回調(diào)函數(shù)。

2) 將請求的返回的數(shù)據(jù)進行整理,保存天氣信息的對象。

3) 通過屬性傳值的方式,將數(shù)據(jù)傳入都對應(yīng)的模塊中,渲染UI組件。

4) 點擊頭部地區(qū)的時候,會觸發(fā)選擇器。

通過自定義子組件屬性,綁定父組件自身作用域的方法,在這里是獲取天氣信息的方法,在子組件的事件回調(diào)中執(zhí)行這個方法,從而獲取新的天氣信息,更新整個天氣組件。

4 分析與總結(jié)

本論文分析并實現(xiàn)了基于React Native框架的跨平臺移動校園App。

App基于React Native 框架開發(fā),外部封裝Java、Objective-C,內(nèi)部封裝JavaScript。通過Bridge實現(xiàn)React Native與Native code的通信,實現(xiàn)線程模型等,并通過JavaScriptCore解析JS代碼,調(diào)用原生控件,渲染視圖。通過JS映射模塊的方式來構(gòu)建原生View,并將組合攜帶的數(shù)據(jù)綁定到ReactView,通過把ReactView添加到具體Activity中,讓Activity對應(yīng)一個生命周期。

本論文的主要開發(fā)有:客戶端所有的UI組件設(shè)計、服務(wù)端的部分接口、登錄注冊模塊、首頁模塊、簽到模塊、課表模塊、天氣預(yù)報模塊等。

參考文獻:

[1] 馮博.基于React Native框架的興趣社區(qū)Android客戶端設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2017.

[2] 潘婷婷.React Native在APP開發(fā)中的應(yīng)用研究[J].無線互聯(lián)科技,2016(19):142-143.

[3] 程化梅.基于React Native的即時通訊應(yīng)用的設(shè)計與實現(xiàn)[D].武漢:武漢郵電科學(xué)研究院,2017:31-33.

[4] 李驍,張丹.基于混合模式的移動開發(fā)技術(shù)的研究[C]//決策論壇——企業(yè)管理模式創(chuàng)新學(xué)術(shù)研討會論文集.北京,2017:118-120.

[5] 嚴新巧.基于移動開發(fā)現(xiàn)狀探討React Native[J].電腦知識與技術(shù),2016,12(32):76-77,82.

[6] Steven Max Patterson. Facebook's React Native could succeed where other cross-platform frameworks have failed[J]. Network World (Online),2016:52-54.

[7] 王閱蓁.移動應(yīng)用的web與native混合編程模式研究與實現(xiàn)[D].成都:電子科技大學(xué),2015.

【通聯(lián)編輯:唐一東】

猜你喜歡
移動校園應(yīng)用
校園的早晨
琴童(2017年3期)2017-04-05 14:49:04
春滿校園
移動有聲閱讀讓兒童文學(xué)回歸故事本身
出版廣角(2016年14期)2016-12-13 01:49:53
如何有效發(fā)揮課間操的鍛煉作用
紀錄片中攝影機的移動對動態(tài)布局的影響
東方教育(2016年16期)2016-11-25 03:49:57
移動版教學(xué)督導(dǎo)聽課評價系統(tǒng)建設(shè)初探
GM(1,1)白化微分優(yōu)化方程預(yù)測模型建模過程應(yīng)用分析
科技視界(2016年20期)2016-09-29 12:03:12
煤礦井下坑道鉆機人機工程學(xué)應(yīng)用分析
科技視界(2016年20期)2016-09-29 11:47:01
氣體分離提純應(yīng)用變壓吸附技術(shù)的分析
科技視界(2016年20期)2016-09-29 11:02:20
會計與統(tǒng)計的比較研究
淅川县| 乃东县| 抚顺市| 霸州市| 景宁| 泸溪县| 阜南县| 恭城| 三明市| 惠来县| 秦皇岛市| 泸定县| 巩留县| 钟祥市| 轮台县| 太保市| 松桃| 襄汾县| 衡阳市| 中山市| 慈利县| 谷城县| 宁远县| 湖口县| 大田县| 高平市| 东方市| 怀来县| 隆昌县| 锡林郭勒盟| 宣恩县| 赤峰市| 扶绥县| 神池县| 新田县| 东城区| 上高县| 洞口县| 湘阴县| 靖江市| 双城市|