1. 程式人生 > >《react-native》從零開始(啟始篇)

《react-native》從零開始(啟始篇)

本系列的從這裡開始~

做了一段時間android,覺得自己還是入門階段,突然老大讓我弄這個rn,說實在的對自己特別沒有自信,不過對於自己也是一種挑戰。我也利用這次機會好好的梳理了自己學習新的知識的方法。希望大家在學習新的知識的時候都可以有所收穫。開篇內容不會說太多程式碼,主要是希望提供一個快速的思路。

下面 我來以一個移動端的角度來講解如何,快速的認知react-native。

簡單來說 facebook 希望通過一套js 程式碼就可以,完成所有移動端的頁面佈局,事件響應。
優點:
1.節約了開發時間
2.可以讓前段人員開發移動端
3.比 Hibrid模式效能更好
4.最關鍵的迭代方便
5.跨平臺開發
缺點:
1.目前還沒有釋出1.0版本極不穩定,還有很多坑
2.開原始碼很少,不是很方便快速開發
3.以目前的情況來看如果沒有移動端的基礎,很難實現一個高質量的RN專案的
4.效能方面還有待商榷

瑕不掩瑜, JavaScript 是一種指令碼語言,它不會經過編譯、連結等操作,而是在執行時才動態的進行詞法、語法分析,生成抽象語法樹(AST)和位元組碼,然後由直譯器負責執行或者使用 JIT 將位元組碼轉化為機器碼再執行。整個流程由 JavaScript 引擎負責完成。
facebook 提供了這一套體系思想,以實現跨平臺的功能。而且他們也一直在快速的更新程式碼。上面的缺點會隨著加入的人員越來越多而解決。

react-native 實現

可以將RN框架理解為一種C/S 結構,移動端作為一個c端,所要做的就是等待服務端傳送的指令請求,根據指令作出響應事件。而JS程式碼是服務端,它向c端傳送指令包括頁面佈局,事件響應處理,也是由服務端來發送的。通過JSON格式傳輸資料。

這裡寫圖片描述

react-native 基礎知識

由於是android轉過來的react 框架,JavaScript還是需要補一下的,不過從native過來的還是有很大優勢的,nattve層的自定義view,自定義modules,寫的還是66的。可惜現在為還只會安卓端,ios還在學習階段。

JavaScript ——RN的開發基礎語言
JSX——react就是feacbook不滿意市面上的MVP框架自己研發的,JSX 可以理解為安卓中的xml 佈局 內新增響應事件的一種語言結構 react jsx 彙總
node——JavaScript執行的環境
es6——JS的新規則,前端告訴我這個現在市面上還不流行,不過咱得用著

阮一峰的es6教程
CSS——一些RN封裝好的樣式,不過到後面分析程式碼的時候就會發現,其實這部分,是按照前端的習慣做的一些封裝,我們完全可以自己實現

react-native 原始碼結構

下面我們以一個android開發的角度簡單分析下原始碼結果,開篇文章先不要追求細節,快速理解認識結構方便後續學習。

android出身,咱就先看看安卓部分的原始碼結構
這裡寫圖片描述

咱先開啟 react
這裡寫圖片描述

再開啟views 這個咱們更熟悉
這裡寫圖片描述

看見這個熟悉了吧,如果有一定native 基礎的看見名字就知道幹啥的了。
沒錯 這部分就是 JS 與native 互動部分的原始碼實現。 RN 已經封裝好的一部分基本程式碼,都在這個包裡。包括各種view,各種layout,事件滑動效果等等。就像為之前說的,native層轉過來的還是66的。後續的開發,還是需要native的支援的。

到這裡我們來理一下思路——————
底層部分使用安卓的控制元件
上層部分使用的js程式碼
它們之間時用什麼連結的哪

如果做過Hibrid開發的少年應該熟悉

這裡寫圖片描述

它通過啟動C++層的JavaScript解析器javascriptCore來執行js程式碼,從而構建原生UI等。
在Java層與Js層的bridge分別存有相同一份模組配置表,Java與Js互相通訊時,通過將裡配置表中的moduleID,methodID轉換成json資料的形式傳遞給到C++層,C++層傳送到js層,通過js層的的模組配置表找到對應的方法進行執行,如果有callback,則回傳給java層。

到這裡我們應該基本的瞭解,這個框架的結構分層,已經知道框架的需要用到的知識點。中間連線層部分其實也就時feacbook,定義好的一套協議只要遵循就好了。開發需要做的只是完成java層,js層的就可以了。

開篇內容到此結束,第一次寫技術部落格。想分享下對新知識的理解。希望大家共同進步。

相關推薦

react-native開始

本系列的從這裡開始~ 做了一段時間android,覺得自己還是入門階段,突然老大讓我弄這個rn,說實在的對自己特別沒有自信,不過對於自己也是一種挑戰。我也利用這次機會好好的梳理了自己學習新的知識的方法。希望大家在學習新的知識的時候都可以有所收穫。開篇內容不會說

React Native開始ListView的簡單使用

/** * Created by 11158 on 2017-01-16. */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, List

react-native開始生命週期

生命週期,貫穿整個開發過程非常重要。 搭建開發環境 生命週期 react-native 是一種狀態機的模式,和安卓一樣也是存在生命週期的。 先上張經典圖片 如圖,可以把元件生命週期大致分為三個階段: 這裡 我們和android

Git開始

