Повторное использование кода в React Native, Ionic, Flutter и NativeScript (пишите один раз, используйте везде) - PullRequest
0 голосов
/ 12 апреля 2019

Впервые я пишу такой вопрос здесь, поэтому, пожалуйста, извините, если мой вопрос не в порядке.

Я изучаю некоторые новые кроссплатформенные фреймворки. Я заинтересован в Ionic (версия 4), Flutter , React Native и NativeScript . Точно, я хотел бы понять концепцию повторного использования кода для каждого фреймворка. Как они применяют возможность повторного использования? В какой матрице и каковы последствия?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2019

В реакции-нативе вы создаете любой компонент, использующий любой экран.например, я использовал компонент InputText для повторного использования.

InputField.js

import React, { Component } from "react";
import { TextInput, View, StyleSheet, Text,Image } from "react-native";

export class InputField extends Component {
  render() {
    const {
      textentry,
      keytype,
      isvalid,
      errormsg,
      returnkey,
      textplaceholder,
      underlinecolor,
      onchangetext
    } = this.props;
    return (
      <View>
        <TextInput
          style={styles.input}
          placeholder={textplaceholder}
          keyboardType={keytype}
          placeholderTextColor="#ffffff"
          underlineColorAndroid={underlinecolor}
          secureTextEntry={textentry}
          ref={(input) => this.props.inputRef && this.props.inputRef(input)}
          returnKeyType={returnkey}
          blurOnSubmit={false}
          onSubmitEditing={(event) => {
            if (returnkey != 'done') {
                this.props.onSubmitEditing(event)
            }
        }}
          onChangeText={text => {
            this.props.onText(text);
          }}
        />
        <View>
          {!isvalid ? (
            <Text style={styles.errormsg}>{errormsg}</Text>
          ) : null}
        </View>
      </View>
    );
  }
}
const styles = StyleSheet.create({
  input: {
    width: 300,
    color: "#ffffff",
    justifyContent: "center",
    alignItems: "center",
    alignSelf: "center"
  },
  errormsg: {
    color: "#ff0000",
    marginLeft: 60
  },
});
export default InputField;

Используйте этот компонент InputField для отображения Myscreen.js

import React, { Component } from "react";
import {
  View,
  StyleSheet
} from "react-native";
import { InputField } from "../component/InputField";
 render() {
    return (
<View style={{flex:1}}>
<InputField
            keytype="default"
            textplaceholder="Enter First Name"
            textentry={false}
            returnkey="next"
            isvalid={this.state.firstNameValid}
            errormsg={this.state.errormsgtext}
            underlinecolor={this.state.underLineColorFirstName}
            onText={text => {
              this.setState({ firstName: text });
            }}
            onSubmitEditing={event => {
              this.inputs["phone"].focus();
            }}
          />
</View>
)}}
1 голос
/ 12 апреля 2019

Говоря о совместном использовании кода между Web и Mobile в отношении NativeScript, вот несколько вещей, которые необходимо знать:

Отказ от ответственности: я являюсь частью команды NativeScript

  1. Во-первых, это возможно только через Angular, нет совместного использования кода, если вы предпочитаете использовать чистый JS или TypeScript
  2. Во-вторых, часть кода, используемая в Интернете, iOS и Android, зависит от функциональности вашегоприложение.Это означает, что если вы в значительной степени полагаетесь на функциональность, специфичную для платформы, как для пользовательского интерфейса, так и для кода, лежащего в основе логики, то вы не сможете достичь полного совместного использования кода, но есть способы преодолеть такие сценарии и снова иметь возможность совместно использовать общие службы.
  3. В-третьих, идея совместного использования кода с NativeScript заключается в том, что если у вас есть специальный код для «платформы» (Web, iOS и / или Android), вы просто создаете дополнительный файл с определенным именем файла.Например, если у вас есть Angular-компонент с именем home.component.ts, у вас должен быть один файл, содержащий его HTML-код для веб-части и один для мобильной части, поэтому вы просто создаете и home.component.html, и home.component.tns.html.Аналогичный подход используется для других некомпонентных файлов, таких как css и угловые сервисы и т. Д.

Техника, которая используется для обеспечения совместного использования кода в NativeScript с Web, заключается в использовании схем Angular специально для NativeScript.

Тема о том, как именно происходит совместное использование кода, вполне понятна, поэтому я бы посоветовал вам прочитать этот пост в блоге, в котором рассказывается о совместном использовании кода между Web, iOS и Android с помощью NativeSript.Для начала работы рекомендую официальную документацию здесь .

1 голос
/ 12 апреля 2019

О React Native, он работает с чем-то, называемым Components. Вы можете создать компонент для каждой вещи, которую можете себе представить. Лучше всего иметь компоненты в том, что они многоразовые. Например, я могу создать кнопку в компоненте, а затем экспортировать эту же кнопку в другие приложения или экраны.

...