1. 程式人生 > >React Native 電商專案實戰——1.建立專案

React Native 電商專案實戰——1.建立專案

React Native 簡稱 RN 是 FaceBook 釋出的跨平臺開發框架,它的設計理念是:使用 React Native 開發,既擁有 Native 的良好人機互動體驗,又保留了 React 開發效率。

一、為什麼選擇 React Native

在 React Native 釋出的短短几年之內,已經有很多使用 RN 技術開發的 App 上線, 其中就有我們團隊開發4個 App。它的優點非常多。

開發效率高,成本低

通常情況開發一款 App 需要釋出在 Android 和 iOS 兩個平臺,導致的結果就是一個 App 有兩個團隊、兩套程式碼,介面幾乎一樣。

React Native 使用 JSX 語法開發,所謂 JSX,是 JavaScript 的語法擴充套件,讓我們在 JavaScript 中可以編寫類似 HTML 一樣的程式碼。React Native 利用 JavascriptCore 引擎對 JS 檔案進行解析,並利用 Bridge 對映到對應的 Native 方法和 UI 控制元件。相當於使用一套程式碼即可完成之前兩套程式碼完成的工作量,只需根據不同平臺稍作修改即可。

不僅如此,RN 程式碼量甚至比之前一套都少, Debug 超級方便,一邊開發一邊看效果再也不是夢。

快速熱更新

RN 生成的 JS 檔案,只要不涉及原生功能的增減,已經發布的 App 完全不需要重新安裝即可完成新版功能的上線,使用者只需開啟 App 就能體驗到最新的 App,省去了下載重灌的各種麻煩,把 App 的更新做到了和網頁更新一樣的方便快捷。

使用 RN 就能達到既有原生的所有能力,又有類似瀏覽器上的快速更新能力,同時還可以接入各種定製好的網頁,將 App 的自由度提高到一個非常高的地步。

支援混合開發

React Native 允許開發者在 React Native 擅長的領域使用 React Native 開發,而在 React Native 不能實現的領域或者已經有原生程式碼實現好的領域直接使用原生程式碼。React Native 程式碼開發的模組與原生程式碼開發的模組可以雙向通訊、無縫連結。

二、 建立 React Native專案

React Native 環境搭建稍微麻煩一點,不過 React Native 官網把詳細的步驟都已經列出來了,這裡就不再重複介紹了。

英文官網內容是最新的,建議由能力的檢視英文官網,搭建環境方式有兩種,這裡直接選擇 Building Projects With Native Code 方式,如圖所示。
使用 Building Projects With Native Code方式搭建環境

按照官網搭建好 React-Native 專案,請確保電腦上已經滿足下面的這些條件:

  • nodejs:RN 的所有庫都是從 npm 上安裝的,請確保電腦上已經安裝了 npm,可以使用npm -v來檢視當前是否已安裝。
  • react-native-cli:這個通常用作 RN 的初始化和啟動模擬器等,使用 NPM 可以安裝到電腦上。
  • Python2:RN 裡面有些指令碼是使用 Python 寫的。
  • JDK 1.8:Android 專案需要使用 JDK 1.8,請在電腦上安裝好。
  • Android Studio:除錯以及編譯安卓程式碼需要使用到,請在安裝 Android Studio 之後安裝好 Android SDK 以及模擬器,在安裝好 IED 之後請下載好需要使用到的 Android SDK,下載 SDK 預設是連結國外伺服器,會比較慢,最好把下載地址替換成國內的幾個下載源。
  • Xcode(僅 iOS 專案中):安裝了 Xcode 才能使用 iOS 模擬器,有些和 Android 不一樣的效果可以單獨除錯。
  • Git:後面的專案會加入到 Git 中,使用 Git 做版本管理的好處不言而喻。Mac系統上安裝Xcode後自動也會安裝好Git。
  • Watchman(僅 Mac 系統用到):Watchman 用來監聽檔案變動等,Mac 下必須安裝 Watchman。
  • WebStorm 或者 VSCode : 這是主流的 RN 開發工具,本人採用 WebStorm,該軟體和 Android Studio 操作方式幾乎一樣,方便 Android 開發者無縫過度。

