Giter Club home page Giter Club logo

yii2-assets-auto-compress's Introduction

Automatically compile and merge files js + css + html in yii2 project.

This solution enables you to dynamically combine js and css files to optimize the html page. This allows you to improve the performance of google page speed.

This tool only works on real sites. On the local projects is not working!

Latest Stable Version Total Downloads

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist skeeks/yii2-assets-auto-compress "*"

or add

"skeeks/yii2-assets-auto-compress": "*"

How to use

//App config
[
    'bootstrap'    => ['assetsAutoCompress'],
    'components'    =>
    [
    //....
        'assetsAutoCompress' =>
        [
            'class'         => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
        ],
    //....
    ]
]
//App config with all options
[
    'bootstrap'  => ['assetsAutoCompress'],
    'components' => [
        //....
        'assetsAutoCompress' => [
            'class'   => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
            'enabled' => true,

            'readFileTimeout' => 3,           //Time in seconds for reading each asset file

            'jsCompress'                => true,        //Enable minification js in html code
            'jsCompressFlaggedComments' => true,        //Cut comments during processing js

            'cssCompress' => true,        //Enable minification css in html code
            
            'cssFileCompile'        => true,        //Turning association css files
            'cssFileCompileByGroups' => false       //Enables the compilation of files in groups rather than in a single file. Works only when the $cssFileCompile option is enabled
            'cssFileRemouteCompile' => false,       //Trying to get css files to which the specified path as the remote file, skchat him to her.
            'cssFileCompress'       => true,        //Enable compression and processing before being stored in the css file
            'cssFileBottom'         => false,       //Moving down the page css files
            'cssFileBottomLoadOnJs' => false,       //Transfer css file down the page and uploading them using js

            'jsFileCompile'                 => true,        //Turning association js files
            'jsFileCompileByGroups'         => false        //Enables the compilation of files in groups rather than in a single file. Works only when the $jsFileCompile option is enabled
            'jsFileRemouteCompile'          => false,       //Trying to get a js files to which the specified path as the remote file, skchat him to her.
            'jsFileCompress'                => true,        //Enable compression and processing js before saving a file
            'jsFileCompressFlaggedComments' => true,        //Cut comments during processing js

            'noIncludeJsFilesOnPjax' => true,        //Do not connect the js files when all pjax requests when all pjax requests when enabled jsFileCompile
            'noIncludeCssFilesOnPjax' => true,        //Do not connect the css files when all pjax requests when all pjax requests when enabled cssFileCompile

            'htmlFormatter' => [
                //Enable compression html
                'class'         => 'skeeks\yii2\assetsAuto\formatters\html\TylerHtmlCompressor',
                'extra'         => false,       //use more compact algorithm
                'noComments'    => true,        //cut all the html comments
                'maxNumberRows' => 50000,       //The maximum number of rows that the formatter runs on

                //or

                'class' => 'skeeks\yii2\assetsAuto\formatters\html\MrclayHtmlCompressor',

                //or any other your handler implements skeeks\yii2\assetsAuto\IFormatter interface

                //or false
            ],
        ],
        //....
    ],
];

Links

Demo (view source code)

Screenshot

SkeekS CMS admin panel


SkeekS CMS admin panel


SkeekS CMS admin panel


SkeekS CMS admin panel


skeeks!
SkeekS CMS (Yii2) — fast, simple, effective!
skeeks.com | cms.skeeks.com

yii2-assets-auto-compress's People

Contributors

dimetriy avatar haifahrul avatar ovidiupop avatar romanitalian avatar simocheccoli avatar skeeks-semenov avatar tsanchev 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

yii2-assets-auto-compress's Issues

Setting unknown property:extra

I'm getting this error, am using the exact settings in your example too.

Setting unknown property: skeeks\yii2\assetsAuto\formatters\html\MrclayHtmlCompressor::extra

