Giter Site home page Giter Site logo

microjs / microjs.com Goto Github PK

View Code? Open in Web Editor NEW
2.0K 78.0 621.0 5.92 MB

Fantastic Micro-Frameworks and Micro-Libraries for Fun and Profit!

Home Page: http://microjs.com/

License: MIT License

JavaScript 87.37% HTML 5.54% CSS 7.08%
micro microjs libraries search fun javascript micro-library

microjs.com's Introduction

Fantastic Micro-Frameworks and Micro-Libraries for Fun and Profit!

How much library code do you really need — 50K? 100K? 150K? More? How much of that do you really use?

Sure, we all love our favorite monolithic frameworks, and sometimes we even use them fully. But how often do we reach for the ride-on John Deere tractor with air conditioning and six-speaker sound system, when a judiciously applied pocketknife would do the trick better, faster, slicker?

Micro-frameworks are definitely the pocketknives of the JavaScript library world: short, sweet, to the point. And at 5k and under, micro-frameworks are very very portable. A micro-framework does one thing and one thing only — and does it well. No cruft, no featuritis, no feature creep, no excess anywhere.

MicroJS.com helps you discover the most compact-but-powerful microframeworks, and makes it easy for you to pick one that’ll work for you.

Submitting new libraries and frameworks

Want to add your own? Fork this site on GitHub, add your framework to "data.js" and submit a pull request.

