On the cross-platform development of mobile application the HTML5,PHONEGAP and Sencha platforms have been dedicated to using HTML5 technology to develop cross-platform mobile applications, and now it seems that this direction is basically a failure, Mobile applications based on HTML5 still have a significant gap between user experience and native applications.
Unlike the above HTML5 platforms, Xamarin and react native are implemented across platforms in their own way. Xamarin compiles C # code into native platform code based on the mono framework, and React native runs a JavaScript thread outside the UI thread, both presented to the user as a native experience.
I happen to have two platforms have been used for a period of time, here on the idea of sharing personal views. For entrepreneurial teams with limited resources, if you are familiar with JavaScript, using react native plus React,redux technology can enable the development of mobile, web, and service-side systems. You can also reuse part of the code (such as business logic in reducer and action, as well as common JavaScript component code), and React native is also ideal for rapid prototyping development. If you are already using Microsoft's. NET technology and have a system architecture that is relatively strong for large and medium-sized companies, then Xamarin may be a better choice, and the architecture is well designed so that the code reuse is not inferior to react Native.
Here are a few ways to say the pros and cons of each of them:?
From a programming language perspective, both C # and JavaScript are mature mainstream programming languages, with rich third-party libraries and strong community support. Both languages are able to implement the entire package from the front-end to the back-end.
From the point of view of development tools, Xamarin Studio can only be said to have just passed, a kind of and xamarin the entire product line is not a level of feeling, especially refactoring and interface visual editing and other aspects there is a lot of room to improve, and in the version upgrade often introduce new bugs, Let the author somewhat suffer from escalation phobia. React native itself has no IDE, developers can choose their familiar JavaScript IDE, such as: IntelliJ and so on.
From the perspective of a third-party library, Xamarin's third-party library gives a sense of not much, just enough. With the Xamarin Component store integrated in the IDE, the quality of the third-party libraries has improved, and developers are also very handy. It can be cumbersome to develop or bind (binding) native code libraries if you encounter special situations. React native is completely dependent on the JavaScript community, NPM and GitHub, and feels a little easier than xamarin when it comes to self-developing and bridging (bridging) native code libraries.
In terms of price, Xamarin has a free version, but there are restrictions on the size of the app package. For enterprise-class development, it is best to choose its enterprise License, which is expensive, but it can get technical support and other products that use the platform (such as Xamarin.Forms and Xamarin Test Cloud). React native is completely free.?
As for the difficulty of learning, many people lack confidence in JavaScript, feel that the language is difficult to master and good use, and C # and Java is relatively easy to be more secure. Here I recommend Turing's "You do not know the JavaScript" series, after watching may be able to change this view. In addition to the JavaScript language, React native also needs to master the Facebook React Framework, which is the core of React native. Xamarin requires knowledge of C # and iOS and Android development, although using react native does not necessarily require iOS and Android development, but for mobile app developers, no matter what tool you use, how you cross-platform, It is essential to understand the architectural design of each platform.
Here is a summary of each of the two aspects:
Deficiencies and flaws of the place also hope that you are generous, welcome to exchange discussion.
On cross-platform development tools for mobile applications (Xamarin and react Native)