16px pop 普通 遠程服務 git clone one img 分享 模式 一、遠程倉庫管理   1、將本地內容推送到遠程庫   先關聯遠程庫,執行命令: git remote add origin https://github.com/Hollydan/gitsto

Hyperledger Fabric 1.0 開始——公網環境構建

1.3 項目 htm move 自己 lvm2 fast 情況 tor 1:環境構建 在本文中用到的宿主機環境是Centos ,版本為Centos.x86_647.2,通過Docker 容器來運行Fabric的節點,版本為v1.0。因此,啟動Fabric網絡中的節點需要先安

Hyperledger Fabric 1.0 開始——創建Fabric多節點集群

_id 測試 es2017 xtra 去掉 compose 多個 服務 執行命令 4:創建Fabric多節點集群 4.1、配置說明 首先可以根據官方Fabric自帶的e2e_cli列子中的集群方案來生成我們自己的集群,與案例不同的是我們需要把容器都分配到不同的服務器上,彼此

docker開始容器初體驗

osi build 技術分享 框架 log 註冊表 代碼 content doc 使用定義容器 Dockerfile Dockerfile定義容器內所需要的環境。對網絡接口和磁盤驅動器等資源的訪問在此環境中進行虛擬化,該環境與系統的其他部分隔離,因此您需要將端口映射到外部

docker開始堆棧初體驗,stacks

開始 services 信息 工作 run cer cal tail int 先決條件 安裝Docker 1.13或更高版本。 獲取Docker Compose,請參考第三節 按照第四節中的描述獲取Docker Machine。 在第二節中了解如何創建容器。

【視訊】Kubernetes1.12開始程式碼編譯到自動部署

作者: 李佶澳   轉載請保留:原文地址   釋出時間:2018/11/10 16:14:00 說明 kubefromscratch-ansible和kubefromscratch介紹 使用前準備

Centos Docker 開始2之 mssql 的資料庫檔案儲存在主機

Docker mmsql新建資料庫如果能夠把資料庫檔案儲存在主機上就好了,centos好像可以掛載的 docker 的 run 命令: -v ~/nginx/www:/www :將主機中專案的目錄www掛載到容器的/www 準備命令一下: docker run -e

vuejs,開始基本使用可以了

參考簡書:https://www.jianshu.com/p/94ac8b8b8f6b 說明:工作需要,下面的基本使用,一般用於工作可以了 ------------------------------------------------------------------

Hyperledger Fabric 1.0 開始——執行測試e2e

3:執行測試e2e 3.1、執行fabric-samples的問題說明 該問題說明能夠解決6.1、平臺特定使用的二進位制檔案配置第一步的問題。可以選擇繼續閱讀該說明,或者等參考到6.1小節時再反向閱讀本說明,具體在6.1中會重新指向本步驟。 一般情況下,我們會參照官網來完成第一個網路測試,在該線上文件中會讓我

Hyperledger Fabric 1.0 開始——Fabric多節點叢集生產部署

6.1、平臺特定使用的二進位制檔案配置 該方案與Hyperledger Fabric 1.0 從零開始(五)——執行測試e2e類似,根據企業需要,可以控制各節點的域名,及聯盟鏈的統一域名。可以指定單獨節點的訪問,生成指定的公私鑰、證書等檔案。具體的引數配置可以參考generateArtifacts.sh檔案,

JavaWeb專案開始3--- 整合Mybatis-Plus,簡化開發,增強工作效率

mybatis每次查詢都要寫sql是不是很煩?每次都要貼上複製一個Controller、Service、Dao、mapper.xml是不是不想每次都重複這樣的工作? Mybatis-Plus 可以幫你解決上述的煩惱。 (一)簡介 Mybatis-Plu

Netty開始

需要用到netty,之前就當年實習的時候用過Mina,netty沒用過,所以加急學習了一下,感覺還不錯,不多說,從官網入手,官網地址:http://netty.io/wiki/user-guide-for-4.x.html 有興趣的朋友可以自己去檢視。 前言: 問題 現在

理解去中心化思維的幾個要素開始學區塊鏈 198

區塊鏈技術是去中心化的重要基石,只有具備去中心化思想才能更好的理解這項技術,所以今天我們討論一下

STM32F103+RTT開始——點亮LED

最近心血來潮,打算重新撿起老本行,結果發現很多都忘記了。乾脆重新開始學習,並做個從零開始的筆記了。 STM32系列MCU STM32系列晶片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列晶片晶片。不同系列的晶片適用於不同的應用場景。

RxJava開始

前言:從零開始學習RxJava,首先是現在才來學習確實已經比別人慢了很多了,沒辦法,還是要學呀。RxJava只是響應式程式設計中的一種,還有其他語言的,這些簡介啥的只有去官網看了,響應式程式設計的優點也不說了,我也不想清楚,知道流弊就行了,懂怎麼用,適用於哪些情況再說去研究

開始--1Linux虛擬機器下使用yum安裝gcc

裝了Linux虛擬機器rhel-server-6.4 版本後,在網上看到利用 yum -y install gcc安裝gcc的教程,遇到的各種問題,因為是小白,一步一步詳解如下: 1.首先切換root賬號:  輸入su後輸入密碼, 切換到root $ -> # 2.

白話hash和數字簽名,保證你看得懂開始學區塊鏈 195

最近有朋友在後臺問為啥最近老介紹hash相關文章,其實hash演算法在資訊保安中非常重要,尤其是