{"id":19916886,"url":"https://github.com/rubylouvre/mass-framework","last_synced_at":"2025-05-16T18:05:52.203Z","repository":{"id":1854651,"uuid":"2779426","full_name":"RubyLouvre/mass-Framework","owner":"RubyLouvre","description":"一个模块化，面向大规模开发的javascript框架","archived":false,"fork":false,"pushed_at":"2020-04-11T09:37:35.000Z","size":37417,"stargazers_count":656,"open_issues_count":23,"forks_count":544,"subscribers_count":108,"default_branch":"master","last_synced_at":"2024-04-14T19:15:16.645Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"DevMountain/mongodb-practice","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RubyLouvre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-11-15T10:54:26.000Z","updated_at":"2024-04-08T00:13:33.000Z","dependencies_parsed_at":"2022-08-20T12:10:10.737Z","dependency_job_id":null,"html_url":"https://github.com/RubyLouvre/mass-Framework","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/RubyLouvre%2Fmass-Framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyLouvre%2Fmass-Framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyLouvre%2Fmass-Framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RubyLouvre%2Fmass-Framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RubyLouvre","download_url":"https://codeload.github.com/RubyLouvre/mass-Framework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248598287,"owners_count":21131066,"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-12T21:47:55.465Z","updated_at":"2025-04-12T16:39:56.460Z","avatar_url":"https://github.com/RubyLouvre.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"mass Framework\n==================\n\u003ch3\u003emass Framework的贡献者列表(排名不分先后)：\u003c/h3\u003e\n\u003cp\u003eabcd(1群) ,Alucelx(1群)， \u003ca href=\"http://stylechen.com/\"\u003e带刀\u003c/a\u003e(1群)，sapjax(2群) ,教主Franky(2群), 一三一四君(2B群), \u003ca href=\"https://github.com/riophae\"\u003eriophae\u003c/a\u003e,\u003cbr/\u003e\n    soom(5群),Hodor(5群)，小叶(3群，904591031)\n\u003c/p\u003e\n\u003chr/\u003e\n\u003cp\u003e一个模块化，以大模块开发为目标，jQuery式的框架。里面优先应用了大量HTML5新API，估计除了个别手机专属框架外，没有像它如此大范围应用了。这一来可以大大减少框架的体积，二来大幅提高运行效率。\u003cp\u003e\n\u003cp\u003emass Framework的模块化经过一年化调整与改良，大致分为四类：\u003c/p\u003e\n\u003col\u003e\n    \u003cli\u003e种子模块， mass.js，最精简的内核， 包含模块加载系统。\u003c/li\u003e\n    \u003cli\u003e补丁模块， lang_fix.js, css_fix.js, event_fix.js, node_fix.js, attr_fix, ajax_fix, 主要是用于兼容IE678的，在chrome1+, FF4+, opera10+, safari4+是不会加载它们的。\u003c/li\u003e\n    \u003cli\u003e核心模块， 所有位于根目录下，但不在其子目录下的JS文件， 提供框架的核心功能。\u003c/li\u003e\n    \u003cli\u003e外围模块， 位于more的JS文件。\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr/\u003e\n\u003ch3\u003emass Framework的源码阅读顺序\u003c/h3\u003e\n\u003cp\u003e都是位于src目录下，里面的子目录是外围模块。\u003c/p\u003e\n\u003cp\u003emass.js -\u003e lang.js(lang_fix.js) -\u003e  class.js -\u003e flow.js -\u003e data.js -\u003e support.js -\u003e query.js -\u003e\u003cbr/\u003e\n    node.js(node_fix.js) -\u003e css.js(css_fix.js) -\u003e attr.js(attr_fix.js) -\u003e event.js(event_fix.js) -\u003e fx.js -\u003e ajax.js(ajax_fix.js)\n\u003c/p\u003e\n\u003cp\u003elang, class, flow, data专注于语言层面，query, node, css, attr, event, fx, ajax专注于DOM层面。\u003c/p\u003e\n\u003chr/\u003e\n\u003ch3\u003emass Framework的文档：\u003c/h3\u003e\n\u003cp\u003e它大部分文档已经转移到newland.js项目之下，我们可以在\u003ca href=\"http://rubylouvre.github.com/doc/index.html\"\u003e这里\u003c/a\u003e访问得到它！\u003c/p\u003e\n\u003ch3\u003emass Framework的优点：\u003c/h3\u003e\n\u003col\u003e\n    \u003cli\u003e多库共存。\u003c/li\u003e\n    \u003cli\u003e多版本共存。\u003c/li\u003e\n    \u003cli\u003e高度模块化，使用AMD规范的加载系统，实现并行加载，按需加载，自行处理依赖，有利于调试与最小化资源调度。(目前版本为v21)\u003c/li\u003e\n    \u003cli\u003eflow提供自定义事件机制，$.Observer是一般化的观察者模块，\u003c/br/\u003e\n\t$.Flow, 是其强化版， 专注于流程控制与从多处获取数据，解耦回调嵌套，减少等待时间，实现多路监听，一处归化;\u003cbr/\u003e\n    \u003c/li\u003e\n    \u003cli\u003e强大的类工厂。（目前版本为v11）\u003c/li\u003e\n    \u003cli\u003eAS3式的补帧动画系统，支持回放，旋转，暂停！\u003c/li\u003e\n    \u003cli\u003e第五代选择器引擎Icarus，全面兼容CSS3高级伪类与jQuery自定义伪类的。\u003c/li\u003e\n    \u003cli\u003e与jQuery完全兼容的事件系统，强大的事件系统机制能轻松处理动态添加的节点的事件监听问题，此外还内置对滚轮事件的支持。\u003c/li\u003e\n    \u003cli\u003elang_fix模块已经为您修复了旧式IE的语言BUG，与添加上ECMA262v5的绝对大多数新API的支持与，因此痛快使用 String.prototype.trim,\n        Array.prototype.forEach, Array.prototype.map,Array.prototype.filter, Array.prototype.reduce,\n        Function.prototype.bind吧。\u003c/li\u003e\n     \u003cli\u003eajax模块支持XMLHTTPRequest2.0绝对大多数功能，能在旧式IE下上传下载二进制数据。\u003c/li\u003e\n    \u003cli\u003elang模块的提供语言链对象相当于把underscore.js这个库整合进来，你能想到语言扩展都有了。\u003c/li\u003e\n    \u003cli\u003eAPI 95%与jQuery神似，学习成本极低。\u003c/li\u003e\n    \u003cli\u003e全中文注释与大量参考链接与版本变更日志，绝对对你提高JS水平的好教程。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e框架的使用：\u003c/h3\u003e\n\u003cp style=\"color:red; font-weight: bold;\"\u003e点击上面的ZIP按钮将框架下载回来，解压，运行里面的Sws.exe服务器。\u003c/p\u003e\n\u003cp\u003e一个简单的例子\u003c/p\u003e\n\u003cpre\u003e\nrequire(\"ready,node\",function(){\n/*待到domReady完成，执行回调*/\n   $.log(\"将日志打印到页面上\",true)\n})\n\u003c/pre\u003e\n\u003cp\u003e上面的代码相当于：\u003c/p\u003e\n\u003cpre\u003e\nrequire(\"ready,node\",function(){\n/*待到domReady完成，并且在node.js模块加载完毕，执行回调*/\n   $(\"\u0026lt;pre\u0026gt;将日志打印到页面上\u0026lt;/pre\u0026gt;\").appendTo(\"body\")\n})\n\u003c/pre\u003e\n\u003cp\u003e我们在请求node.js时，会自动加载其依赖，如lang.js,support.js,class.js,query.js,data.js等等，\n    IE下还会加载lang_fix.js，但你无需理会它是怎么处理，只需专注于你的业务逻辑就行了。\u003c/p\u003e\n\u003cp\u003e如果嫌麻烦，直接像jQuery那样，不过会把许多无用的部分都加载下来了。\u003c/p\u003e\n\u003cpre style=\"color:red\"\u003e\n\n$(function(){\n  $(\"\u0026lt;pre\u0026gt;将日志打印到页面上\u0026lt;/pre\u0026gt;\").appendTo(\"body\")\n});\n\u003c/pre\u003e\n\u003cp\u003ejQuery1.7最新的API它也支持了\u003c/p\u003e\n\u003cpre\u003e\n$(function(){\n $(\"#dataTable tbody tr\").on(\"click\", function(event){\n\talert($(this).text());\n });\n});\n\u003c/pre\u003e\n\n\u003cp\u003e相比于jQuery只限于DOM的操作，mass Framework对基本数据类型提供了大量的工具方法，甚至连es6的候选方法你都能找到。它们分别挂在$.String, $.Array, $.Number, $.Object之下。\n\n\u003ch3\u003e多库共存\u003c/h3\u003e\n\u003cpre\u003e\n\u0026lt;!DOCTYPE html\u0026gt;\n\u0026lt;html lang=\"en\"\u0026gt;\n    \u0026lt;head\u0026gt;\n        \u0026lt;meta charset=\"utf-8\"/\u0026gt;\n        \u0026lt;title\u0026gt;多库共存\u0026lt;/title\u0026gt;\n        \u0026lt;script\u0026gt;\n            var $ = {\n                toString:function(){\n                    return \"[object jQuery]\"\n                }\n            };//假设这是已存在的库\n        \u0026lt;/script\u0026gt;\n        \u0026lt;script type=\"text/javascript\" src=\"../mass.js\" charset=\"UTF-8\"\u0026gt;\u0026lt;/script\u0026gt;\n        \u0026lt;script\u0026gt;\n            //mass的命名空间将自动改为$+它当前的版本号\n            $1.require(\"lang\",function(){\n                $1.log($+\"\")//[object jQuery]\n            })\n\n        \u0026lt;/script\u0026gt;\n    \u0026lt;/head\u0026gt;\n    \u0026lt;body\u0026gt;\n    \u0026lt;/body\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/pre\u003e\n\u003cpre\u003e\n写个框架，将自己过往的积累都沉淀下来，等到回头去看时，发现之前攻克的每一个知识点，都乖巧地排在框架里，\n在你需要的时候，可以快速派上用场。这种感觉就像在组织自己的军团一样，军团中有驯服得很好的，也有个性还很浮躁的刺儿头。\n你慢慢将这支军团由一盘散沙驯练成精锐部队，这感觉真好。\n                                                     ——真阿当\n\t以前的程序员们，经常会为了做一个数据处理程序而自己开发一门编程语言。\n\t比如Charls Moore在美国国家天文台，做射电望远镜数据提取程序，开发了Forth。有的为了给自己写的书排版漂亮些，\n\t写了TeX。近的说，有人为了做网站写了Rails 和 Django。想想都不好意思称自己是程序员了。\t\t\t\t\t\t\t\t\t\t\t\t \n\u003c/pre\u003e\n\u003ch3\u003eJS文件的合并\u003c/h3\u003e\n\u003cp\u003e使用combo.js\u003c/p\u003e\n\u003cpre\u003e\nnode.exe combo\n\u003c/pre\u003e\n\n\u003ch3\u003eJS文件的压缩\u003c/h3\u003e\n\u003cp\u003e使用compiler.jar( GCC，需要有JAVA运行环境)\u003c/p\u003e\n\u003cpre\u003e\njava -jar compiler.jar --js mass_merge.js --js_output_file mass_min.js\njava -jar compiler.jar --js avalon.js --js_output_file avalon_min.js\n\u003c/pre\u003e\n\n\u003ch3\u003eBUG提交与插件的友情贡献。\u003c/h3\u003e\n\n\u003cp\u003e大家在github注册后，就可以在\u003ca href=\"https://github.com/RubyLouvre/mass-Framework/issues\"\u003ehttps://github.com/RubyLouvre/mass-Framework/issues\u003c/a\u003e里面提交建议或BUG什么了。\u003c/p\u003e\n\u003cp\u003e如果是想贡献力量，可以点击最上面的Fork按钮，拷贝一份作为自己的版本，然后在里面修改代码，添加插件，写完后通知我，好让我合并到主干上。\u003c/p\u003e\n\n\u003cp\u003eby 司徒正美 （zhongqincheng）\u003c/p\u003e\n\u003cp\u003e2011.11.15\u003c/p\u003e\n\u003ca href=\"http://www.cnblogs.com/rubylouvre/\"\u003ehttp://www.cnblogs.com/rubylouvre/\u003c/a\u003e\n\u003ch1\u003e如何贡献自己的力量\u003c/h1\u003e\n\u003cp\u003e首先你总得有\u003cstrong\u003e自己的github帐号\u003c/strong\u003e吧，注册一个，非常简单，只需用户名，邮箱，密码，邮箱只是用来找回密码的，不做验证。因此注册后立即能用！比如我现在新注册一个叫JsLouvre的示范帐号。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/1.jpg\"/\u003e\n\u003cp\u003e然后搜索我的项目——mass Framework\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/2.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/3.jpg\"/\u003e\n\u003cp\u003e第一个就是，点击进入项目，然后点上方的Fork按钮，这就拷贝一份我的项目的副本作为\u003cstrong\u003e你自己的项目\u003c/strong\u003e\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/4.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/5.jpg\"/\u003e\n\u003cp\u003e创建成功！\u003c/P\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/6.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/7.jpg\"/\u003e\n\u003cp\u003e接着就是修改代码了，这要在自己发现真的存在漏洞或有什么改进之处才要动手啊！不能想改就改。要通读你要改的那一部分，必要时通读全框架。因此新手们最好找国内高手的框架进行学习，\n    一来中文注释比较亲切，二来也方便接下来的交流。通常我们在clone git到本地进行修改的，这又涉及另外一些工具与命令的学习。不过，github完全允许你在线上进行修改，提交，合并。\u003c/p\u003e\n\u003cp\u003e比如你发现data模块的注释与mass模块的不一样，要统一合并，将函数外的注释移到里头。（更有意义的方式是，打开\u003ca href=\"http://www.jshint.com/\"\u003ehttp://www.jshint.com/\u003c/a\u003e，就能发现许多小问题。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/8.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/9.jpg\"/\u003e\n\u003cp\u003e变成编辑状态，不过不太好用。大家有条件一定要学学如何使用TortoiseGit或Sublime Text 2下载github项目到本地，进行修改，提交，pull request啊！\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/10.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/11.jpg\"/\u003e\n\u003cp\u003e请认真写下你的修改日志，方便原框架作者查阅。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/12.jpg\"/\u003e\n\u003cp\u003e修改成功后的样子：\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/13.jpg\"/\u003e\n\u003cp\u003e接着下来一步非常重要，就是提交你的修改给原作者。点击上方的pull request按钮！\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/14.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/15.jpg\"/\u003e\n\u003cp\u003e红色区域为原作者的项目，你要贡献的目标；亮蓝色区域为你的项目；黑色处填写标题与必须描述；点击右下方绿区域的按扭进行提交！\u003c/p\u003e\n\u003chr/\u003e\n\u003chr/\u003e\n\u003cp\u003e接着下来就是框架作者的事儿了，我会在自己的项目看到你们的提交。万一以后你们有幸被别人贡献代码，也做这活儿。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/16.jpg\"/\u003e\n\u003cp\u003e点击中间那个大大的pull request(2)的按钮到另一页面，中间有个被鲜绿色高亮的merge pull request按钮。作者查看你的修改，觉得可以就点它进行合并。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/17.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/18.jpg\"/\u003e\n\u003cp\u003e最后你们就会在原项目上看到自己贡献的代码！\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/19.jpg\"/\u003e\n\u003chr/\u003e\n\u003ch1\u003e如何让自己的项目与原作者的项目保持同步！\u003c/h1\u003e\n\u003cp\u003e我经常看到许多人，只会fork一次，提交过一次修改就不知怎么办了！因此原框架作者是非常勤奋的，一天会提交N次，一个星期后许多文件都改动过了，而那些代码贡献者不可能一个个跟着修改。\n因此我们还是用到上方的pull request按钮。\n\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/20.jpg\"/\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/21.jpg\"/\u003e\n\u003cp\u003e这次是把自己的项目放到左边，原框架作者放到右边，在选择过程中，你会发现原框架作者有许多贡献者的。这里我希望大家一定要浏览\u003cem\u003eCommits与Files Changed\u003c/em\u003e进行学习!这也是github最大的价值所在！把握别人对代码的改进，最能提高我们编码水平。这里面会涉及大量的编码技巧！\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/22.jpg\"/\u003e\n\u003cp\u003e补上必要说明，然后点击下方send pull request按钮。\u003c/p\u003e\n\u003cp\u003e很快你就看到评论区最下方有个鲜绿色高亮的按钮，继续点就是。\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/23.jpg\"/\u003e\n\u003cp\u003e继续让你确认，没问题就继续点！\u003c/p\u003e\n\u003cimg src=\"https://raw.github.com/RubyLouvre/mass-Framework/master/course/24.jpg\"/\u003e\n\u003cp\u003e这样就同步成功！！！！！！\u003c/p\u003e\n\u003c/fieldset\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubylouvre%2Fmass-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubylouvre%2Fmass-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubylouvre%2Fmass-framework/lists"}