Giter Site home page Giter Site logo

generator-angular's Introduction

AngularJS generator Build Status Gitter

Yeoman generator for AngularJS - lets you quickly set up a project with sensible defaults and best practices.

There are many starting points for building a new Angular single page app, in addition to this one. You can find other options in this list at Yeoman.io.

Roadmap for upcoming plans/features/fixes

Usage

For step-by-step instructions on using Yeoman and this generator to build a TODO AngularJS application from scratch see this tutorial.

Install yo, grunt-cli, bower, generator-angular and generator-karma:

npm install -g grunt-cli bower yo generator-karma generator-angular

If you are planning on using Sass, you will need to first install Ruby and Compass:

  • Install Ruby by downloading from here or use Homebrew
  • Install the compass gem:
gem install compass

Make a new directory, and cd into it:

mkdir my-new-project && cd $_

Run yo angular, optionally passing an app name:

yo angular [app-name]

Run grunt for building and grunt serve for preview

Generators

Available generators:

App

Sets up a new AngularJS app, generating all the boilerplate you need to get started. The app generator also optionally installs Bootstrap and additional AngularJS modules, such as angular-resource (installed by default).

Example:

yo angular

Route

Generates a controller and view, and configures a route in app/scripts/app.js connecting them.

Example:

yo angular:route myroute

Produces app/scripts/controllers/myroute.js:

angular.module('myMod').controller('MyrouteCtrl', function ($scope) {
  // ...
});

Produces app/views/myroute.html:

<p>This is the myroute view</p>

Explicitly provide route URI

Example:

yo angular:route myRoute --uri=my/route

Produces controller and view as above and adds a route to app/scripts/app.js with URI my/route

Controller

Generates a controller in app/scripts/controllers.

Example:

yo angular:controller user

Produces app/scripts/controllers/user.js:

angular.module('myMod').controller('UserCtrl', function ($scope) {
  // ...
});

Directive

Generates a directive in app/scripts/directives.

Example:

yo angular:directive myDirective

Produces app/scripts/directives/myDirective.js:

angular.module('myMod').directive('myDirective', function () {
  return {
    template: '<div></div>',
    restrict: 'E',
    link: function postLink(scope, element, attrs) {
      element.text('this is the myDirective directive');
    }
  };
});

Filter

Generates a filter in app/scripts/filters.

Example:

yo angular:filter myFilter

Produces app/scripts/filters/myFilter.js:

angular.module('myMod').filter('myFilter', function () {
  return function (input) {
    return 'myFilter filter:' + input;
  };
});

View

Generates an HTML view file in app/views.

Example:

yo angular:view user

Produces app/views/user.html:

<p>This is the user view</p>

Service

Generates an AngularJS service.

Example:

yo angular:service myService

Produces app/scripts/services/myService.js:

angular.module('myMod').service('myService', function () {
  // ...
});

You can also do yo angular:factory, yo angular:provider, yo angular:value, and yo angular:constant for other types of services.

Decorator

Generates an AngularJS service decorator.

Example:

yo angular:decorator serviceName

Produces app/scripts/decorators/serviceNameDecorator.js:

angular.module('myMod').config(function ($provide) {
    $provide.decorator('serviceName', function ($delegate) {
      // ...
      return $delegate;
    });
  });

Options

In general, these options can be applied to any generator, though they only affect generators that produce scripts.

CoffeeScript and TypeScript

For generators that output scripts, the --coffee option will output CoffeeScript instead of JavaScript, and --typescript will output TypeScript instead of JavaScript.

For example:

yo angular:controller user --coffee

Produces app/scripts/controller/user.coffee:

angular.module('myMod')
  .controller 'UserCtrl', ($scope) ->

For example:

yo angular:controller user --typescript

Produces app/scripts/controller/user.ts:

/// <reference path="../app.ts" />

'use strict';

module demoApp {
    export interface IUserScope extends ng.IScope {
        awesomeThings: any[];
    }
    
    export class UserCtrl {

        constructor (private $scope:IUserScope) {
	        $scope.awesomeThings = [
              'HTML5 Boilerplate',
              'AngularJS',
              'Karma'
            ];
        }
    }
}

angular.module('demoApp')
  .controller('UserCtrl', demoApp.UserCtrl);

Minification Safe

tl;dr: You don't need to write annotated code as the build step will handle it for you.