I'm on php 8.0.8 and yii2 2.0.42.1

Issue with Compressing Regex

{return/^(?:(?:https?|file)\:)?\/\//.test(e)}

becomes:

{return/^(?:(?:https?|file)\:)?\/\}

When it's compressed. As you can see, not just the end of the regex, but the following function call, are removed. Based on the fact that the regex ends with '//', I assumed it might be something to do with automatically removing comments. But I added:

'jsFileCompressFlaggedComments' => FALSE

To my config, and the error persisted. So I'm not sure what might be causing the problem.

MAP file?

Я думаю, надо создать MAP файл.

Нехватает группировки ассетов или запрет генерации хеша от внешних линков

У меня есть некий универсальный ассет на все фронтенд страницы... Допустим так

app\assets\FrontendAsset::register($this);

Но на одной из страниц я хочу добавить еще один внешний ассет гуглокарт... (сделал без ассетов)

$this->registerJsFile('https://maps.googleapis.com/maps/api/js?language=ru', ['depends' => 'yii\web\JqueryAsset']);

Там где нет гуглокарт создается комбинированный файл с хешем №1
Там где есть гуглокарты создается тот же самый комбинированный файл с хешем №2

Получается тупняк!!!

Решение кроется здесь:

        $fileName   =  md5( implode(array_keys($files)) . $this->getSettingsHash()) . '.js';
        $publicUrl  = \Yii::getAlias('@web/assets/js-compress/' . $fileName);

Я думаю правильно не создавать хешь для файлов http:// https:// и //, исключить их из генерации хеша, тогда все будет гуд...

До исправления проблемы судя по всему должен работать костыль с document.write

Автор... еще раз спасибо за отличное дополнение... очень ждем фикса - он очень простой...

Skeeks-CKEditor and Yii2-assets-auto-compress not working together

Hello,

I am using Skeeks-CKEditor in code and Yii2-assets-auto-compress for compressing assets.

When I am using it, the dynamically generated assets path is not coming correctly.

CKEditor code:

<?= skeeks\yii2\ckeditor\CKEditorWidget::widget([
	'name' => 'content',
	'id' => 'content',
	'options' => ['rows' => 6],
	'preset' => CKEditorPresets::FULL,
	'clientOptions' =>
		[
			'height' => 120,
		],
]); ?>

and Asset-auto-compress code is:

'assetsAutoCompress' => [
	'class'                         => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
	'enabled'                       => true,
	'readFileTimeout'               => 10,
	'jsCompress'                    => true,
	'jsCompressFlaggedComments'     => true,
	'cssCompress'                   => true,
	'cssFileCompile'                => true,
	'cssFileRemouteCompile'         => true,
	'cssFileCompress'               => true,
	'cssFileBottom'                 => false,
	'cssFileBottomLoadOnJs'         => false,
	'jsFileCompile'                 => true,
	'jsFileRemouteCompile'          => true,
	'jsFileCompress'                => true,
	'jsFileCompressFlaggedComments' => true,
	'htmlCompress'                  => false,
	'noIncludeJsFilesOnPjax'        => true,
	'htmlCompressOptions'           => 
		[
			'extra' => false,
			'no-comments' => true
		],
],

Both the plugins are developed by you. So just help me out to resolve this.

syntax error

ParseError: syntax error, unexpected end of file, expecting function (T_FUNCTION) in vendor\skeeks\yii2-assets-auto-compress\AssetsAutoCompressComponent.php:646

Not working in advanced app for me

Ive checked your main component and found setWebroot section thinking this is where I could hack it in my config/bootstrap.php making an alias for webroot to no avail.

here is my apache conf
"bty" is like my backend

on frontend everything compresses fine

any help?

Alias /bty "/Server/BTY/web/bty"
<Directory "/Server/BTY/web/frontend">
<IfModule mod_php5.c>
php_value include_path "/Server/BTY/app"
php_admin_flag engine on
</IfModule>
<IfModule mod_rewrite.c>
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
</Directory>
<Directory "/Server/BTY/web/bty">
<IfModule mod_php5.c>
php_value include_path "/Server/BTY/app"
php_admin_flag engine on
</IfModule>
<IfModule mod_rewrite.c>
RewriteBase /bty/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
</Directory>

here is my bty/config/bootstrap.php
@bty is my main app folder
Yii::setAlias('web', '@BTY/web/bty/');
Yii::setAlias('webroot', '/');

Add Gzip for JS files

Having Gzip compression for JS files saves a lot of bandwidth for clients and improves page speed for webmasters

$this->fileGetContents( Url::to( \Yii::getAlias('@web'.$fileCode), true) ) error

when compress css files and js files,you foreach them and then getContents with Url::to( \Yii::getAlias('@web'.$fileCode), true)
It may course a bug

for example:
if my asset $fileCode is “/admin/assets/a466841a/index.css”
and my web (use \Yii::getAlias('@web')) is "/admin"
then this result will be "/admin/admin/assets/a466841a/index.css"
now, you see, you can't find this file!

I think you can replace "Url::to( \Yii::getAlias('@web'.$fileCode), true)" with "Url::to($fileCode), true)"

Blueimp Fileupload not loading on compression

When I activate your autocompress then my fileupload is no longer working. EVEN when I set all the settings to FALSE.. I still get the following error
Any suggestions

VM936:1 Uncaught TypeError: jQuery(...).fileupload is not a function
    at eval (eval at globalEval (jquery-2.2.4.min.js:2), <anonymous>:1:54)
    at eval (<anonymous>)
    at Function.globalEval (jquery-2.2.4.min.js:2)
    at ua (

Skip (re-)minification of already minified files, e.g. *.min.js and *.min.css

Hi,

this extension is awesome.

To speed things up, it would be great to skip files ending with .min.css or .min.js from running again through e.g. CssMin::minify.

Best thing would be to have this configurable per AssetBundle, but I'm not sure if this will be possible. On the other hand a regex (configurable in the assetsAutoCompress configuration array) could do the job.

What do you think?

Kind regards from Austria
Andreas

Compression on off not working

Here I have mark false for all still its compressing all css and js

'class' => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
'enabled' => false,

'readFileTimeout' => 3, //Time in seconds for reading each asset file

'jsCompress' => false, //Enable minification js in html code
'jsCompressFlaggedComments' => false, //Cut comments during processing js

'cssCompress' => true, //Enable minification css in html code

'cssFileCompile' => true, //Turning association css files
'cssFileRemouteCompile' => false, //Trying to get css files to which the specified path as the remote file, skchat him to her.
'cssFileCompress' => true, //Enable compression and processing before being stored in the css file
'cssFileBottom' => false, //Moving down the page css files
'cssFileBottomLoadOnJs' => false, //Transfer css file down the page and uploading them using js

'jsFileCompile' => false, //Turning association js files
'jsFileRemouteCompile' => false, //Trying to get a js files to which the specified path as the remote file, skchat him to her.
'jsFileCompress' => false, //Enable compression and processing js before saving a file
'jsFileCompressFlaggedComments' => false, //Cut comments during processing js

'htmlCompress' => true, //Enable compression html
'htmlCompressOptions' => //options for compressing output result
[
'extra' => false, //use more compact algorithm
'no-comments' => true //cut all the html comments
],

How to turn off compression here ?

don't update css file

i update my css files in current assets , but not updated my css codes in the plugin created css file.
how i can update this file and clear the cache??

Скорость склейки очень медленная

Заходя на страницы, на которых я не был - грузятся по 15 - 20 сек., что бы склеить стили со скриптами, а это очень долго. Так и должно быть или я что не правильно делаю?

301 Moved Permanently

Hi! when I'm trying to use this extention on a real site,not local! my css file is empty and my javascript files compact to a file with this content

`<title>301 Moved Permanently</title>

301 Moved Permanently


nginx;;<title>301 Moved Permanently</title>

301 Moved Permanently


nginx;;<title>301 Moved Permanently</title>
.
.

301 Moved Permanently

;`

I don't understand why it 's in this way!

has bug with theme? can you fix it ? thanks

if app set theme after render yii display

Invalid Parameter – yii\base\InvalidParamException

The view file does not exist: /home/wwwroot/com.yii/backend/views/site/index.php

how to add async attribute to javascript tag?

In my AssetBundle I can set the "async" attribute for javascript tag adding:

public $jsOptions = [
    'async' => 'async',
];

But when the javascript is compressed, the async attribute disappear. Is it possible to keep it (or to set it somewhere else?).

Thanks

Grouping Asset Bundles

Hi,

I'm on a point where my combined css grows above 278kB which causes issues in IE9, as this stupid browser cannot handle stylesheets bigger than this limit (see: http://stackoverflow.com/a/23241583).
Luckily this limit is per file basis, so I though the solution will be "Grouping Asset Bundles" (http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#grouping-asset-bundles).
As far as I understand the process of building the grouped assets is either manually (unsing grunt or similary component) or by using the AssetControllers Console command.

Are you familary with Grouping Assets? Do you think this could also be done using your great yii2-asset-auto-compress extension? This would make things pretty easy (for me ;-)

Kind regards and thank you for your help
Andreas

RuntimeException : Unclosed regex pattern at position: 266184

Getting error like :

RuntimeException
Unclosed regex pattern at position: 266184

  1. in C:\xampp\htdocs\freemelroseheights_protected\vendor\tedivm\jshrink\src\JShrink\Minifier.php at line 525

  2. in C:\xampp\htdocs\freemelroseheights_protected\vendor\tedivm\jshrink\src\JShrink\Minifier.php at line 240 – JShrink\Minifier::saveRegex()

  3. in C:\xampp\htdocs\freemelroseheights_protected\vendor\tedivm\jshrink\src\JShrink\Minifier.php at line 144 – JShrink\Minifier::loop()
    .
    .
    .

Why Minify_CSS::minify and CssMin::minify

Hi,

if cssFileCompile is enabled, each file configured in the asset gets minified (using Minify_CSS::minify) at:
https://github.com/skeeks-semenov/yii2-assets-auto-compress/blob/master/src/AssetsAutoCompressComponent.php#L534

If cssFileCompress is enabled, it will get minified a few lines later again (using CssMin::minify):
https://github.com/skeeks-semenov/yii2-assets-auto-compress/blob/master/src/AssetsAutoCompressComponent.php#L568

I think complie should only concatenate the asset files into a single CSS file and it should compress this single CSS file only once and only if cssFileCompress is enabled.

What do you think?
Andreas

cssFileCompress issue with nested media query

Source css file contained

@media screen and (min-width: 992px) {
    .header-navigation li {
        display: inline-block;
        padding-top: 3px;
        padding-right: 3px;
        padding-left: 3px;
        text-align: center
    }
    .header-navigation li a {
        text-transform: none
    }
    @media screen and (-webkit-min-device-pixel-ratio: 0) {
        /* Safari and Chrome */
        .header-navigation li a {
            letter-spacing: 1px
        }
    }
    /* Only Chrome */
    @media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) {
        .header-navigation li a {
            letter-spacing: 2px
        }
    }
}
@media screen and (min-width: 1024px) {
...

which became (beautified)

@media screen and (min-width: 992px) {
    .header-navigation li {
        display: inline-block;
        padding-top: 3px;
        padding-right: 3px;
        padding-left: 3px;
        text-align: center
    }
    .header-navigation li a {
        text-transform: none
    }
    @media screen and (-webkit-min-device-pixel-ratio: 0) {
        .header-navigation li a {
            letter-spacing: 1px
        }
    }
    @media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) {
        .header-navigation li a {
            letter-spacing: 2px
        }
    }
    @media screen and (min-width: 1024px) {
    ...

Note that final closing curly bracket on "min-width: 992px" section is missing

tests not running when module is active

Hi, I am not able to run codeception tests when the module is active because calls to $I->amOnRoute(...) or $I->amOnPage(...) breaks with:

[yii\base\InvalidConfigException] Unable to determine the request URI.

CSS and JS caching is defeated by URL parameters

I found that because the compressed resources are suffixed by a '?v=' parameter that has the file creation time, effectively resource caching is defeated.

Why is this? The name of the file is already made of the MD5 of the file content, so why is there another parameter which is not really used anyway? I assume you tried to defeat the resource caching if the file was modified, but in that case, the MD5 would differ anyway. By adding an URL parameter, nothing gets cached at all.

If I am correct, it would suffice to just remove the code lines where the '?v=' is added.

on my remote server it gives me ssl issuer error

I got following error on remoter server which is implemented with ssl:
SSL certificate problem: unable to get local issuer certificate

I have checked the source of the page, it has minify the html but not concatenated the css and js files

what will be the cause of this issue

Not Working with Advanced

Hi,
When I applied this into advanced template for frontend it is not wokring. Browser loading continuously (like server goes into infinite loop)

Please Help

Требуется добавить опцию сортировки при генерации hash

Очень частая ситуация... система зависимостей загрузки бандлов в Yii, в зависимости от ситуации может менять очередность загрузки, из-за этого создаются новые дубликаты файлов... в реалности стоит добавить сортировку перед генерацией хеша, что бы получался всегда один и тот же результат

ЭТО ОПЦИОНАЛЬНО, так как в некоторых случаях это может давать нехороший результат!!!

Included uncompressed JS files reappearing with compressed file

Hello,

I have faced this problem with JS compression.
Even though all JS files are compressed, the original JS files get appended before it.
So I have done some modifications in code and it worked.

Changes are done in AssetAutoCompressComponent.php in _processingJsFiles() function
The new code is at line 362

if (file_exists($rootUrl))
{
$resultFiles = [];

        foreach ($files as $fileCode => $fileTag)
        {
            if (Url::isRelative($fileCode))
            {
            } else
            {
                if (!$this->jsFileRemouteCompile)
                {
                    $resultFiles[$fileCode] = $fileTag;
                }
            }
        }

        $publicUrl                  = $publicUrl . "?v=" . filemtime($rootUrl);
        $resultFiles[$publicUrl]    = Html::jsFile($publicUrl, $this->jsOptions);
        return $resultFiles;
    }

Kindly make changes in original repo.

missing cssOptions

I'm trying to pass

'cssOptions' => ['media' => 'none', 'onload' => 'media=\'all\'']

for the compressed css file but i'm unable to do that

so i would get

<link href="/marelin/public_html/assets/css-compress/01f2afb3b58a1c5381de41bcb1d365b8.css?v=1487767908" rel="stylesheet"  media="none" onload="media=&#039;all&#039;">

instead of

<link href="/marelin/public_html/assets/css-compress/01f2afb3b58a1c5381de41bcb1d365b8.css?v=1487767908" rel="stylesheet">

Javascript minifying is working only in first web load (just after assets folder is deleted)

Hi:
Weird behaviour. I have this config:

            'class' => '\skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
            'enabled' => true,
            'readFileTimeout' => 3000, //Time in seconds for reading each asset file
            
            'cssCompress' =>                    true, //Enable minification css in html code
            'cssFileCompile' =>                 true, //Turning association css files
            'cssFileRemouteCompile' =>          true, //Trying to get css files to which the specified path as the remote file, skchat him to her.
            'cssFileCompress' =>                false,  //Enable compression and processing before being stored in the css file
            'cssFileBottom' =>                  true, //Moving down the page css files
            'cssFileBottomLoadOnJs' =>          true, //Transfer css file down the page and uploading them using js
                
            'jsCompress' =>                     true, //Enable minification js in html code
            'jsCompressFlaggedComments' =>      true, //Cut comments during processing js
            'jsFileCompile' =>                  true, //Turning association js files
            'jsFileRemouteCompile' =>           true, //Trying to get a js files to which the specified path as the remote file, skchat him to her.
            'jsFileCompress' =>                 false, //Enable compression and processing js before saving a file
            'jsFileCompressFlaggedComments' =>  false, //Cut comments during processing js
            
            'htmlCompress' => true, //Enable compression html
            'htmlCompressOptions' => //options for compressing output result
            [
                'extra' => true, //use more compact algorithm
                'no-comments' => true, //cut all the html comments
            ],
  1. I start the test deleting my assets folder
  2. I load the page and I see that js-compress files are created and in the source code I see just one call to a big js (minified of all my original js)
  3. I reload the page and then I see my dozens of js loaded as minified would have not worked
  4. Just if I delete again the assets folder, then the minified version is created correctly

So, it's just working JUST AFTER deleting the assets folder ... if there's something already created in the folder, it will not minified.

I have tried with other configuration, even turning everything off and just turn on the jsCompress. Same behaviour

Thank you for any help!

yii2-assets-auto-compress not working; the compress css content is empty and js contains ;;;;;;;;;;;;;

my configuration is as follow:

'bootstrap'=>['assetsAutoCompress'],
'components' => [
'assetsAutoCompress' =>
[
'class'=>'skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
'enabled'=> true,
'jsCompress'=> true,
'cssFileCompile' => true,
'jsFileCompile' => true,
],]

I can see it is compiling all assets(jqueryAsset, YiiAsset, AppAsset,..) and bringing one js compressed file and one css compressed file. But the css compressed is empty(nothing inside) and the content of the js compressed file is :
;;;;;;;;;;;;;;;;;;;;;;;;;
which is making even the call of $.() to prompt error in consolog:

(index):899 Uncaught ReferenceError: jQuery is not defined(anonymous function) @ (index):899

Delete old cache files?

Hello,

Is there any particular reason, when we are generating new compressed files, that we don't clear the previous versions?

Thanks.

Class skeeks\yii2\assetsAuto\AssetsAutoCompressComponent does not exist

my configuration is as follow:

'bootstrap'=>['assetsAutoCompress'],
 'components' => [
        'assetsAutoCompress' =>
        [
            'class'=>'skeeks\yii2\assetsAuto\AssetsAutoCompressComponent',
            'enabled'=> true,
            'jsCompress'=> true,
            'cssFileCompile'    => true,
            'jsFileCompile'     => true,
        ],]

But when I run the website I am getting the error :

Class skeeks\yii2\assetsAuto\AssetsAutoCompressComponent does not exist

Where I am wrong?

Google: Eliminate render-blocking JavaScript and CSS in above-the-fold content

It is possible to leave the CSS in the tag <style>, instead of the file?

Error PageSpeed Insights
None of the above-the-fold content on your page could be rendered without waiting for the following resources to load. Try to defer or asynchronously load blocking resources, or inline the critical portions of those resources directly in the HTML.

Jquery Binding Events issue when jsFileCompile=true

This is a really good extension but i have an issue:

Whenever i set jsFileCompile to true and load some AJAX my js events doesn't' fire. E.G. Load page
Click button this fires:
$(document).on("click", ".showModalButton", function () {

After ajax has loaded i click the button again and the event doesn't fire

I also have an onSubmit event that should fire on a form that was loaded via ajax this event is not fired.

All the functions work fine without the combining file open.

Hope you can help!

Exclude files

There are some css and js files in the project that should not compress. I can't seem to find an option to exclude these files. Is there a way to do 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.