打造屬於自己的博客app——基於react native和博客園介面

来源:http://www.cnblogs.com/joylee/archive/2017/10/17/reactnativecnblogs.html
-Advertisement-
Play Games

關註react native這個技術很久了,去年就做了一個簡單的Demo,最近有時間,重新瞭解了一下react native的現狀,發現已經有很大的進步,現在完善了一下原有的項目,並重新開源共用一下。 背景 對react native這個技術關註很久了,去年也花了很長時間學習,但中途因為時間問題沒有 ...


關註react native這個技術很久了,去年就做了一個簡單的Demo,最近有時間,重新瞭解了一下react native的現狀,發現已經有很大的進步,現在完善了一下原有的項目,並重新開源共用一下。

背景

對react native這個技術關註很久了,去年也花了很長時間學習,但中途因為時間問題沒有進行更深入的學習。當時,react native還存在很多坑,使用起來不太方便。一年過去,現在重新開始關註react native,發現react native已經將原有的很多問題解決,相比當年版本,有太多的進步。現在將原有項目重構並重新發佈到github。

項目簡介

基於博客園的介面,開發的一個博客的app工具,包括個人博客、博客首頁、博客詳情,後續會逐漸完善評論、推薦、以及新聞等相關模塊。

使用的主要技術和插件:

插件 說明
react redux react state管理方案
react-navigation react native新的頁面導航方案
react-native-elements 一個react native UI庫
lodash JS函數庫
react-native-autoheight-webview webview解決方案
react-native-vector-icons react native icon組件

項目結構

代碼全部在source目錄里,其他代碼有react native自動生成,當然,index.js相關入口文件有調整,source中目錄簡單介紹一下:

目錄 說明
action redux中的action
common 通用的js常用函數
component 自己的UI組件
config 項目的配置信息,需要改成自己項目的,調整這裡。
constant 定義的一些常量
middleware react middleware log,記錄state日誌
reducer redux中的reducer
service 網路請求,調用介面相關
style 樣式
view 頁面page

使用

最基本的react native使用方式:

git clone https://github.com/itmifen/mfreader.git  
npm install  
react-native link  
react-native run-ios

正常運行需要將config目錄中的index.js文件中的accessInfo進行配置。clientId和clientSecret可以聯繫博客園團隊獲取。

//cnblogs授權信息
export const accessInfo={
    clientId:"*********",
    clientSecret:"**************"
};

首頁展示自己的博客只需要修改blogname就可以了。

//app配置信息
export const appinfo={
    blogname:"joylee",
    logourl:"https://pic.cnblogs.com/face/42030/20171003230725.png",
    cnblogsApi:"https://api.cnblogs.com",
    pageSize:10
};

項目技術說明

頁面導航解決方案

之前版本的react native 的頁面導航沒有一個很好的解決方案,最大的問題就是頁面切換的卡頓,很多第三方的導航組件使用起來性能更差,還不如自己開發。現在官方推薦使用 react-navigation 組件進行開發,使用之後的確比之前性能好很多,同時還支持tab、側邊欄導航效果,是以後react native開發必須考慮的方案。

redux

redux現在是react state管理最通用的解決方案,使用非常廣泛,我也不曾想到redux的學習花了我最多的時間。redux是一個state管理的解決方案,是一個單獨的項目,react redux是基於react 的解決方案,而非同步的react redux會更加複雜一點。對於redux的學習和使用,經歷了好久才真正理解redux的整個數據流和事件流。

html展示的解決方案

展示webview一直是一個頭疼的問題,雖然通過 https://js.coach 可以找到很多webview的解決方案,大部分看起來很好的解決方案是將html轉成原生的jsx節點。實際使用和最終的理想還是有差距的,最後我還是選擇了webview渲染html的方案。我使用的是react-native-autoheight-webview 這個組件,原始的webview組件必須設置高度,react-native-autoheight-webview可以不用設置高度,自動根據內容定義高度。

性能問題

頁面切換性能

強烈建議使用react-navigation,直接使用navigation組件,總是存在卡頓的情況,android環境特別明顯,使用react-navigation整個人都好了。基本不用考慮其他黑科技。

console.log日誌對性能非常大的影響

如果一直覺得開發調試的時候系統卡頓明顯,建議把console.log去掉試試,console.log對性能影響嚴重,debug模式下也會感覺比較慢,開發完成後,最好是在release環境下測試下。

列表性能問題

很多人反饋列表性能的問題,我一直用listview,暫時沒有感覺到性能的問題,所有還沒有換成新的組件FlatList,後期會考慮替換,相信官方的推薦和解決方案,都是比較靠譜的解決方案。

性能問題大家一定要仔細閱讀 http://reactnative.cn/docs/0.49/performance.html#content 官方的性能說明,每一個都非常重要。

後期計劃

因時間有限,所有在UI上不會做太多的調整,這也不是我擅長的,關於功能會進行逐步完善:

  • 增加新聞模塊
  • 增加評論瀏覽和評論功能
  • 增加博客園首頁和精華
  • 完善個人中心以及相關設置

曾經考慮過做成多個站點聚合數據的形式,但是考慮到工作量的問題,可能短時間內無法實現。

(完)


歡迎大家關註我的公眾號交流、學習、第一時間獲取最新的文章。
微信號:itmifen


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原理是把真實的圖片路徑放在data-src裡面,先載入src裡面的小圖片,等頁面滾動到相應的位置,就把data-src的內容賦給src。 主要代碼是“圖片預載入js代碼”,然後調用傳參數,跟使用jquery插件一樣,只不過這裡不需要jquery。 效果如下: 1、沒有預載入的時候要載入13M 2、有 ...
  • 這一章節中,我們嘗試著寫一個最簡單的例子,包含 2 個靜態頁面,並增加菜單導航功能。小體驗一把。 ### Step 1. 清理結構 清理後如下結構,只保留了兩個 `必備` 文件,同時做如下修改: ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>隨機點名</title> <style type="text/css"> td{ text-align: center; } </style></head><bod ...
  • 一般阿裡社招都是招3-5年的P6+高級工程師,當初自己一年經驗也沒有想過有這個面試機會。 雖然沒想著換工作,但是經常關註一些招聘網站的信息,某一天,在某boss上有個人找我,叫我發一下簡歷,我一看是阿裡的某技術專家,雖然之前也有阿裡的在某boss上給我要簡歷,但是我深知自己經驗不足,然後給boss說 ...
  • 1、內高度、內寬度: 內邊距 + 內容框 clientWidth clientHeight 2、外高度,外寬度: 邊框 + 內邊距 + 內容框 offsetWidth offsetHeight 3、上邊框、左邊框 clientTop clientLeft 4、元素的大小及其相對於視口的位置 getB ...
  • 利用css3 transform屬性刻畫鐘錶的的刻度以及指針的角度,代碼如下: ...
  • 1. Operation 設置依賴關係 先看看如何設置operation的依賴關係。 啥叫依賴關係?有啥用啊?打個比方咱們要做一個聽音樂的付費App項目,需要經過登陸、付費、下載、播放四個步驟。其實一看就明白,這四個操作是有先後順序的,但假如所有的操作都是多線程,咱們怎麼控制順序?通過設置“優先順序” ...
  • 上一篇博客描述了一個簡單的串口應用程式和驅動程式,瞭解了應用程式訪問串口的基本操作,如打開串口,設置串口,寫串口,讀串口,關閉串口等。和Linux串口驅動的基本框架。這裡將瞭解Android下的串口系統框架,仍然使用上一篇博客中的tiny_serial.c作為本例的驅動,本例實現的功能不變,無論應用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...