By default, generators produce unannotated code. Without annotations, AngularJS's DI system will break when minified. Typically, these annotations that make minification safe are added automatically at build-time, after application files are concatenated, but before they are minified. The annotations are important because minified code will rename variables, making it impossible for AngularJS to infer module names based solely on function parameters.

The recommended build process uses ng-annotate, a tool that automatically adds these annotations. However, if you'd rather not use it, you have to add these annotations manually yourself. Why would you do that though? If you find a bug in the annotated code, please file an issue at ng-annotate.

Add to Index

By default, new scripts are added to the index.html file. However, this may not always be suitable. Some use cases:

  • Manually added to the file
  • Auto-added by a 3rd party plugin
  • Using this generator as a subgenerator

To skip adding them to the index, pass in the skip-add argument:

yo angular:service serviceName --skip-add

Bower Components

The following packages are always installed by the app generator:

  • angular
  • angular-mocks

The following additional modules are available as components on bower, and installable via bower install:

  • angular-animate
  • angular-aria
  • angular-cookies
  • angular-messages
  • angular-resource
  • angular-sanitize

All of these can be updated with bower update as new versions of AngularJS are released.

json3 and es5-shim have been removed as Angular 1.3 has dropped IE8 support and that is the last version that needed these shims. If you still require these, you can include them with: bower install --save json3 es5-shim. wiredep should add them to your index.html file but if not you can manually add them.

Configuration

Yeoman generated projects can be further tweaked according to your needs by modifying project files appropriately.

Output

You can change the app directory by adding an appPath property to bower.json. For instance, if you wanted to easily integrate with Express.js, you could add the following:

{
  "name": "yo-test",
  "version": "0.0.0",
  ...
  "appPath": "public"
}

This will cause Yeoman-generated client-side files to be placed in public.

Note that you can also achieve the same results by adding an --appPath option when starting generator:

yo angular [app-name] --appPath=public

Testing

Running grunt test will run the unit tests with karma.

Contribute

See the contributing docs

When submitting an issue, please follow the guidelines. Especially important is to make sure Yeoman is up-to-date, and providing the command or commands that cause the issue.

When submitting a PR, make sure that the commit messages match the AngularJS conventions.

When submitting a bugfix, write a test that exposes the bug and fails before applying your fix. Submit the test alongside the fix.

When submitting a new feature, add tests that cover the feature.

Changelog

Recent changes can be viewed on Github on the Releases Page

Sponsors

Love Yeoman work and community? Help us keep it alive by donating funds to cover project expenses!
[Become a sponsor]

License

BSD license

generator-angular's People

Contributors

addyosmani avatar arthurvr avatar btford avatar cebor avatar chicoxyzzy avatar cvrebert avatar dancancro avatar eddiemonge avatar excentris avatar exromany avatar hemanth avatar huerlisi avatar ifours avatar iknite avatar kevva avatar marcin-wosinek avatar mklabs avatar oori avatar passy avatar peterblazejewicz avatar prayagverma avatar rajarju avatar robinboehm avatar samaxes avatar sboudrias avatar sindresorhus avatar sleeper avatar stevemao avatar vstirbu avatar wesleycho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

generator-angular's Issues

Have main module name other than yoemanApp

It would be nice to be able to config the main module name instead of it being yoemanApp. Right now I just update the generated files which is not a big deal since I need to go into each file anyways, just be nice to not have to remember to do this step.

yeoman init angular:controller ctrl creates files without names

From yeoman/yeoman#926 (comment)

Running the above command results in the following output:
invoke angular:controller
create app/scripts/controllers/.js
create test/spec/controllers/.js

The newly created controller has the following content:
'use strict';

yatWebClientApp.controller('Ctrl', function($scope) {
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Testacular'
];
});

Grunt server fails if appPath isn't defined in component.js

Hey there,

running:
npm install -g yo
npm install generator-angular
yo angular (y, n, n, n, n)
npm install
bower install

grunt server

-> resolves in 'Cannot GET /' message in the browser.

So it seems like that the app directory is not properly mounted for the connect middleware in the Gruntfile.js. Adding the appPath variable into component.js solved the issue for me but this should also work without it, don't you think?

HTML files in views folder are not watched with LiveReload.

The Grunt LiveReload task only takes into account HTML files in the app directory. It should also watch for changes in the other HTML files (e.g. views/main.html)

Changing '<%= yeoman.app %>/*.html', to '<%= yeoman.app %>**/*.html', seems to fix this.

"Invalid namespace" when running yo angular

