Convert Figma logo to code with AI

alibaba logoice

🚀 ice.js: The Progressive App Framework Based On React(基于 React 的渐进式应用框架)

17,835
2,091
17,835
337

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

36,546

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

22,458

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

Quick Overview

Alibaba's ice (Intelligent Component Explorer) is an open-source web development framework and design system. It provides a set of tools, components, and best practices for building scalable and maintainable web applications, with a focus on React-based development.

Pros

  • Comprehensive ecosystem with tools, components, and templates
  • Strong focus on developer experience and productivity
  • Integrates well with modern web development practices
  • Backed by Alibaba, ensuring ongoing support and updates

Cons

  • Primarily documentation in Chinese, which may be a barrier for non-Chinese speakers
  • Steeper learning curve compared to some other React frameworks
  • Less community support compared to more widely-used frameworks
  • Some components may be tailored more towards Alibaba's specific use cases

Code Examples

  1. Creating a new ice.js project:
$ npm init ice my-app
$ cd my-app
$ npm install
$ npm start
  1. Using a pre-built component:
import { Button } from '@alifd/next';

function MyComponent() {
  return <Button type="primary">Click me</Button>;
}
  1. Defining a route in ice.js:
import { createApp } from 'ice';

const appConfig = {
  router: {
    routes: [
      {
        path: '/',
        component: Home,
      },
      {
        path: '/about',
        component: About,
      },
    ],
  },
};

createApp(appConfig);

Getting Started

To get started with ice:

  1. Install the ice.js CLI globally:

    npm install -g ice.js
    
  2. Create a new project:

    ice-cli init <project-name>
    cd <project-name>
    
  3. Install dependencies and start the development server:

    npm install
    npm start
    
  4. Open your browser and visit http://localhost:3333 to see your new ice.js application running.

Competitor Comparisons

227,213

The library for web and native user interfaces.

Pros of React

  • Larger community and ecosystem, with more resources and third-party libraries
  • More mature and battle-tested in production environments
  • Flexible and can be used for both web and mobile development (React Native)

Cons of React

  • Steeper learning curve, especially for beginners
  • Requires additional libraries for state management and routing
  • More complex setup and configuration for larger projects

Code Comparison

React component:

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

Ice component:

import { Component } from 'ice';

export default class Welcome extends Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

Summary

React is a widely adopted, flexible library for building user interfaces, with a vast ecosystem and community support. It offers more resources and third-party integrations but can be more complex for beginners. Ice, developed by Alibaba, provides a more opinionated framework with built-in solutions for common development needs, potentially offering a smoother learning curve for newcomers to front-end development. The choice between the two depends on project requirements, team expertise, and desired level of customization.

207,677

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

Pros of Vue

  • More mature and widely adopted framework with a larger community
  • Flexible and lightweight, suitable for both small and large-scale applications
  • Extensive ecosystem with official tools like Vue Router and Vuex

Cons of Vue

  • Steeper learning curve for developers new to reactive programming
  • Less opinionated, which may lead to inconsistencies in large projects
  • Fewer enterprise-level features out of the box compared to Ice

Code Comparison

Vue component example:

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

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

Ice component example:

import React from 'react';

const HelloWorld = () => {
  return <div>Hello, Ice!</div>;
};

export default HelloWorld;

Vue uses a template-based approach with a single-file component structure, while Ice (based on React) uses JSX for rendering components. Vue's reactivity system is more implicit, whereas Ice relies on React's state management and hooks for reactivity.

Both frameworks offer component-based architecture and efficient rendering, but Vue's template syntax may be more familiar to developers with HTML backgrounds, while Ice's JSX approach might appeal to those comfortable with JavaScript.

95,657

Deliver web apps with confidence 🚀

Pros of Angular

  • More mature and widely adopted framework with a larger community
  • Comprehensive documentation and extensive learning resources
  • Strong TypeScript integration and robust tooling support

Cons of Angular

  • Steeper learning curve, especially for beginners
  • Heavier and more complex compared to lightweight alternatives
  • Opinionated structure may feel restrictive for some developers

Code Comparison

Angular component:

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

Ice component:

import React from 'react';

const App = () => {
  return <h1>Hello, Ice!</h1>;
};

export default App;

Key Differences

  • Angular uses TypeScript by default, while Ice is based on React and typically uses JavaScript
  • Angular has a more structured, opinionated approach, whereas Ice offers more flexibility
  • Ice focuses on rapid development with pre-built components, while Angular provides a full-featured framework
  • Angular has a steeper learning curve but offers more built-in features, while Ice is easier to pick up for developers familiar with React

