Convert Figma logo to code with AI

emberjs logoember.js

Ember.js - A JavaScript framework for creating ambitious web applications

22,458
4,207
22,458
357

Top Related Projects

227,213

The library for web and native user interfaces.

207,677

This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core

95,657

Deliver web apps with confidence 🚀

78,194

Cybernetically enhanced web apps

27,910

A rugged, minimal framework for composing JavaScript behavior in your markup.

36,546

⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.

Quick Overview

Ember.js is a powerful open-source JavaScript framework for building ambitious web applications. It follows a convention-over-configuration approach and provides a complete solution for front-end development, including routing, data management, and UI components.

Pros

  • Comprehensive ecosystem with built-in tools and conventions
  • Strong emphasis on developer productivity and maintainability
  • Excellent documentation and community support
  • Stable release cycle with long-term support (LTS) versions

Cons

  • Steeper learning curve compared to some other frameworks
  • Can be overkill for smaller projects or simple websites
  • Less flexibility in project structure due to opinionated conventions
  • Slower adoption of newer JavaScript features compared to some competitors

Code Examples

  1. Defining a component:
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class Counter extends Component {
  @tracked count = 0;

  @action
  increment() {
    this.count++;
  }
}
  1. Creating a route:
import Route from '@ember/routing/route';

export default class BlogPostRoute extends Route {
  async model(params) {
    return this.store.findRecord('post', params.post_id);
  }
}
  1. Using a template with Handlebars:
<h1>{{@title}}</h1>
<p>{{this.content}}</p>
<button {{on "click" this.savePost}}>Save</button>

Getting Started

  1. Install Ember CLI:

    npm install -g ember-cli
    
  2. Create a new Ember project:

    ember new my-ember-project
    cd my-ember-project
    
  3. Start the development server:

    ember serve
    
  4. Open your browser and navigate to http://localhost:4200 to see your new Ember application running.

Competitor Comparisons

227,213

The library for web and native user interfaces.

Pros of React

  • Simpler learning curve and easier to get started
  • More flexible and can be used for various types of applications
  • Larger ecosystem and community support

Cons of React

  • Requires additional libraries for full-featured applications
  • Less opinionated, which can lead to inconsistent code patterns
  • More frequent breaking changes between major versions

Code Comparison

React component:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

Ember component:

import Component from '@glimmer/component';

export default class Welcome extends Component {
  <template>
    <h1>Hello, {{@name}}</h1>
  </template>
}

Both frameworks use component-based architecture, but React uses JSX for templating within JavaScript, while Ember uses a separate template syntax. React's approach is more flexible but can lead to mixing of concerns, whereas Ember's structure enforces a clearer separation between logic and presentation.

React's simplicity and flexibility have contributed to its wider adoption, but Ember's conventions and built-in features can lead to more consistent and maintainable code in large applications. The choice between the two often depends on project requirements and team preferences.

207,677

This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core

Pros of Vue

  • Smaller learning curve and easier to get started
  • More flexible and less opinionated, allowing for gradual adoption
  • Lighter weight with better performance for smaller applications

Cons of Vue

  • Less comprehensive ecosystem and tooling compared to Ember
  • Fewer built-in conventions, requiring more decision-making for larger projects
  • Less suitable for complex, large-scale applications out of the box

Code Comparison

Vue component:

<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello Vue!'
    }
  }
}
</script>

Ember component:

import Component from '@glimmer/component';

export default class HelloComponent extends Component {
  message = 'Hello Ember!';
}
<div>{{this.message}}</div>

Vue uses a single-file component structure, combining template, script, and style in one file. Ember separates the JavaScript and template into different files, following a more structured approach. Vue's syntax is generally more concise, while Ember's conventions provide a more standardized structure for larger applications.

95,657

Deliver web apps with confidence 🚀

Pros of Angular

  • More comprehensive framework with built-in features like dependency injection and TypeScript support
  • Larger community and ecosystem, with more third-party libraries and resources
  • Better performance for large-scale applications due to its architecture and change detection mechanism

Cons of Angular

  • Steeper learning curve, especially for developers new to TypeScript
  • More complex setup and configuration compared to Ember's convention-over-configuration approach
  • Larger bundle size, which can impact initial load times for applications

Code Comparison

Angular component:

@Component({
  selector: 'app-example',
  template: '<h1>{{title}}</h1>'
})
export class ExampleComponent {
  title = 'Hello, Angular!';
}

Ember component:

import Component from '@glimmer/component';

export default class ExampleComponent extends Component {
  title = 'Hello, Ember!';
}
<h1>{{this.title}}</h1>

Both frameworks use component-based architectures, but Angular combines the template and logic in a single file using TypeScript, while Ember separates them into JavaScript and Handlebars files. Angular's approach may be more concise for small components, but Ember's separation can improve maintainability for larger components.