I successfully uninstalled grunt and installed yo, grunt-cli and bower as per instructions. I then verified that yo webapp did work
I then did npm install -g generator-angular and it seems to run fine

However, when running yo angular I get this error message ;

Error angular

Invalid namespace: angular (or not yet registered).
Registered: 4 namespace(s). Run with the --help option to list them.

Please let me know if this is not the right place to post issues like these

yo angular dosen't work

Hey,

I've installed yeoman with the command npm install -g yo grunt-cli bower and the generator with npm install -g generator-angular. If I run now the command yo angular I get this output:

Error angular 

Invalid namespace: angular (or not yet registered).
 Registered: 4 namespace(s). Run with the `--help` option to list them.

modularization

Hi everybody,

The way how angular allows you to create modules and inject them into your app is very cool.

It could be interesting to have something like that into yeoman-angular generator

For example :
yeoman init angular:module [moduleName] [options]
-> it could generate a [moduleName] folder into scripts/modules, with a bootstrap js file

yeoman init angular:directive [moduleName]:[directiveName] [options]
-> could generate a specific directive for module [moduleName]
-> There is two possibilities : create a sub-directory with the directive js file or direct attach directive to the first js create when we create module. (maybe something like --split option

do you think it could be interesting ?

E2E test missing

It would be nice to have E2E test generator (like those in angular-seed) which I think is really important if not essential to angular.js itself.

one should be able to install the sub-generators globally

how to reproduce (1.0.0-beta.2)

npm install -g yo generator-angular generator-testacular
mkdir foobar && cd foobar
yo angular

watch it fail: Invalid namespace: angular (or not yet registered).

it works if I install the generator without the -g switch

Error running 'yo angular:controller user'

I'm trying the new version of yeoman with the angular generator. After encountering Issue 43 and installing generator-testacular, I managed to get the angular generator to run successfully. I then tried to run the angular:controller generator but encountered the following error:

yo angular:controller user
Error angular:controller 

Invalid namespace: angular:controller (or not yet registered).
Registered: 4 namespace(s). Run with the `--help` option to list them.

Any idea what might cause this?
I'm running yo version = 1.0.0-beta.2 on Mac OS X 10.8.
Cheers.

Test fails on fresh install

Running installation like

npm install generator-angular generator-testacular
yo angular
npm install && bower install
bower install angular-ui  

after that grunt test gives me error

Chrome 25.0 (Linux) Controller: MainCtrl encountered a declaration exception FAILED

System: Ubuntu 12.10

yo angular fails

$ yo --version
1.0.0-beta2

$ grunt --version
grunt-cli v0.1.6
grunt v0.4.0rc7

$ mkdir yoapp && cd yoapp
$ npm install generator-angular
[email protected] node_modules/generator-angular
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

$ yo angular
...
Error angular

Invalid namespace: testacular:app:/Users/alexanderhanhikoski/Desktop/Dropbox/Code/test3/node_modules/generator-angular/app/index.js (or not yet registered).
Registered: 13 namespace(s). Run with the --help option to list them.

angular:route raises error: Object #<Generator> has no method 'classify'

$ yo angular:route yo

/usr/local/lib/node_modules/bower/node_modules/tmp/lib/tmp.js:219
throw err;
^
TypeError: Object # has no method 'classify'
at Generator.rewriteAppJs (/home/rstuven/dev-lab/yo/angular/node_modules/generator-angular/route/index.js:32:33)
at next (/home/rstuven/dev-lab/yo/angular/node_modules/generator-angular/node_modules/yeoman-generator/lib/base.js:265:18)
at Generator.run (/home/rstuven/dev-lab/yo/angular/node_modules/generator-angular/node_modules/yeoman-generator/lib/base.js:279:4)
at Environment.run (/usr/local/lib/node_modules/yo/node_modules/yeoman-generator/lib/env.js:421:20)
at init (/usr/local/lib/node_modules/yo/bin/yo:68:7)
at pre (/usr/local/lib/node_modules/yo/bin/yo:80:3)
at Object. (/usr/local/lib/node_modules/yo/bin/yo:106:1)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)

coffeescript handling

coffeescript handling seemed to have changed significantly since 0.9 days. grunt only watches *.coffee under "scripts" (no nesting) and combines all compiled .js into one coffee.js. is this the intent behavior? i am unable to generate angular scaffolding with coffeescript anymore using "yo angular --coffee". is this intentional as well?

Add mocha tests as an option to the generator

