《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只是響應式程式設計中的一種,還有其他語言的,這些簡介啥的只有去官網看了,響應式程式設計的優點也不說了,我也不想清楚,知道流弊就行了,懂怎麼用,適用於哪些情況再說去研究
從零開始--(1)Linux虛擬機器下使用yum安裝gcc
裝了Linux虛擬機器rhel-server-6.4 版本後,在網上看到利用 yum -y install gcc安裝gcc的教程,遇到的各種問題,因為是小白,一步一步詳解如下: 1.首先切換root賬號: 輸入su後輸入密碼, 切換到root $ -> # 2.
白話hash和數字簽名,保證你看得懂(從零開始學區塊鏈 195)
最近有朋友在後臺問為啥最近老介紹hash相關文章,其實hash演算法在資訊保安中非常重要,尤其是