78,194

Cybernetically enhanced web apps

Pros of Svelte

  • Smaller bundle size and faster runtime performance
  • Simpler learning curve with less boilerplate code
  • Compile-time approach, resulting in less work for the browser

Cons of Svelte

  • Smaller ecosystem and community compared to Ember
  • Fewer built-in features and conventions
  • Less suitable for large, complex applications

Code Comparison

Svelte component:

<script>
  let count = 0;
  function increment() {
    count += 1;
  }
</script>

<button on:click={increment}>
  Clicks: {count}
</button>

Ember component:

import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

export default class ClickCounter extends Component {
  @tracked count = 0;

  @action
  increment() {
    this.count += 1;
  }
}
<button {{on "click" this.increment}}>
  Clicks: {{this.count}}
</button>

Svelte's syntax is more concise and requires less setup, while Ember follows a more structured approach with decorators and separate template files.

27,910

A rugged, minimal framework for composing JavaScript behavior in your markup.

Pros of Alpine

  • Lightweight and minimal, with a small learning curve
  • Easy to integrate into existing projects without a full rewrite
  • Doesn't require a build step, making it simple to use in any environment

Cons of Alpine

  • Limited ecosystem and fewer advanced features compared to Ember
  • Less suitable for large, complex applications
  • Lacks built-in routing and state management solutions

Code Comparison

Ember.js component:

import Component from '@glimmer/component';
import { action } from '@ember/object';

export default class Counter extends Component {
  count = 0;

  @action
  increment() {
    this.count++;
  }
}

Alpine.js component:

<div x-data="{ count: 0 }">
  <button x-on:click="count++">Increment</button>
  <span x-text="count"></span>
</div>

Alpine provides a more concise, HTML-centric approach, while Ember offers a more structured, JavaScript-based component system. Alpine's simplicity makes it easier to get started, but Ember's architecture is better suited for larger applications with complex state management and routing needs.

36,546

⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.

Pros of Preact

  • Lightweight and fast: Preact has a much smaller bundle size (3KB) compared to Ember's larger footprint
  • Simple API: Easier to learn and use, especially for developers familiar with React
  • Better performance: Faster rendering and updates due to its minimal architecture

Cons of Preact

  • Less comprehensive: Lacks built-in features and conventions that Ember provides out-of-the-box
  • Smaller ecosystem: Fewer plugins, addons, and community resources compared to Ember's mature ecosystem
  • Limited built-in tooling: Requires additional setup for routing, state management, and other features

Code Comparison

Preact component:

import { h, Component } from 'preact';

class Greeting extends Component {
  render({ name }) {
    return <h1>Hello, {name}!</h1>;
  }
}

Ember component:

import Component from '@ember/component';
import { computed } from '@ember/object';

export default Component.extend({
  greeting: computed('name', function() {
    return `Hello, ${this.get('name')}!`;
  })
});

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

npm version CI Status Code Climate Discord Community Server PRs Welcome GitHub license

Ember.js is a JavaScript framework that greatly reduces the time, effort and resources needed to build any web application. It is focused on making you, the developer, as productive as possible by doing all the common, repetitive, yet essential, tasks involved in most web development projects.

With Ember, you get all of these things:

  • A Welcoming Community - Get the help you need, when you need it.
  • An Enduring Foundation for your Apps - There are apps that used the first version of Ember almost a decade ago, and successfully still use Ember today.
  • Reliability & Security - With regular LTS Releases and 30 weeks of security fixes, you can rely on Ember.js to care about the stability and security of your app.
  • Modern JavaScript - Use modern JavaScript features that you're already familiar with like classes, decorators and generators.
  • Documentation - Rely on top-notch documentation for each Ember version and a team that is focused on the documentation and learning experience.
  • HTML-first Components - Start with valid, semantic HTML in your components, and layer in the functionality that you need, as you need it.
  • Routing - Ember routes respect URLs while layering in extra functionality like rendering templates, loading data models, handling actions, and conditionally redirecting.
  • Data Layer - Ember Data is a powerful data management tool that comes with Ember apps by default. Want to use something else? We support that, too!
  • Flexibility Use any backend stack with your Ember apps, thanks to the flexibility of adapters and serializers.
  • Autotracking - Ember's reactivity model makes it easier to decide what to automatically update, and when.
  • Zero Config Apps - With strong defaults, you may never need to configure anything in your app, but the options are there if you need it!
  • Quality Addon Ecosystem - high-quality, rated addons with the ability to search by source code. Many require no additional configuration, making it easier than ever to supercharge your apps.

Find out more:

Contributions

See CONTRIBUTING.md


Cross-browser testing provided by Browserstack.

NPM DownloadsLast 30 Days