Rules

  • Must not have dependencies (It's ok to target a specific platform, like Node.js or WebKit)
  • Must do something useful, and must not be just a demo
  • Must be MIT/BSD-license or similar permissive license
  • Templating engines and loaders will only be added if they're outstanding and exceptional
  • Must be < 5k when minified and gzipped (see below)
  • Source file must be available for download and not change across releases (e.g. awesomesauce-1.1.0.js)
  • Prefer hand-coded/hand-optimized JavaScript over generated/cross-compiled code

To check the minified and compressed size of your library from the command line, either use ./build.js -v (see below) or run:

$ uglifyjs yourlib.js | gzip -9f | wc -c

or

$ wget -q -O- https://domain.tld/path/to/file.src | uglifyjs | gzip -9f | wc -c

How to add

  • Add your library to "data.js", pick a random point in the file (this helps with merging many contributions) and enter the required attributes: 'name', 'tags', 'url', 'source'
  • The a 'url' should point to wherever you host your README or docs and where code is downloaded code-download
  • If the 'url' is not a GitHub address but your project is hosted there, add a 'github' field with your username & lib name, e.g. 'timrwood/moment' so the builder can collect GitHub stats
  • The 'source' attribute must point to a single-file, or an array of files that can be concatenated to form your complete library in a ready-to-use form. The 'source' must not be minified (see below)
  • Running make should work and not return an error. To run make, you'll need node installed

If your source very small, you can simply include the whole thing in the source attribute as a string. If your source is split across multiple files, you can use an array of URLs (it's preferrable to just have a single source). If your source is released in a ZIP file you can point to the ZIP's URL and append a !/zip/entry.js to the end so the compiler knows where to look (it's still preferable to just have a single source URL!)

Using make / build

The builder reads data.js and checks the source of each entry. It will calculate the raw, minified and gzipped sizes of the entries.

You will see warnings where entries need to be checked and errors where entries will be excluded.

If you wish to see details of all entries, you can run the ./build.js -v command.

Submitting a PR

  • Fork repository
  • Clone repository to your local machine
  • Add to data.js file the representative attributes listed above
  • NOTE add the new files somewhere other than the bottom to make PR merging less conflict-prone
  • Run npm install if you haven't already and npm test
  • If your added package comes up with a SUCCESS message you are good to go, submit the PR
  • To filter on only your package results run ./build.js -v | grep YOUR_PACKAGE_NAME

All rights reserved

Please note that MicroJS.com is a curated site and that we reserve the right to refuse any listing for any reason.

The microjs.com code/website is released under a MIT License.

microjs.com's People

Contributors

alpha123 avatar audiolion avatar avoidwork avatar bahamas10 avatar bemson avatar benbscholz avatar capmousse avatar chrisdavies avatar daniellmb avatar davidchambers avatar dciccale avatar ded avatar eko3alpha avatar fschaefer avatar gamtiq avatar getify avatar grossacasac avatar igorlima avatar jesseskinner avatar kbjr avatar lachlanhardy avatar madrobby avatar mathiasbynens avatar philbooth avatar pineapplemachine avatar rvagg avatar ryasmi avatar sbrl avatar simonwaldherr avatar skarukas 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

microjs.com's Issues

most projects using URL of "raw.github.com" seem to fail in make now

I think github's recent change from "raw.github.com" to "raw.githubusercontent.com" might be the reason why most of the make/build is failing with errors like "zero-length source". Perhaps a mass-update of all those kinds of URLs is in order? I tried a s/ find-n-replace on data.js just to see, and it fixed all of the zero-length errors as far as I can tell.

However, I'm still getting a ton of warnings like "GitHub says: Bad credentials", and it's unclear what's causing that message or how to fix it.

Click to show github-rendered readme

This is useful for getting an overview of a project.
It would also be nice to include the latest commit date; this helps to gauge a project's level of activity.

index.html CSS source

Just looking through the source of your index.html, surely you didn't write all those browser specific styles by hand? Would you care to share the source (eg. SASS, LESS) if such a thing exists?

The 'I need…' dropdown has become unwieldy

When the site only had a few items, the dropdown was really effective, but it's near useless now considering the length and wordiness of the dropdown.

Can we rethink that navigation? Perhaps a search/tagging system?

Is my library okay for microjs?

I love the project and I've been inspired by many of the hosted libraries here, so I created a jquery alternative:

Umbrella JS

It is under the required size (it's 2kb), however I think it's not completely within the guideliness of the project when it states this:

A micro-framework does one thing and one thing only — and does it well. No cruft, no featuritis, no feature creep, no excess anywhere.

An alternative for collection of small modules.

Eris is a project aimed at collecting small javaScript functions, modules or classes.

Instead of being a list of links, it's a repo containing actual js codes with rules of no duplication , full documentation, test required and single file only. Dependencies is also supported with a tool that scans your file to bundle what you really need into a single util.js file.

Since this project is no longer active, in my view, this might be an alternative for people who prefer to use small libs instead of big ones.

Tool Repo: https://github.com/liriliri/eustia
Module Repo: https://github.com/liriliri/eris

What's going on with microjs??

@madrobby what's up with the lack of merging new additions? If you are unable or unwilling to maintain this project, please delegate to other members of the community.

Search field breaking

By typing the word 'micro' in the search box the result section breaks, showing the script responsible.

error on make

Hi,
I just forked the repo and I did:

$ make deps
$ make compile

Dependencies installed correctly.

node version: v0.8.9

And I get tons of errors

ERROR:   ready.js             Uglify error: Cannot call method 'parse' of undefined
         https://github.com/thanpolas/ready.js/raw/master/lib/ready.js
ERROR:   server2.js           Uglify error: Cannot call method 'parse' of undefined
         https://github.com/thanpolas/server2js/raw/master/source/server2.js
ERROR:   doT.js               Uglify error: Cannot call method 'parse' of undefined
         https://github.com/olado/doT/raw/master/doT.js
ERROR:   Hammer.js            Uglify error: Cannot call method 'parse' of undefined
         https://raw.github.com/EightMedia/hammer.js/master/hammer.js
ERROR:   Qatrix               Uglify error: Cannot call method 'parse' of undefined
         http://qatrix.com/files/qatrix-0.9.4
ERROR:   big.js               Uglify error: Cannot call method 'parse' of undefined
         https://raw.github.com/MikeMcl/big.js/master/big.js
ERROR:   nwt                  Uglify error: Cannot call method 'parse' of undefined
         https://raw.github.com/nwtjs/nwt/master/nwt.js
ERROR:   hypo                 Uglify error: Cannot call method 'parse' of undefined
         https://raw.github.com/shiftyp/hypo/master/dist/hypo.src.js
ERROR:   Micro-Templating     Uglify error: Cannot call method 'parse' of undefined
         http://www.manning.com/resig/JavaScriptNinjaSourceCode.zip!/code/07/11.js
ERROR:   Artemia              Uglify error: Cannot call method 'parse' of undefined
         https://raw.github.com/k33g/artemia/master/js/artemia.js, https://raw.github.com/k33g/artemia/master/js/adaptors.plugins/artemia.storage.js, https://raw.github.com/k33g/artemia/master/js/adaptors.plugins/artemia.sqlite.storage.js
|===========================================================================>| 100%
All done and ready to deploy! (0 of 260 libs included)
Encountered 260 errors
make: *** [compile] Error 1

Any idea?

$dom doesn't do ajax

$dom is in the ajax category but it appears to have no xmlhttprequest functionality at all.

How are Github / Twitter stats calculated on the site?

e.g. compare:

http://microjs.com/#mithril

Shows 1 star and 0 twitter mentions

https://github.com/lhorie/mithril.js

This is the development repo that hosts the unminified file. It has 876 stars.

http://lhorie.github.io/mithril/

This is the documentation homepage. It has 259 twitter mentions

automatic size and other informations when github repository

Hi (sorry for my english i'm french)

it would be fine, when repository of a lib is a github repository, to add to data.js the user and the repository name

Then it would be possible to catch some information like :

master id branche (and other branches) : https://github.com/api/v2/json/repos/show/k33g/artemia/branches?callback=foo

and information about file like size or content : https://github.com/api/v2/json/blob/show/k33g/artemia/4775b548257bc49698bf909b7804e0aaf92715c4/js/minified/artemia.min.js?callback=foo

best regards
Philippe

Display GitHub watcher counts

This would make scanning through libraries a lot easier, so that you know who's using what. If this sounds like a useful feature, I can write up a patch and make a pull request.

Some errors with existing libraries

running make against the current HEAD (https://github.com/madrobby/microjs.com/tree/6c9370be904ec3e9c4b03a4ab140086d955273ee) shows:

ERROR:   detect-indent        Uglify error: Unexpected token: name (Found)
WARNING: Émile                Too old! Last pushed to GitHub @ 12/May/10, ignoring [2010-05-12T13:36:10Z] vs [undefined]
ERROR:   es6-shim             gzipped file too big, 7.3 kB is not "micro", ignoring
ERROR:   Platform.js          gzipped file too big, 5 kB is not "micro", ignoring
ERROR:   List.js              gzipped file too big, 5.1 kB is not "micro", ignoring
ERROR:   jvent.js             Uglify error: Unexpected token: name (Found)
ERROR:   MinifiedJS           gzipped file too big, 8.2 kB is not "micro", ignoring
WARNING: SVGEventListener     GitHub says: Not Found
WARNING: henka                GitHub says: Not Found

microjs.com site broken!

microjs.com is using this invalid viewport meta:

<meta name="viewport" content="width=device-width; initial-scale=0.45">

It's invalid because of the semicolon. There should be a comma.

Correct code:

<meta name="viewport" content="width=device-width, initial-scale=0.45">

data.js

Hello
micro.js seems not to load the file up to date data.js
(sorry for my english)
have a nice day

Not for jquery plugins?

I'm not the author of these, but the jqueryTOOLS (homepage) are micro jquery plugins that provide awesome UI and form enhancements.

but obviously this means they require jquery, which doesn't fit the micro-ness.

Why no dependencies?

The whole point of a module community is to be able to make modules from other modules, reducing the time it takes you to create your module, and increasing the robustness of all modules by reducing duplication in the community as a whole. This seems like its exactly what microjs.com is advocating - small libraries you can cobble together to create a lean system.

The problem is, disallowing people from using any dependencies means that the majority of microjs's modules will be reinventing some wheel they could otherwise be pulling in another module for. Even if you just use one single dependency, a library is disallowed from being a part of the registry here.

I propose that this requirement be removed. Since the modules have to be sub-5kb, that should be sufficient to keep these modules small and singularly-focused.

Adding library without node.js

Hi guys,

I've fork this project and change data.js adding my library.

I don't have node.js, it is required to send you my work? There is an alternative?

Sorting order?

Not an issue per se, but I'm curious to know whether there's a sorting criteria applied to the lists. If there isn't one, I could contribute it as a feature. Probably an option to sort by popularity, size, or some other criteria.

False positives

Apparently, the filtering functionality includes a text search in the project's description, which can lead to false positives:. For example, when selecting "I need... a class system", around 25% of the libraries are erroneously listed just because they have "class" somewhere on their description:

  • chronoman (Utility class to...)
  • decisiontrees (classifier tag)
  • jvent (Event Emitter Class ...)
  • Router.js (... Home js class ....)
  • Transparency.js (has to do with CSS class attributes)
  • mediahack.js (media-query classes to DOM nodes)
  • Mouse (... mouse as a first class citizen)
  • ClassIE (the name is a coincidence)
  • atom.js (smal class providing...)
  • Corner.js (CSS classes again)

I understand that this filter might be specially affected because "class" is such an overloaded word but I wonder if there isn't a way to make the filter more accurate.

Some libraries have outgrown the limit... (and some don't fit)

Specifically these, as per the website (sizes as of March 21):

  • Marked (5.1kb)
  • Backbone (7.3kb)
  • List.js (5.1kb)
  • Intro.js (5.6kb)
  • Platform.js (5.4kb)
  • Zepto (5.1kb)
  • Underscore (5.5kb)
  • Dom.js (5.3kb)
  • router5 (6.7kb)

Out of these, some I know do more than one thing:

  • Backbone is a framework, designed to fufill many use cases with numerous features.
  • Zepto is a partial drop-in jQuery replacement. It does quite a few things in its core build.
  • Underscore does several things, since it's a general purpose utility belt.

Maybe, some of these should be commented out/removed?

Feature request: A "strict" mode

There is a lot of contention in the community about the rules of microjs and the small amount of whitelisted "rule breaking" projects due to its manual curation. I propose a sort of "strict mode" that users can easily toggle on or off. This mode would hide projects with dependencies or that are over 5Kb. This allows microjs to have provide useful microlibraries to users, while also providing them similar libraries that logically don't belong.

I'd be happy to put together a Pull Request for this when I have a moment, if the response to this is favorable.

fix downloads from gh-pages sites

Underscore, Backbone, Modernizr, MinifiedJS all seem to suffer intermittently from this problem; build gets "zero-length source", as does a curl to the source url (but curl again and you get it!).

Show item's tags

It would be nice if each item had its own tags displayed - discovery of similar packages will become easier. Understanding what particular library is doing will also become easier since you can see what exactly it is capable of.

Feat. request: filter by browser support

Hi, apart from searching by feature I'd find very useful to filter libs based on their supported browsers as some libs are targeting specific browser engines and they may not mention that in their description.

No Testing Frameworks!

Sure I might have the potential to write a great app, but how do i know if works if I can't test it?!

http://www.microjs.com/

i could be the only one, but navigating to this url produces this output: "Apache is functioning normally"
:P

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.