One of the more popular stacks developing with Angular seems to be express and/or node, it's one I use frequently. In that environment, Mocha is typically the go to testing framework, and as well it's an option on the webapp generator. I would like the ability to choose that when creating a new angular app via this generator, so I can have a unified testing framework for my entire project.

In browser test runner

The PhantomJS headless runs tests well, but makes it difficult to debug. An in browser test runner would be important to have for TDDing out angular apps.

Dependency on testacular and colors

While generating an app through this generator, the creation is finishing in error, because neither testacular nor colors have been installed.

The documentation should indicate this

Moreover they are not part of the dependencies of the generated application (i.e. not in component.json)

Complete Test Coverage

The various actions of this generator should have tests. See the test directory for an example.

The tests should also run the generated projects tests

Angular Filter generator bug

Hey,

generating angular filter throws a warning.
Path to the template is wrong.

actual path:
/usr/local/lib/node_modules/yeoman/node_modules/yeoman-generators/lib/generators/angular/templates/javascript/filter.js

generator is looking at:
/usr/local/lib/node_modules/yeoman/node_modules/yeoman-generators/lib/generators/angular/templates/filter.js.js

Console Output:
invoke angular:filter
Unable to read "/usr/local/lib/node_modules/yeoman/node_modules/yeoman-generators/lib/generators/angular/templates/filter.js.js" file (Error code: ENOENT). Use --force to continue.

Aborted due to warnings.

Env:
yeoman v0.9.6
node v0.8.14
Mac OS X 10.8.2

How to install latest to use with yeoman 1.0 beta?

Currently trying to use angular generator from source.

npm install -g yo generator-angular grunt-cli bower

From https://github.com/yeoman/yeoman/wiki/Getting-started-with-1.0
Fails with

npm install -g generator-angular
npm http GET https://registry.npmjs.org/generator-angular
npm http 404 https://registry.npmjs.org/generator-angular
npm ERR! 404 'generator-angular' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 12.2.1
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "generator-angular"
npm ERR! cwd /Users/bdd/Dropbox/projects/solr-search
npm ERR! node -v v0.8.18
npm ERR! npm -v 1.2.10
npm ERR! code E404
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/bdd/Dropbox/projects/solr-search/npm-debug.log
npm ERR! not ok code 0

Twitter bootstrap + compass

Hi,

I don't know if this issue is related with bootstrap itself, but, after creating a clean angular project with 'yeoman init angular' and after trying to yeoman build:

$ cat dist/styles/051c0509.main.css
/* Will be compiled down to a single stylesheet with your sass files */

This file is still empty.

Testacular failure

This could be same as #57

With the default set of operations, as in the userguide, the below error got when tried grunt in cli.

testacular.conf has these entries.

// list of files / patterns to load in the browser
files = [
JASMINE,
JASMINE_ADAPTER,
'app/components/angular/angular.js',
'app/components/angular-mocks/angular-mocks.js',
'app/scripts/.js',
'app/scripts/__/
.js',
'test/mock//*.js',
'test/spec/
/*.js'
];

I cannot find angular-mocks.js anywhere.

Thanks.

Running "testacular:unit" (testacular) task
INFO [testacular]: Testacular server started at http://localhost:8080/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: Pattern "/Users/xxx/yotest/app/components/angular-mocks/angular-mocks.js" does not match any file.
WARN [watcher]: Pattern "/Users/xxx/yotest/test/mock/*/.js" does not match any file.
INFO [Chrome 24.0 (Mac)]: Connected on socket id 9bGr4QjMLeRRftbwcWDB
Chrome 24.0 (Mac) Controller: MainCtrl encountered a declaration exception FAILED
ReferenceError: module is not defined
at null. (/Users/xxx/yotest/test/spec/controllers/main.js:6:14)
at /Users/xxx/yotest/test/spec/controllers/main.js:3:1
Chrome 24.0 (Mac): Executed 1 of 1 (1 FAILED) (0.225 secs / 0.019 secs)
Warning: Task "testacular:unit" failed. Use --force to continue.

Update testacular conf

  • At the end of the generation, the user should be requested to launch a bower install to install dependencies, most notably angular.js.
  • As it is installed through bower it will be located in app/components/.../angular.js, whereas the current testacular conf is loading it from app/scripts/vendor/angular/angular.js.
  • Similarly the current testacular is using Jasmine by default, whereas it should use the test framework the user has chosen ;)

Build process not working

Having lot's of issues with the build process currently I'm getting the following error "Uncaught Error: Argument 'fn' is not a function, got Array"

