Giter Club home page Giter Club logo

skipperbent / simple-php-router Goto Github PK

View Code? Open in Web Editor NEW
616.0 22.0 111.0 1.15 MB

Simple, fast and yet powerful PHP router that is easy to get integrated and in any project. Heavily inspired by the way Laravel handles routing, with both simplicity and expand-ability in mind.

PHP 100.00%
router php cms library module php-router php-router-standalone csrf-protection middleware rewrite-urls easy-to-use lightweight input-handler request-handler url-handler routing-engine routing

simple-php-router's Issues

Where is the basepath setting? and where is the csrf_token function?

yesterday, i have add this func() for personal use. but i forgot to back it up. so i forgot where to set this function?

how do i make it work if it run from sub-dir?

(dont use the htaccess rewritebase)

and for the csrf_token, its mentioned at the docs, but actually where it is?

Resource problem..

    SimpleRouter::resource('/m1', 'KurumsalController')->name('kurumsal'); // Kurumsal
    SimpleRouter::resource('/m2', 'HizmetController')->name('hizmet'); // Hizmetler
    SimpleRouter::resource('/m3', 'ProjeController')->name('proje'); // Projeler
    SimpleRouter::resource('/m4', 'ReferansController')->name('referans'); // Projeler
    SimpleRouter::resource('/m5', 'BlogController')->name('blog'); // Blog
    SimpleRouter::resource('/m6', 'VideoController')->name('video'); // Video
    SimpleRouter::resource('/m7', 'FotoController')->name('foto'); // Foto Galeri
    SimpleRouter::resource('/m11', 'DoktorController')->name('doktor'); // Doktorlar

when i try to enter "x.com/m11", its running "KurumsalController" which is "m1"

how can i fix it

Thanks

Resources Problem in v3.2.0

    SimpleRouter::resource('/m11', 'DoktorController')->name('doktor'); // Doktorlar
    SimpleRouter::resource('/m1', 'KurumsalController')->name('kurumsal'); // Kurumsal
    SimpleRouter::resource('/m2', 'HizmetController')->name('hizmet'); // Hizmetler
    SimpleRouter::resource('/m3', 'ProjeController')->name('proje'); // Projeler
    SimpleRouter::resource('/m4', 'ReferansController')->name('referans'); // Projeler
    SimpleRouter::resource('/m5', 'BlogController')->name('blog'); // Blog
    SimpleRouter::resource('/m6', 'VideoController')->name('video'); // Video
    SimpleRouter::resource('/m7', 'FotoController')->name('foto'); // Foto Galeri

I updated version v3.2.0. But my resources not working :(

And then I again downgrade 3.1.1 and there is no problem.

How i can fix it ?

Uncaught Pecee\SimpleRouter\Exceptions\HttpException: Route "/login/" or method "get" not allowed.

Hi , My route file is
Router::get('/login','Application\Controllers\login@index')->name('login'); Router::post('/login','Application\Controllers\login@store')->name('login.post');

But I have error . My error is
Fatal error: Uncaught Pecee\SimpleRouter\Exceptions\HttpException: Route "/login/" or method "get" not allowed. in /Applications/XAMPP/xamppfiles/htdocs/udemy2/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php:287 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/udemy2/vendor/pecee/simple-router/src/Pecee/SimpleRouter/SimpleRouter.php(52): Pecee\SimpleRouter\Router->routeRequest() #1 /Applications/XAMPP/xamppfiles/htdocs/udemy2/app/Router.php(12): Pecee\SimpleRouter\SimpleRouter::start() #2 /Applications/XAMPP/xamppfiles/htdocs/udemy2/index.php(4): Application\Router::start() #3 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/udemy2/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php on line 287

What is Problem ?
Thank Yo.

Unable to easily disable CSRF checks

There's no easy way to disable CSRF check but to write dummy CsrfVerifer implementation as neither SimpleRouter's csrfVerifier() nor RouterBase's setBaseCsrfVerifier() accept null, even if rest of the code checks for null.

Issue with php 7.0

Before, the script was compatible with PHP 7.0 and even previous version down to 5.6. But now it seems like the project is only compatible with php 7.1 and greather. That is nto a bad thing, but i've received a lot of issue submittion on my item description (even refund request). Hope we can find a wayout for this. You have a great tool, that's why so far i'm using it.

Regards.

Get the parameter define in a route

Hi, how can i identify if a route with any name has a or multiple parameter?

ex :

SimpleRouter::get('/{query}.html', "SimpleController@search")
->where([ 'query' => '[A-Za-z0-9-]+' ])
->name('search');

so i can create (example) :

SimpleRouter::getParams( 'search' );

it will return

return array('query');

if the route dosn't has any parameter, it will return "null", etc.

thanks :)