Use Cases

  • Angular: Large-scale enterprise applications, complex single-page applications
  • Ice: Rapid prototyping, lightweight web applications, projects requiring quick setup
78,194

Cybernetically enhanced web apps

Pros of Svelte

  • Smaller bundle sizes and faster runtime performance due to compile-time optimization
  • Simpler, more intuitive syntax with less boilerplate code
  • Built-in state management without additional libraries

Cons of Svelte

  • Smaller ecosystem and community compared to React-based solutions like Ice
  • Limited tooling and IDE support
  • Steeper learning curve for developers coming from traditional frameworks

Code Comparison

Svelte component:

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

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

Ice component (using React):

import React, { useState } from 'react';

export default function Counter() {
  const [count, setCount] = useState(0);
  return (
    <button onClick={() => setCount(count + 1)}>
      Clicks: {count}
    </button>
  );
}

The Svelte example demonstrates its more concise syntax and built-in reactivity, while the Ice example showcases React's familiar hooks-based approach. Both achieve similar functionality, but Svelte requires less code and doesn't need explicit state management imports.

36,546

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

Pros of Preact

  • Lightweight and fast: Preact is significantly smaller in size (3KB) compared to Ice, offering better performance and faster load times
  • API compatibility with React: Easier transition for developers familiar with React ecosystem
  • Active community and frequent updates: Ensures ongoing support and improvements

Cons of Preact

  • Limited built-in components: Ice provides a more comprehensive set of pre-built components
  • Less extensive ecosystem: Ice offers a wider range of tools and plugins for development
  • Steeper learning curve for beginners: Ice's design system approach may be more intuitive for new developers

Code Comparison

Preact:

import { h, render } from 'preact';

const App = () => <h1>Hello, World!</h1>;

render(<App />, document.body);

Ice:

import { createElement } from 'ice';
import { render } from 'react-dom';

const App = () => <div>Hello, World!</div>;

render(<App />, document.getElementById('ice-container'));

Both frameworks use a similar syntax for creating components, but Preact uses its own h function for creating elements, while Ice relies on React's createElement. Ice also requires a specific container element for rendering.

22,458

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

Pros of Ember.js

  • Mature and stable framework with a long history and established conventions
  • Strong community support and extensive ecosystem of addons
  • Comprehensive documentation and learning resources

Cons of Ember.js

  • Steeper learning curve due to its opinionated nature and conventions
  • Larger bundle size compared to more lightweight alternatives
  • Less flexibility in project structure and architecture

Code Comparison

Ember.js component:

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

export default class MyComponent extends Component {
  @action
  handleClick() {
    // Handle click event
  }
}

Ice component:

import React from 'react';

const MyComponent = () => {
  const handleClick = () => {
    // Handle click event
  };

  return <div onClick={handleClick}>Click me</div>;
};

export default MyComponent;

Key Differences

  • Ember.js uses a class-based component structure with decorators, while Ice uses functional components with hooks
  • Ember.js has its own templating language (Handlebars), whereas Ice uses JSX
  • Ice is built on top of React, providing additional features and optimizations, while Ember.js is a standalone framework
  • Ember.js has a more rigid structure and conventions, while Ice offers more flexibility in project organization

Use Cases

  • Ember.js: Large-scale, long-term web applications with complex data management requirements
  • Ice: Rapid development of React-based applications, especially those requiring a design system and component library

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

ice.js

Downloads Version GitHub license PRs Welcome Gitter Leaderboard Open with OpenSumi

A universal framework based on React.js, 📚 Docs.

Features

  • 🐒 Zero Config: Out of the box support for ES6+, TypeScript, Less, Sass, CSS Modules,etc
  • 🐯 Practice: Practice about file-system routing, state Management, request, etc
  • 🦁 Hybrid: pre-render pages at build time (SSG) or request time (SSR) for default
  • 🐌 Plugin system: The plugin system provides rich features and allow the community to build reusable solutions
  • 🐂 Multi-End: Support both web, miniapp and Weex

Quick start

We recommend creating a new ice.js app using create-ice, which sets up everything automatically for you. To create a project, run:

$ npm init ice ice-app --template @ice/lite-scaffold

npm init <initializer> is available in npm 6+

Start local server to launch project:

$ cd ice-app
$ npm install
$ npm run start # running on http://localhost:3000.

It's as simple as that!

Contributing

Please see our CONTRIBUTING.md

Contributors

Contributors can contact us to join the Contributor Group.

Community

LICENSE

MIT

NPM DownloadsLast 30 Days