建立專案

執行命令

react-native init TShop

可以初始化一個 RN 專案,專案名稱是 TShop ,這一步需要執行一段時間,耐心等待。

下面指令分別是執行 Android 和 iOS 程式

react-native run-android

react-native run-ios

三、 熟悉專案

我們簡單熟悉下 RN 專案結構

TShop
    |-- android
    |-- ios
    |-- node_modules
    |-- index.js
    |-- App.js
    |-- package.json
  • android 和 ios 對應的就是原生程式碼,分別可以通過 Android Studio 和 Xcode開啟,目前裡面自動生成一些初始化程式碼,專案用到混合開發的時候會用到。
  • node_modules 裡面內容非常多,這是我們專案依賴檔案。
  • package.json 是專案說明檔案。裡面可以看到
...
"dependencies": {
  "react": "16.3.1",
  "react-native": "0.55.3"
},
...

這段程式碼說明了當前專案的依賴。

  • index.js 是程式的入口檔案,裡面引入了 App.js 檔案 ,並註冊程式。
import { AppRegistry } from 'react-native';
import App from './App'; // 引入了 App.js

// 註冊程式
AppRegistry.registerComponent('TShop', () => App);
  • App.js 裡面存放執行的示例程式碼。程式碼片段1-1
// 匯入React 和 RN 控制元件
import React, {Component} from 'react';
import { 
    Platform,
    StyleSheet,
    Text,
    View
} from 'react-native';

// 根據不同的平臺載入不同的程式碼
const instructions = Platform.select({
    ios: 'Press Cmd+R to reload,\n' +
    'Cmd+D or shake for dev menu',
    android: 'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

type Props = {};
// ES6 語法
export default class App extends Component<Props> {

    render() {
        return ( // 渲染布局
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    Welcome to React Native!
                </Text>
                <Text style={styles.instructions}>
                    To get started, edit App.js
                </Text>
                <Text style={styles.instructions}>
                    {instructions}
                </Text>
            </View>
        );
    }
}

// 樣式檔案
const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },
    welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
    },
    instructions: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5,
    },
});

程式碼片段 1-1

參考程式碼片段1-1 ,App 就是當前程式展示的內容。RN 使用 JSX 語法,其實就是對 JS 語法進行了擴充套件,內建了一大堆標籤。

這裡面的寫法有點類似於網頁寫法, render() 函式是用來渲染介面的,<View> 控制元件巢狀著三個<Text/> 控制元件,預設垂直排列,每個控制元件的樣式又來源於下面的 styles 常量,styles裡的寫法類似於 CSS 。

我們修改下 render() 函式,讓裡面顯示的內容變化下,看看效果。

export default class App extends Component<Props> {

    render() {
        return ( // 渲染布局
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    這是 React Native 基礎程式碼
                </Text>

            </View>
        );
    }
}
// 樣式檔案
const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },
    welcome: {
        fontSize: 30, // 字型大小
        textAlign: 'center', // 文字居中對齊
        color: 'red', // 字型顏色改成紅色
    }
});

程式碼片段1-2

我們只保留了一個 <Text>控制元件,文字顏色改成紅色。執行react-native run-ios 或者 react-native run-android 執行程式。

如果已經通過上面指令執行過一次,如果沒修過 Android 或 iOS 原生程式碼,可以通過熱載入的方式直接更新程式:

  • Android 模擬器雙擊 R,
  • iOS 模擬器點選 command + R即可。

調出模擬選單方式:

  • Android 模擬器 command/ctrl+ M
  • iOS 模擬器 command+D

執行結果如圖所示:

佈局檢查