Mismatched route

Hello,

I have this routes:

/aviso/{aviso}
/{pagina?}
/pagina/{pagina}

/aviso/enviado match /aviso/{aviso}
/contacto match /{pagina?}
/pagina/usuarios match /pagina/{pagina}

But /avisolegal match /aviso/{aviso} insteadof /{pagina?}

Thanks

Posting content-type : 'application/json'

PHP 7.2 apache 2.4

Posting 'application/json' content to the router.

file_get_contents('php://input') successfully returns the json content

router::request()->getInputHandler()->all() returns an empty array

The all() method only checks this input for ['put', 'patch', 'delete'], is this correct?

The library does not work

not work:

use Pecee\SimpleRouter\SimpleRouter as Route;
Route::get('/', function () {
echo 'Hola';
});
Route::get('/profile/{id?}', function ($id) {
echo $id;
});
Route::start();

Yes work:

use Pecee\SimpleRouter\SimpleRouter as Route;

Route::get('/profile/{id?}', function ($id) {
echo $id;
});
Route::get('/', function () {
echo 'Hola';
});
Route::start();

Routes on paths

The routes do not work if I have the project for example "localhost/project/public" or "mydomain.com/test"

Asking for getUrl() without parameters but getting with current route parameters

Hi simon,

This is what it's happening to me:

I have one route named 'listados' with the regex: /cursos/listado/{listado?}/{filtro?}/

I go on the browser to url /cursos/listado/especialidad/test/

If I run router()->getUrl('listados', ['full','one']) I get: /cursos/listado/full/one/.
But, if I run router()->getUrl('listados', []) I am getting: /cursos/listado/especialidad/test/ when I expected to get only /cursos/listado (without parameters).

The problem seems to be on LoadableRoute->findUrl(), who adds the parameters of the current path if $parameters is empty.

Route Parsing issue

Hi i'm facing some problem with the script.
When i'm registering a route like so :

   Route::get( 'foo/{slug?}/{action?}', function( $slug, $action ) {

    }); 

   // and

   Route::get( 'foo-slug/{slug?}/{action?}', function( $slug, $action ){

   });

the first route seem to match to this route :
"http://site.com/foo-slug/bar/do"

And the second route is not triggered.

Handle 404 Page

Hi, thanks for this powerfull simple Routing. I have use your routing for my sites.

After i implement a routing to handle 404, like i did in laravel :

SimpleRouter::all( '{notfound}', 'AdminController@404notfound' )->where( [ 'notfound' => '(.*)'] );

where the function 404notfound() inside AdminController is ;

function 404notfound() {
       header("Location: " . home_url() );
       exit();	
}

Why it causing a 302 status header for all of my routing, including homepage, single page, and also another. Please help me...

I cannot find any documentation on handling 404 request to return to homepage, thanks.

'Route not found' error shows original route instead rewrited route

If i use one RouterBootManager to rewrite routes using request->setRewriteUrl() to rewrite one url and the new url have a route not defined, the error message tell me about not found original route.

Sample:

I will rewrite /page/login to /ask/login, but i don't have defined route for /ask/login.

I get this error:

Fatal error: Uncaught Pecee\SimpleRouter\Exceptions\NotFoundHttpException: Route not found: /page/login in ..\pecee\simple-router\src\Pecee\SimpleRouter\Router.php on line 286

I will be better:

