{"id":21935369,"url":"https://github.com/zeecoder/clam","last_synced_at":"2026-04-29T20:09:24.872Z","repository":{"id":24035893,"uuid":"27420947","full_name":"ZeeCoder/clam","owner":"ZeeCoder","description":"[ABANDONED]  Clam is a frontend toolset. It provides CommonJS-style modules to help develop and organise frontend code. Modules developed with the use of Clam will be maintainable and extendable.","archived":false,"fork":false,"pushed_at":"2015-06-15T08:02:28.000Z","size":856,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-27T18:00:06.174Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"yinyanlun/wechat-spring-boot","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZeeCoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-02T07:40:00.000Z","updated_at":"2015-08-25T12:36:01.000Z","dependencies_parsed_at":"2022-07-07T20:31:08.634Z","dependency_job_id":null,"html_url":"https://github.com/ZeeCoder/clam","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeeCoder%2Fclam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeeCoder%2Fclam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeeCoder%2Fclam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZeeCoder%2Fclam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZeeCoder","download_url":"https://codeload.github.com/ZeeCoder/clam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244966462,"owners_count":20539794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T00:19:46.203Z","updated_at":"2026-04-29T20:09:24.845Z","avatar_url":"https://github.com/ZeeCoder.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Clam\n[![Project Status](http://stillmaintained.com/ZeeCoder/clam.png)](http://stillmaintained.com/ZeeCoder/clam)\n\n#####(0.4.0-alpha3)\n\n**The development of clam is stopped.**\n\nWe used it in several projects, and in most of them writing Clam-modules was a\ndelight. It never really took off hovewer, and I just had the feeling that\nsomething is not exactly right with the tool.\n\nMy main problem with Clam, is that it does a bit too much magic.\nSo in order to deal with that issue, I'm taking the good ideas from the project,\nand I will create several independent node modules out of them instead.\n\n**Clam's successor modules are:**\n\n - [Modifier](https://github.com/ZeeCoder/z-modifier)\n - [HookFinder](https://github.com/ZeeCoder/z-hook-finder)\n - [Namespacer](https://github.com/ZeeCoder/z-namespacer)\n - [container](https://github.com/ZeeCoder/z-container)\n - [dom-config](https://github.com/ZeeCoder/z-dom-config)\n\n---\n\n#####What is it?\n\nClam is a frontend toolset. It encourages organizing frontend widgets in\nCommonJS modules. These modules can then be instantiated once or multiple times\non a single page, depending on whether they are \"singleton\" on \"basic\" modules.\nModules developed with the use of Clam will be\n**maintainable** and **extendable**.\nThe main goal of the project is to help writing js modules in an organised\nmanner, while staying as simple and lightweight as possible.\n\nTo use clam, you'll have to learn some naming conventions - inspired by the\n[BEM](http://bem.info/) metodology -, and how to write CommonJS modules\nClam-style.\n\nTo get started, a demo application is available here:\n[Clam Demo](https://github.com/ZeeCoder/clam-demo).\n\n#####What it's not\n\nClam is not a frontend framework. It has nothing to do with \"views\" or \"models\"\nfor example. If you need them, implementing such features is up to you.\n\n#####A quick example\n\nSuppose we have a singleton module called \"popup\". Using it in an app.js file -\nwhich is processed by browserify - would look like this:\n\n```js\n// Getting the module\n// We assume that we have a \"clam_module\" directory which contains the\n// \"popup.js\" module.\nvar cutil = require('clam/core/util');\nvar popup = require('clam_module/popup');\n\n// Instantiating the module with the default configuration.\ncutil.createPrototypes(popup);\n\n// Note: By using the \"createPrototypes\" helper method, the created\n// prototype will be registered to the clam container, so other modules\n// can later access it by calling: \"clam_container.get('popup')\".\n```\n\nThen a popup open button in html could look like this:\n\n```js\n\u003cdiv class=\"jsm-popup__open-btn\" data-jsm-popup='{\"type\": \"contact\"}'\u003e\u003c/div\u003e\n```\n\nWhich would open the \"contact\" popup. (Depending on the implementation, the same\neffect could be achieved by calling the popup prototype's appropriate method,\nfor example: \"clam_container.get('popup').open('contact')\".)\n\n#####Installation\n\nInstallation is done via [Bower](http://bower.io/).\n\n```\nbower install clam --save-dev\n```\n\n#####Building\n\nFor the building process - from the \"raw\" clam modules and scss files -, Gulp\nand Browserify are the preferred tools. The clam demo is a working example for\nthis.\n\n#####JSDoc\n\nJSDoc generated documentation can be found under the jsdoc/ folder.\n\nGeneration is done via the `jsdoc core/ -r -d jsdoc` command from the root.\n\n#####Full documentation (Work in progress)\n\n- [Naming conventions](docs/naming_conventions.md)\n- [The Clam module](docs/the_clam_module.md)\n- [Events And Promises](docs/events_and_promises.md)\n- [Best Practices](docs/best_practices.md)\n- [The Modifier Module](docs/modifier_module.md)\n\n#####Disclaimer\nAlthough Clam is very lightweight, performance is not guaranteed for big\napplications.\nFor example: if you have to make a single-page application, that is expected to\nperform well under extensive use by the user over a long period of time without\nreloading, please check the project's source code first, before you start using\nthese modules to decide whether it suits your needs.\n\nThe main focus of this project is to speed up development by the reuse of\nclam-style modules.\n\nHaving said all the above, if you are used to optimizing javascript code, I\nwould be more than happy to accept pull requests, if that solves issues stopping\nyou from using Clam. :)\n\n#####License\nReleased under the [MIT](LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeecoder%2Fclam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeecoder%2Fclam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeecoder%2Fclam/lists"}