在 Android 模擬器上執行可以開啟 Android Studio 中自帶的佈局檢查工具, Tools -> Layout Inspector 檢視當前佈局。 如下圖, 可以發現 RN中定義的 Text 元件在 Android 中轉換成了 ReactTextView 控制元件,而這個控制元件繼續 Android 中的 TextView。 可以證明 RN 把 JSX 轉換成了原生控制元件,提高了執行效率。

檢視程式碼

如果你已經從 GitHub 上克隆了這個程式的 Git 倉庫,那麼可以執行 git checkout 1a 簽出程式的這個版本。 需要執行 npm install 或 yarn install

大家關注我的公眾號—— 於連林 公眾號ID: likedev,回覆RN 即可檢視視訊地址。視訊每週都會更新,大家保持關注。

讀者討論群

對內容,程式碼有疑問的讀者,可以加入討論群:274328657 交流,加群務必備註:RN學習。

相關推薦

React Native 專案實戰——1.建立專案

React Native 簡稱 RN 是 FaceBook 釋出的跨平臺開發框架,它的設計理念是:使用 React Native 開發,既擁有 Native 的良好人機互動體驗,又保留了 React 開發效率。 一、為什麼選擇 React Native

React Native專案實戰——開篇

React Native 簡稱 RN 是 FaceBook 釋出的跨平臺開發框架,它的設計理念是:使用 React Native 開發,既擁有Native 的良好人機互動體驗,又保留了 React 開發效率。 RN 技術已經非常成熟,我們沒什麼理由拒絕使用 R

React Native項目實戰混合APP開發 React Native實戰 混合APP實戰開發

mp4 實戰 nav 部分 ati nic 購物 獲取 面數據 React Native 和 angular+ionic 是目前網絡上最火的混合APP開發語言,其功能強大能夠開發出安卓和IOS程序! ------------------課程目錄--------------

WEB測試專案實戰——1.WEB專案測試備戰

專案介紹:B/S架構的web專案 WEB專案測試備戰 目錄 一、實戰路線圖 (一)研發模型——瀑布模型 (二)測試遵循的原則——W原則 (三)專案實戰課程路線圖 前期準備-需求評審-設計評審-測試計劃-測試架構

Vue+Django API前後端分離開發新技術跨域專案實戰

目前前後端分離的架構設計越來越流行,前後端通過API來實現資料通訊。 那如何快速開發一套符合RESTful風格的API呢? Django REST framework是基於Django框架開發的一款API框架。 使用它就可以非常快速的開發出一套健全可用的符合RE

react-native-android-unity(二)建立unity專案,並匯出為android程式碼包,嵌入android專案

1.建立unity專案 給Main Camera新增指令碼Android,使用C#開發,指令碼內容如下: using System.Collections;
using System.Colle

在Windows下搭建React Native Android開發環境和第一個專案建立執行

總結rn必須的依賴安裝 必須準備的安裝依賴有:Node、React Native 命令列工具、Python2 以及 JDK 和 Android Studio。 雖然你可以使用任何編輯器來開發應用(編寫 js 程式碼),但你仍然必須安裝 Android Stud

Spring Boot + MyBatis 專案 - 01- 開題 + 建立專案

Spring Boot + MyBatis 電商專案 - 01- 開題 + 建立專案 從今天開始,會陸續更新一個使用 Spring Boot & MyBatis 電商秒殺專案,不斷更新筆記。 該專案與 Spring 筆記 系列並行更新,專案有差異,學習請注意。 專案簡

2018 Vue+Django API前後端分離開發新技術跨域專案實戰

課程目標 幫助大家快速入門Django REST framework這一個API框架。 幫助大家詳細瞭解Django REST framework中序列化、檢視、路由等模組的使用。 幫助大家使用Django REST framework快速開發一套可用的API

重學 Java 設計模式:實戰責任鏈模式「模擬618大促期間,專案上線流程多級負責人審批場景」