Fatal error: Uncaught Pecee\SimpleRouter\Exceptions\NotFoundHttpException: Route not found: /ask/login (redirected from /page/login) in ..\pecee\simple-router\src\Pecee\SimpleRouter\Router.php on line 286

Or:

Fatal error: Uncaught Pecee\SimpleRouter\Exceptions\NotFoundHttpException: Route not found: /ask/login in ..\pecee\simple-router\src\Pecee\SimpleRouter\Router.php on line 286

Parameters are NULL if the route contains '-' for param value.

oHello,
I found a problem (I think) when trying to create some routes dynamically.

Ex:
Route /p/{any}/{id}
/p/word/{id} -> returns: "word"
/p/another-word/{id} -> returns "null"

I want to match the route "p/my-cat-is-beatiful/1" and use the {id}=1 in order to show the content I want.

I read about "Bootmanager: loading routes dynamically", but I don't want to write all the routes there because I have 1,8 million..

I also tried with setMatch() method, but the results are the same.

SimpleRouter::get('/ajax/{any}', function($param1) {
    var_dump($param1);
})->setMatch('/\/ajax\/([^.]*[^.]*)/is');

$param1 = null when the "any" part from the route contains "-".
Is there any way to avoid this?

Thanks,
Claudiu

Question about Router::resource

hello!
I have controller like

class Test
{
    public function testIndex(){}
    public function testShow(){}
}

I want to make resource on this class with custom $methodNames. Something like this

Router::resource('/test', Test::class)
            ->setMethodNames([
                'testIndex'=>'testIndex',
                'testshow'=>'testshow',
            ]);

But when I hit http://mydomain/test/testIndex I received error
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

What I'm doing wrong?

Nested groups does not work

SimpleRouter::group(['prefix' => 'v1'], function () {
    SimpleRouter::get('/', function () {
        echo "OK 1";
    });
    SimpleRouter::group(['prefix' => '/system'], function () {
        SimpleRouter::get('/', function () {
            echo "OK 2";
        });
    });
});

Route /v1 works, but /v1/system does not.

problem slug contain dashes

Hi. Thanks for your work.
I have an error if slug contain dashes
Fatal error: Uncaught exception 'Pecee\SimpleRouter\Exceptions\NotFoundHttpException' with message 'Route not found
I tried to work with method where, but I have problem even with code from example.
SimpleRouter::get('/user/{name}', function ($name) {
//
})->where(['name', '[A-Za-z]+']);
shows
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 130968 bytes) in vendor/pecee/simple-router/src/Pecee/SimpleRouter/Route/Route.php on line 405
Can you check this please
With Regards, Sergey.

Subdomain routing on root domain?

Not really a bug, just a question ...

I'm trying to use the router as a basic redirector for subdomains (planning on expanding it later though).

I've got it working fine for full subdomains ... like mydomain.example.com.

If I invoke it without a subdomain, i.e., example.com, I get the following error:

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function {closure}(), 0 passed in /usr/local/www/chitour/www/html/vendor/pecee/simple-router/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php on line 69 and exactly 1 expected in /usr/local/www/chitour/www/html/index.php:10
Stack trace:
#0 /usr/local/www/chitour/www/html/vendor/pecee/simple-router/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php(69): {closure}()
#1 /usr/local/www/chitour/www/html/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Route/Route.php(99): Pecee\\SimpleRouter\\ClassLoader\\ClassLoader->loadClosure(Object(Closure), Array)
#2 /usr/local/www/chitour/www/html/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php(181): Pecee\\SimpleRouter\\Route\\Route->renderRoute(Object(Pecee\\Http\\Request), Object(Pecee\\SimpleRouter\\Router))
#3 /usr/local/www/chitour/www/html/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php(247): Pecee\\SimpleRouter\\Router->renderAndProcess(Object(Pecee\\SimpleRouter\\Route\\RouteGroup))
#4 /usr/local/www/c in /usr/local/www/chitour/www/html/index.php on line 10

I'm using the example in the readme to do the redirect ...

