Frontend Frameworks - Integrative-Transcriptomics/tss-prediction-comparison GitHub Wiki

What is the difference between a framework and a normal library?

Control flow

A framework dictates the control flow. Code is written to fit within the structure of the framework. A library offers specific functionality that the user incorporates in his own program.

Inversion of Control

The framework provides the general structure of an application and the developer "fills in the gaps" while the developer using a library dictates how and when to use its functionality theirself.

Flexibility

Frameworks are less flexible because they tend to enforce their own design patterns and conventions. Meanwhile multiple libraries can be used at the same time without compatability issues.

Should we use a Framework?

No

  • Adopting a new framework entails a learning curve, potentially complicating tasks that could be simpler initially without it.
  • Frameworks undergo evolution or may decline in terms of community support over time.

Yes

  • Frameworks offer developers pre-built components, libraries, and tools that support the development process.
  • Frameworks promote best practices such as code organization and modularity, fostering cleaner and more maintainable codebases.
  • Active communities around popular frameworks provide invaluable support and resources, facilitating learning and problem-solving.
  • Frameworks enhance the developer experience by providing intuitive APIs, helpful tools, and features designed to streamline development workflows.

The answer to whether we should use frameworks is a simple yes. They offer a multitude of beneficial features that greatly enhance the development process, even if mastering them presents initial challenges. Moreover, acquiring proficiency in frameworks proves advantageous for future career opportunities, as they are widely utilized in the industry.

What Frameworks are there?

We examine the four of the largest and most commonly used JavaScript frameworks.

React

  • pros

    • Widely Adopted: React stands as one of the most widely used frameworks, embraced by developers across various domains and projects.
    • Robust Community: Its expansive community fosters collaboration, support, and an abundance of resources, enriching the development experience.
    • Minimalistic Design: React's design ethos prioritizes simplicity and efficiency, empowering developers to achieve more with less complexity.
    • Open Source Foundation: Being open-source, React embodies transparency, adaptability, and community-driven innovation, ensuring continuous enhancement and evolution.
    • Flexibility: React's ecosystem boasts a diverse array of libraries and tools, providing developers with the flexibility to tailor solutions to their specific needs effortlessly.
  • cons

    • Decision Fatigue: The multitude of libraries addressing similar tasks can inundate developers, resulting in decision fatigue and uncertainty when selecting the appropriate tools.
    • Learning Curve: React's syntax and concepts may present challenges for beginners, demanding time and dedication to grasp effectively.

222k Github stars

Angular

  • pros

    • Angular CLI: The Angular Command Line Interface provides a standardized project structure and configurations, streamlining project setup and development workflows.
    • Separation of Concerns: Angular automatically generates separate files for HTML, CSS, and TypeScript, promoting clean and organized codebases.
    • Officially Supported Libraries: Angular boasts a rich ecosystem of officially supported libraries and tools, ensuring compatibility, reliability, and ongoing maintenance.
  • cons

    • Mandatory TypeScript Usage: Angular requires the use of TypeScript, which may be unfamiliar or less preferred for some developers, potentially introducing a learning curve.
    • Steep Learning Curve for Beginners: Angular's comprehensive feature set and complex concepts can be overwhelming for beginners, necessitating significant time and effort to master effectively.

94.6k Github stars

Vue

Vue is frequently mentioned alongside Angular, though it's commonly regarded as less powerful in comparison.

  • pros

    • Official Packages: Vue offers a range of official packages that streamline development tasks and enhance project capabilities.
    • Developer Experience: Vue provides a pleasant developer experience with features like Vue UI, simplifying project setup and management.
    • Plugin System: Vue's plugin system allows for easy integration of third-party functionalities, extending the framework's capabilities as needed.
    • Approachable Learning Curve: Vue's intuitive syntax and well-documented features make it approachable and easy to learn for developers of all skill levels.
  • cons

    • Less Powerful Than Angular: Vue may not offer the same level of power and scalability as Angular, particularly for large and complex applications.
    • Smaller Communities: Vue's community size is smaller compared to some other frameworks, potentially resulting in fewer resources and community-driven solutions.
    • Flexibility Challenges: Vue's flexibility can sometimes lead to decision paralysis or inconsistency in project structure and architecture, particularly in larger team projects where standardized approaches are crucial.

207k Github stars

Svelte

  • pros

    • Simple Syntax: Svelte's straightforward syntax makes it easy to learn and understand, enabling rapid development and prototyping.
    • Open Source: Svelte is an open-source framework, fostering transparency, collaboration, and community-driven innovation.
  • cons

    • Less Common: Svelte is not as widely adopted as some other frameworks, which may result in fewer resources, tutorials, and community-driven support.
    • Smaller Communities: Svelte's community size is smaller compared to more established frameworks, potentially limiting access to resources and community-driven solutions.

78.7k Github stars

What Framework should we use?

  • Despite its popularity among users, Svelte's limited adoption and smaller ecosystem may pose challenges for broader application development.
  • Due to our preference for regular JavaScript, Angular's default pairing with TypeScript doesn't align with our preferences.
  • Vue's popularity and intuitive syntax make it an attractive option, however, its smaller community and ecosystem compared to other frameworks might pose challenges for it's comprehensive support
  • React's widespread adoption and prevalence in JavaScript development offer significant career benefits for those experienced with it. Despite its initial learning curve, the wealth of tutorials and supportive community make working with React quite manageable. That's why we should consider React as our framework of choice.