![](https://img-blog.csdnimg.cn/20200618222937768.png) 作者:小傅哥 部落格:[https://bugstack.cn](https://bugstack.cn) - `原創系列專題文章` >沉澱、分享、成長,讓自己和他人都能有所收穫!

React Native 調用 Web3(1.x) 的正確姿勢

roi undefine director 應用 undefined -i open net fur 1 創建項目 react-native init lm1 cd lm1 2 安裝依賴包 yarn add node-libs-browser 3 創建 rn-cli

簡單PHP網站的靜態頁面專案操作

簡單電商網站的靜態頁面 1.管理員登陸模組 (1)網頁介面顯示: (2)文字說明:改部分程式碼主要實現的是管理員的登陸功能,當用戶的使用者名稱或者密碼輸入錯誤或者不符合要求時,介面會報錯(請重試),當輸入符合要求時,登陸成功。 (3)程式碼截圖: 2.學生資訊新增模組 (1)

機器學習 (八)kaggle競賽之泰坦尼克號專案實戰-1

引言        機器學習演算法都是為專案為資料服務的,某一個演算法都有它自己的適用範圍,以及優勢與劣勢,研究演算法由於平日的日常操練,那麼用它去做專案就如同上戰場殺敵一樣,去發揮它的價值,kaggle就是這樣一個刷怪升級

海口發展新政:重大專案最高補助100萬元

11月29日訊息,@北京商報從度小滿金融人士處獲悉,百度正式拿到准許經營證券期貨的許可證。據許可證顯示,機構名稱為北京百度百盈科技有限公司(下稱“百度百盈”),證券期貨業務經營範圍為基金銷售。而今年8月22日,根據北京證監局官網顯示,證監局已核准百度百盈證券投資基金銷售業務資格。 企查查資訊顯示,百度百盈成

BAT大資料畫像實戰

課程介紹 本課程主要圍繞電商,打造一個電商畫像平臺,利用電商畫像進行如下分析 1)使用者的行為事件分析 2)精準營銷和廣告投放 3)使用者畫像、使用者分群對比分析 4)使用者實時畫像,活躍資料監控 軟體準備 Hadoop 2.7.1 Hive 1.2.1 spark2.2.0 fli

大資料分析平臺專案(一)專案框架

開發可以在web專案中內嵌的js sdk。每當使用者瀏覽到網站頁面或者觸發某種事件時,會呼叫js程式碼,根據使用者cookie傳送一個session資訊這時到我們的nginx伺服器中。 nginx伺服器在接收到傳送的session後會將其寫入日誌檔案中記錄下來,這時監聽日誌檔案的flume會將session

React Native 精解與實戰》書籍連載「Android 平臺與 React Native 混合開發」

此文是我的出版書籍《React Native 精解與實戰》連載分享,此書由機械工業出版社出版,書中詳解了 React Native 框架底層原理、React Native 元件佈局、元件與 API 的介紹與程式碼實戰,以及 React Native 與 iOS、Android 平臺的混合開發底層原理講解與程式

【華為軟開雲系列】之專案管理(1)-建立簡單專案看板

【華為軟開雲系列】之專案管理(1)-建立簡單專案看板 入口 登入華為軟開雲控制後臺,選擇服務列表中的專案管理 點選立即使用 建立專案 進入專案列表中,下方的專案列表是之前本賬號建立的專案,可以對專案進行管理; 點選新建專案,建立新的專

React Native 精解與實戰》書籍連載「React Native 原始碼學習方法及其他資源」

此係列文章將整合我的 React 視訊教程與 React Native 書籍中的精華部分,給大家介紹 React Native 原始碼學習方法及其他資源。 最後的章節給大家介紹 React Native 原始碼的查閱方法,以便你進行更加高階的開發與研究時參閱,並分享了開發過程中可能遇到的眾多問題的解決方案,以

spring boot 1.建立專案

1 建立Module專案 2 設定POM檔案 設定parsent a.設定parent為 spring-boot-starter-parent <parent> <groupId>org.springframework.boot</gro