SimpleRouter::group(['domain' => '{subdomain}.chitour.org'],function($subdomain) {
  SimpleRouter::get('/', function($subdomain) {
    redirect($subdomain); 
  });
});

Any suggestions?

CSFR documentation issue

Hi,

Nice library : ))

In the readme documentation don't said how set the CSFR token in a form, and not too the name of the field.

I finded that in src/Pecee/Http/Middleware/BaseCsrfVerifier.php, but it will be better has it in documentation.

Thanks

Route with parameters don't work

Here is my code:

<?php

require "./vendor/autoload.php";

use \Pecee\SimpleRouter\SimpleRouter as Route;

Route::get('/', function() {
    echo "index";
});

Route::get('/{foo}', function($foo) {
    echo $foo;
});

Route::start();

When I access "/", it works fine. But when I access the URL "http://localhost/shit", it will throw an exception:

Fatal error: Uncaught exception 'Pecee\SimpleRouter\RouterException' with message 'Route not found: /shit' in E:\wwwroot\route-test\vendor\pecee\simple-router\src\Pecee\SimpleRouter\RouterBase.php:131 Stack trace: #0 E:\wwwroot\route-test\vendor\pecee\simple-router\src\Pecee\SimpleRouter\SimpleRouter.php(24): Pecee\SimpleRouter\RouterBase->routeRequest() #1 E:\wwwroot\route-test\index.php(21): Pecee\SimpleRouter\SimpleRouter::start() #2 {main} thrown in E:\wwwroot\route-test\vendor\pecee\simple-router\src\Pecee\SimpleRouter\RouterBase.php on line 131

What's the problem?

Allow response()->json() to accept JsonSerializable

First off, thanks for SimpleRouter. It's awesome.

Currently, the json() method on the Response object requires the $value argument to be an array. It would be really useful if it could accept either an array or any object that implements the JsonSerializable interface. We want to use it to build simplified Fractal like translators.

Thanks.

Groups with placeholders cause parameter shift

Not really sure if this is a bug or feature or side effect but this is somehow error prone:

SimpleRouter::group(['prefix' => 'v1/{item}/'], function () {
    SimpleRouter::get('/{foo}', function ($foo) {
        echo "Got {$foo}";
    });
});

as requesting /v1/AAA/BBB will result in Got AAA which is not what is expected.

subfolder problem

hi,

i wanna use this in subfolder in my host.
but there is no auto detect system.

example
adress : localhost/AybimCms/admin
router :

