{"id":18739043,"url":"https://github.com/gaubee/dotnar_base","last_synced_at":"2025-11-18T12:30:15.035Z","repository":{"id":35587604,"uuid":"39860352","full_name":"Gaubee/dotnar_base","owner":"Gaubee","description":"新版Dotnar的前端框架，具有远瞻性的构架方案","archived":false,"fork":false,"pushed_at":"2015-09-23T19:34:18.000Z","size":1522,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-28T17:44:52.523Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gaubee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-28T22:14:19.000Z","updated_at":"2021-12-18T09:35:08.000Z","dependencies_parsed_at":"2022-09-02T12:41:44.800Z","dependency_job_id":null,"html_url":"https://github.com/Gaubee/dotnar_base","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaubee%2Fdotnar_base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaubee%2Fdotnar_base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaubee%2Fdotnar_base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaubee%2Fdotnar_base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gaubee","download_url":"https://codeload.github.com/Gaubee/dotnar_base/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239616409,"owners_count":19669045,"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-07T15:32:32.030Z","updated_at":"2025-11-18T12:30:14.988Z","avatar_url":"https://github.com/Gaubee.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 点纳微站开发工具包\n\n## 实现介绍\n与旧版的前端开发框架类似，通用库都在[lib.dotnar.com](http://lib.dotnar.com)来加载从而实现共享资源与缓存。\n\n不同的是，加载器我们依旧使用了requirejs。并且将版本更新提高到框架级别，意味着这些将自动化实现。\n\n还有还是用jQuery，而不是Zepto什么的，别问我为什么，有缓存系统就是任性。\n\n另外，常用的方法，比如coAjax、QueryString、eventManager等都已经暴露到全局无需require直接使用。\n\n## API\n\n### 文件变量\n* __pathname__ 文件相对于项目根目录的路径\n* __filename__ 文件全名\n* __extname__ 文件后缀名\n* __basename__ 文件名，无后缀\n* __dotnar_lib_base_url__ 公用lib域\n* __location_origin_url__ 当前域\n对于 `__dotnar_lib_base_url__`、 `__location_origin_url__` 在CSS中的用法是：不要再CSS中写相对地址，我们采用了编译的方案对待CSS，所以提供了这些变量让你使用绝对地址\n\n### Path\n#### Path.on(pathname, handle)\n注册一个事件，根据URL-pathname进行触发\n\n#### Path.once(pathname, handle)\n一次性事件\n\n\u003e 这里事件注册的pathname是可以转义成正则进行匹配的。比如`*`，在比如`user/:page`，这里page参数可以在handle函数中用`this.params.page来取出`。\n\u003e pathname也可以是数组，从而进行更广的匹配；\n\n#### Path.emit(pathname[, args])\n直接根据事件名触发事件，这里emit一般交由系统触发，开发者无需使用\n\n#### Path.jump(href)\n跳转，如果支持History Api，会使用Ajax实现页面的加载与渲染\n\n#### Path.getQuery(key)\n解析并获取location.search中的数据\n\n#### Path.setQuery(key[, value])\n改变或者删除location.search中的数据，并使用`Path.jump`进行跳转\n\n### QueryString\n```js\nqs = QueryString();\nqs.set(\"id\", \"1\");\nqs.get(\"id\"); //1\nqs.toString(); //\"http://d1.dev-dotnar.com?id=1\"\n```\n但如果你要支持操作location上的参数，请使用`Path.setQuery/getQuery`。\n\n### eventManager\n以下接口请根据名字断章取义即可知道用途\n\n#### eventManager.is\n\n#### eventManager.on\n\n#### eventManager.off\n\n#### eventManager.once\n\n#### eventManager.emit\n\n#### eventManager.reject\n\n#### eventManager.clear\n\n### coAjax\n这个模块基础的就是GET、POST、PUT、DELETE四种方法，如果你需要使用HTML5的API：`progress`，请这样用：\n```js\ncoAjax.get(url, cb).on(\"progress\",fun);\n```\n\n### confirm / alert\n对话框模块已经被重写成可兼容异步的回调模式，如果你需要使用原生写法，他们已经被改名为：`native_alert/native_confirm`。\n\n#### alert( [type ,] alert_str)\n\n#### confirm(str [, true_cb [, false_cb]])\n\n### PageLoading\n这个模块是两个全局函数，用于显示或隐藏最高层级的Loading动画\n\n#### openPageLoading\n#### closePageLoading\n\n## jSouperHandle\n这个模块是基于前端模板框架做的拓展指令\n\n### #Time(data_time, format)\n一个用于格式化时间的指令。比如：\n```html\n{{#Time \"2015-11-11\",\" LT\"}}\n\u003c!-- 输出：“3个月内 凌晨12点00” --\u003e\n```\nformat的详细用法，查看(Moment.js)[http://momentjs.com/]\n\n### #Time_MH(time)\n用于格式化`小时：分钟`，比如：\n```html\n{{#Time_MH \"0009:0\"}}\n\u003c!-- 输出：“9:00” --\u003e\n```\n\n### #Fixed(number, fixed_num)\n用于格式化数据，比如：\n```html\n{{#Fixed 0.1111, 2}}\n\u003c!-- 输出：“0.11” --\u003e\n```\n\n### #Int(number)\n用于格式化数据，比如：\n```html\n{{#Int 1.1}}\n\u003c!-- 输出：“1” --\u003e\n{{#Int \"0xf\"}}\n\u003c!-- 输出：“15” --\u003e\n```\n\n### setTitle\n用于改变当前页面的document.title的值，效果等同于：`document.title = \"title\";`，比如：\n这个指令是为通过异步加载而来的页面无法在HTML上声明title而创建的。\n```html\n{{setTitle $Cache.my_title||\"呵呵\"}}\n\u003cscript type=\"text/vm\"\u003e\n\tfunction vm () {\n\t\tsetInterval(function () {\n\t\t\tApp.set(\"$Cache.my_title\", String(new Date))\n\t\t}, 1000)\n\t}\n\u003c/script\u003e\n```\n注意：每个setTitle在不同的页面中都是独立运作的，当页面发送改变，App.set不会再改变document.title。而是交由现在这个页面的setTitle指令来管理\n\n### useCss(css_link_src)\n用于动态加载CSS文件，类似link标签，但是加载来的文件会通过编译。\n和link标签一样，你可以通过改变`css_link_src`来移除和添加样式文件，在页面发送跳转后，样式也会自动移除，不会在多个页面中造成冲突。\n```html\n{{useCss $Cache.my_css||\"css/test1.css\"}}\n\u003cscript type=\"text/vm\"\u003e\n\tfunction vm () {\n\t\ti = 0;\n\t\tsetInterval(function () {\n\t\t\ti += 1;\n\t\t\tApp.set(\"$Cache.my_css\", i % 2 ? \"css/test1.css\": \"css/test2.css\")\n\t\t}, 1000)\n\t}\n\u003c/script\u003e\n```\n\n## jSouperCustomTag\n这个模块是基于前端模板框架做的拓展标签库\n\n### href[to = ajax_page]\n这是一个类似`a`标签的标签，但是他的跳转是基于HTML5-HISTORY-API的跳转，已经实现了一整套的封装，和重载跳转的效果无异，但是速度提供了更好的体验。\n```html\n\u003chref to=\"main.html\"\u003e首页\u003c/href\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaubee%2Fdotnar_base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaubee%2Fdotnar_base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaubee%2Fdotnar_base/lists"}