I have no idea what this means or how to debug this. Any help would be great.

customize index.* path

Hi, right now my index.html file is server side rendered, and is not on the default path app/index.html.

When I try to generate something, I get this error message

Error: ENOENT, no such file or directory '/foo/bar/client/app/index.html'

I'm using ejs as a template engine on the server, so my file is called index.ejs (its almost pure html). That brings an additional problem, because the complete solution would be to support code insertion in multiple template engines like jade, so the solution is not just changing the path.

Anyway I think a first approach would be to add a more friendly warning message like "your index.html file is not on the default path, you have to add the script yourself".

Use bootstrap sub-generator

Right now, the Angular generator itself fetches and installs bootstrap. Instead, a sub-generator should be used.

Be able to use path other than app/

Now that yeoman itself allows you to define the app path as something other than app/ as the root path for the application (where index.html and all other web assets for the application are) through yeomanConfig.app, it would be really nice to have angular use that instead of installing everything automatically in app/.

Without this flexibility this generator becomes unusable as for this project, the app folder needs to be used for something else.

Use the function form of “use strict”

The generators output 'use strict'; at the top of the generated files. However, it appears this may be an old pattern? JSHint is advising this be moved into the function body. Please correct me if I'm wrong - the default JSHint configuration in WebStorm requires me to edit this. Thanks, jf

http://stackoverflow.com/questions/8107000/jshint-requires-using-strict-what-does-this-mean

http://stackoverflow.com/questions/4462478/jslint-is-suddenly-reporting-use-the-function-form-of-use-strict

Simple format

The new generator API has a simple format. I think some of the subgenerators could make use of it to simplify.

No docs for it currently: yeoman/generator#152

Extract vendor scripts to Bower

There are a couple of vendor scripts in generator-angular/templates/common/app/test/vendor

Consider extracting them to Bower.

Missing askFor requireJS

I am getting the following error when trying to
yo angular

/usr/local/share/npm/lib/node_modules/yo/node_modules/yeoman-generator/node_modules/bower/node_modules/tmp/lib/tmp.js:219
    throw err;
          ^
ReferenceError: includeRequireJS is not defined
    at eval (/lodash/template/source[3]:8:6)
    at Generator.underscore [as _engine] (/Users/Arts/Projects/centstack-yo/node_modules/generator-angular/node_modules/yeoman-generator/lib/util/engines.js:33:30)

Seems simple enough that the Gruntfile.js template is using the includeRequireJS var that's never assigned.

yeoman init angular w/ bootstrap missing images directory and glyphs Edit

initialized new angular scaffolding w/ bootstrap and generated scaffolding was missing the images directory and bootstrap glyphs png's. Found a couple issues that where somewhat related (missing glyphs #419) but none that relate to the missing images directory. Am I missing something? Issue was reproduced by initializing a new app in the same manner.

Move Angular/JSON3/ES5-Shim to app/components with the rest of the dependencies

Not sure if this is from the project being created when Yeoman was still in flux, but I find the location of vendor/angular, vendor/json3, vendor/es5-shim to be a little perplexing.

I'm suggesting that:

  • all three be moved to the normal dependency location (components & app/components)
  • the package.json file be renamed to component.json to better align with Bower.
  • the component.json be a generated containing:
...
  "name":  "<projectName>",
  "dependencies": {
    "angularjs": "<semVer>",
    "json3":  "<semVer>",
    "es5-shim":  "<semVer>",
    // and the CSS/Compass version depending upon configuration
    "bootstrap": "<semVer>",
  }
...
  • index.html be updated to include these new paths, including anything guarded by IE version checks

The plus would be that Bower could manage them like any other dependency. This way, they can reap the benefits of Bower, like version updates and exclusion from version control.

I always find myself making these changes manually, so doing it during the scaffolding step would be a plus.

bower task failed

The task is not used at all and it requires requirejs config to work.

--coffee option not being honoured with new application

Steps:

$ npm install generator-angular generator-testacular
$ yo angular --coffee
$ npm install && bower install

I don't see any errors in the command line.

The generator should create app/scripts/app.coffee.

The generator makes app/scripts/app.js instead.

The directive generator seemed to work fine with the --coffee option.

Incorrect module name generated when the directory name contains dot(.)

My app directory name is cartv0.1

When i do yo angular the module name generated in main controller js and app.js is cartv01App instead of cartv0.1App

Testacular test fails. I get the below error in browser:
No module: cartv0.1App

I have to manually update the module name in all the files to fix this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.