SimpleRouter::group(['prefix' => 'AybimCms/admin/'], function () { 
SimpleRouter::get('/', 'Home@index')->name('adminpanel');
}

then i want to redirect " localhost/AybimCms/admin" with url('adminpanel') function but redirect to "localhost/admin"

how can i fix it

Documentation issues

README says that to install simple-php-router one needs to

composer require pecee/framework

but that installs whole framework of yours and router. Shouldn't it rather be just router?:

composer require pecee/simple-router

Also sample code shows

use \Pecee\SimpleRouter;

but it it will not work, unless changed to

use \Pecee\SimpleRouter\SimpleRouter;

Also the whole sample is not working because of this line:

// Do the routing
SimpleRouter::init($defaultControllerNamespace);

which uses method that does not exist. It should be:

// Do the routing
SimpleRouter::start($defaultControllerNamespace);

Next, I tried to figure out how custom exception handler that is mentioned in the README is supposed to work, but I failed to locate any code that would care of the exceptionHandler setting key at all. Same for middleware key which I am not seeing being handled. Am I missing something?

Optional parameters default value

I tried this code from the documentation :
SimpleRouter::get('/user/{name?}', function ($name = 'Simon') { return $name; });

But it seems that the default value doesn't work. The returned value will be null or empty in my case, if my url is "/user/" without a parameter.

I also tried the same thing by using a controller but the result is the same.

Use getHeader('unencoded_url') for IIS instead of $this->getHeader('request-uri')

Hi simon,

I'm using IIS and i'm not sure if this issue happens also on Apache and another Web Servers.

When i have one url with utf8 characters, like: http://www.misite.com/especialidad/Dermatolog%C3%ADa or http://www.misite.com/especialidad/Dermatología, i'm getting a strangely encoded version of Dermatología, but not Dermatología or Dermatolog%C3%ADa

Strangely, for something like http://www.misite.com/?especialidad=Dermatolog%C3%ADa or http://www.misite.com/?especialidad=Dermatología i get Dermatología or Dermatolog%C3%ADa for $_GET['especialidad']

I've researched and, apparently, IIS encodes somehow the part that corresponds to the path of the url, but not on querystring part.

You can get more information here: tjanczuk/iisnode#486 and here: https://forums.iis.net/t/1153679.aspx

Then, i have made this change on __construct() method of Peece\Http\Request class:
$this->uri = urldecode($this->getHeader('unencoded_url')) ?: $this->getHeader('request-uri');

And it's working like a charm.

unencoded_url seems to be present only when url contains utf8 characters.

Error on converting callback to string

Hi,

When using getUrl() in a named url with a anonymous function, throws one error on getMethod(), at line 268 of src\Pecee\SimpleRouter\Route\Route.php

I have changed the code to:

    public function getMethod()
    {
        if (is_string($this->callback) && strpos($this->callback, '@') !== false) {
            $tmp = explode('@', $this->callback);

            return $tmp[1];
        }

        return null;
    }

    public function getClass()
    {
        if (is_string($this->callback) && strpos($this->callback, '@') !== false) {
            $tmp = explode('@', $this->callback);

            return $tmp[0];
        }

        return null;
    }

NotFoundHttpException if route parameters are 'encoded'

Hi Simon,

I'm using your library on one spanish web site.

For the route: /especialidad/{especialidad}
Sometimes i have one url like: /especialidad/cirugía local.
I have encoded the url and final url is: /especialidad/cirug%C3%ADa%20local, but i get NotFoundHttpException with this url.

In summary:

This works:
/especialidad/cirugia

This don't work:
/especialidad/cirug%C3%ADa (/especialidad/cirugía)
/especialidad/cirug%C3%ADa%20local (/especialidad/cirugía local)

Thank you

What if two routes matches ? Which one has the priority ?

Hi again,
i'm facing some situation where in some cases two routes matches. My Concern is there should be a way for a route to have a priority. For example :
http://example.com/go
http://example.com/go/somewhere

is matched by the following

<?php
Route::get( '/go', function(){
});
Route::match([ 'get', 'post' ], '/go/{param?}', function(){
// this will match in all case even if it's added before 'Route::get...'
});

in my situation, the route with match method alway respond in both cases "/go" and "/go/somewhere". There should be a way to prevent it by taking in consideration the first match for example.

Regards.

response()->json utf8 issues

It returns gibberish (see name):

[{"trans_id":"a0N1lXIfjome+JJOUXK8A4fvQEs=","status":"created","name":null,"for":null},{"trans_id":"eT0TawffDyArKiT8JtB0RiKa4Jg=","status":"created","name":null,"for":null},{"trans_id":"xvw\/GoksovyxSvftSRHBgTjc8pE=","status":"created","name":null,"for":null},{"trans_id":"+pJ2pSPm5zJanlMnpLIllAr5biM=","status":"created","name":null,"for":null},{"trans_id":"k4ribuEu0E8RWlEMla+YQh03org=","status":"created","name":"\u10e1\u10d0\u10dc\u10d3\u10e0\u10dd","for":null},{"trans_id":"54hj7Oqvm1L3al8mtpQzzPBkMy8=","status":"success","name":"\u10d5\u10d0\u10ee\u10e2\u10d0\u10dc\u10d2 \u10db\u10d4\u10d2\u10e0\u10d4\u10da\u10d8\u10e8\u10d5\u10d8\u10da\u10d8","for":null},{"trans_id":"igd\/UEoLdc9d\/t9TZ+YkYkO1Chc=","status":"failed","name":"\u10e1\u10ee\u10d5\u10d0 \u10e0\u10d0\u10db\u10d4","for":null},{"trans_id":"GK0nResZI23FrWU3sVnRL05v9zA=","status":"success","name":"\u10d5\u10d8\u10dc \u10d5\u10d8\u10dc \u10d0\u10e0\u10d8\u10e1 \u10e1\u10d0\u10e5\u10d0\u10e0\u10d7\u10d5\u10d4\u10da\u10dd\u10e8\u10d8","for":null},{"trans_id":"i5YVfAyzmy\/JtCpHiq7cquOOGZU=","status":"created","name":null,"for":null}]

Simple variable dump, not going throng this method:

array(9) { [0]=> array(4) { ["trans_id"]=> string(28) "a0N1lXIfjome+JJOUXK8A4fvQEs=" ["status"]=> string(7) "created" ["name"]=> NULL ["for"]=> NULL } [1]=> array(4) { ["trans_id"]=> string(28) "eT0TawffDyArKiT8JtB0RiKa4Jg=" ["status"]=> string(7) "created" ["name"]=> NULL ["for"]=> NULL } [2]=> array(4) { ["trans_id"]=> string(28) "xvw/GoksovyxSvftSRHBgTjc8pE=" ["status"]=> string(7) "created" ["name"]=> NULL ["for"]=> NULL } [3]=> array(4) { ["trans_id"]=> string(28) "+pJ2pSPm5zJanlMnpLIllAr5biM=" ["status"]=> string(7) "created" ["name"]=> NULL ["for"]=> NULL } [4]=> array(4) { ["trans_id"]=> string(28) "k4ribuEu0E8RWlEMla+YQh03org=" ["status"]=> string(7) "created" ["name"]=> string(18) "სანდრო" ["for"]=> NULL } [5]=> array(4) { ["trans_id"]=> string(28) "54hj7Oqvm1L3al8mtpQzzPBkMy8=" ["status"]=> string(7) "success" ["name"]=> string(58) "ვახტანგ მეგრელიშვილი" ["for"]=> NULL } [6]=> array(4) { ["trans_id"]=> string(28) "igd/UEoLdc9d/t9TZ+YkYkO1Chc=" ["status"]=> string(6) "failed" ["name"]=> string(25) "სხვა რამე" ["for"]=> NULL } [7]=> array(4) { ["trans_id"]=> string(28) "GK0nResZI23FrWU3sVnRL05v9zA=" ["status"]=> string(7) "success" ["name"]=> string(69) "ვინ ვინ არის საქართველოში" ["for"]=> NULL } [8]=> array(4) { ["trans_id"]=> string(28) "i5YVfAyzmy/JtCpHiq7cquOOGZU=" ["status"]=> string(7) "created" ["name"]=> NULL ["for"]=> NULL } }

accept body with json format (post/put/patch/delete)

Hi, sorry, I just noticed yesterday. So the previous issue I addressed #115

I want to send body with json format from post method. something like:
$.ajax { url: /book/insert method: 'post', type: 'json' }
I want to make /book/insert endpoint with post method and able to accept body with json format.

Route not found when url's parameters contains dash ('-')

SimpleRouter::get("/{lang}/products-categories/{name}", function ($lang, $name) {
	include './public/' . $lang . '/products-categories/' . $name . '.html';
});

on this route i got an error when the name parameter contains '-' like '/it/products-categories/system-track'.

'/it/products-categories/system' works.

Fatal error: Uncaught Pecee\SimpleRouter\Exceptions\NotFoundHttpException: Route not found: /it/products-categories/system-track in /home/vagrant/Code/prima-automotive/vendor/pecee/simple-router/src/Pecee/SimpleRouter/Router.php on line 286

i've tried with this

SimpleRouter::get('/{lang}/products-categories/{name}', function ($lang, $name) {
	include './public/' . $lang . '/products-categories/' . $name . '.html';
})->where(['lang' => '[a-z]', 'name' => '^[A-Za-z0-9\-]+$']);

but the problem still remain

Lack of tests?

I just need a router for one of my project and Laravel compatibility of yours is a 'pro' for me, so I am going to evaluate your project, however I see no single test in here which frankly speaking scares me away a bit. How do you test your router?

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.