{"id":13672334,"url":"https://github.com/o2team/athena-component","last_synced_at":"2025-08-03T13:10:49.240Z","repository":{"id":76125103,"uuid":"58360354","full_name":"o2team/athena-component","owner":"o2team","description":"athena组件平台，提供组件上传、预览、拉取","archived":false,"fork":false,"pushed_at":"2018-06-19T13:21:43.000Z","size":1086,"stargazers_count":19,"open_issues_count":0,"forks_count":4,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-03T09:11:56.771Z","etag":null,"topics":["athena","koa2","leancloud","phantomjs","vue-webpack","vue2","webpack2"],"latest_commit_sha":null,"homepage":"http://acp.aotu.io/#/list","language":null,"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/o2team.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-05-09T08:20:09.000Z","updated_at":"2022-05-01T02:38:23.000Z","dependencies_parsed_at":"2023-02-25T05:30:31.442Z","dependency_job_id":null,"html_url":"https://github.com/o2team/athena-component","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2team%2Fathena-component","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2team%2Fathena-component/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2team%2Fathena-component/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o2team%2Fathena-component/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/o2team","download_url":"https://codeload.github.com/o2team/athena-component/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224087245,"owners_count":17253522,"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":["athena","koa2","leancloud","phantomjs","vue-webpack","vue2","webpack2"],"created_at":"2024-08-02T09:01:32.579Z","updated_at":"2024-11-11T10:30:38.799Z","avatar_url":"https://github.com/o2team.png","language":null,"readme":"# Athena 组件平台\n\n集合组件上传、组件拉取、和组件预览功能。\n\n2017-06-26：项目数据已从 Leancloud 迁移至 Quark，组件文件也改为存储在 Quark，而不再存在文件系统中（当然编译及预览文件依然会存在文件系统）\n\n* * *\n\n\u003e Athena之父增加了本地的单组件编译功能，所以组件平台的编译将进行最大幅度的精简，且要解决一些稳定使用之后暴露出来的问题，而且，在文哥带领下经历过一轮漫长又艰巨的Vue+Vuex+Webpack业务实践之后，更加感受到组件平台古老的代码方式该有点改变了……敬请期待\n\n\u003e AC要用上VUEX了，马上进入电气时代\n\n* * *\n\n## 技术组成\n\n- 前端 vue + vuex\n- 后端 koa2 + phantomJS\n- 数据存储 ~~Leancloud~~ Quark (凹凸实验室出品的 BaaS 产品)\n\n## 特色功能\n\n- 后台自动截图预览\n- 多态编译\n\n## 前端页面展示\n\n![site-capture](_capture/site-capture3.png)\n\n## 部署指引\n\n- 安装 NodeJS 6.x\n- 安装 phantomJS（\u003e=2.1.1）\n- [数据初始化指引](#数据初始化指引)\n\n截图可能会出现截图里文字不见了的情况，因为——系统没有页面用到的字体，解决：\n\n- 在centos中执行：yum install bitmap-fonts bitmap-fonts-cjk\n- 在ubuntu中执行：sudo apt-get install xfonts-wqy\n- 安装字体 `STHeiti-Light.ttc` 和 `STHeiti-Medium.ttc`\n\n``` bash\ngit clone https://github.com/o2team/athena-component.git\n\ncd athena-component\nnpm install\nnode install\n\ncd app\nnpm install\nnpm run build\n\ncd ../\nnpm start\n```\n\n### 前端 ./app\n\n- 前端配置：`./src/app.js`\n- 前端开发：`npm run dev`\n- 前端编译：`npm run build`\n\n### 后端\n\n- 后端配置：`./config/*`\n- 后端开发：`npm run dev`\n- 后端部署：`npm start`\n- 工具\n  - none\n\n### 凹凸手册\n\n- ssh -i ~/.ssh/QCloud_O2 aotu@xxx.xx.xxx.xxx（chmod  600  QCloud_O2）\n- ~/wwwroot/acp.aotu.io\n- git pull\n- pm2 restart xxx\n\n## API\n\n``` js\nrouter.post('/api/push', upload.single('widget'), api.push)\nrouter.get('/api/pull/:id/:rename?', api.pull)\nrouter.get('/api/down/:id/:rename?', api.down)\nrouter.get('/api/business/list', api.business.list)\nrouter.get('/api/classify/list', api.classify.list)\nrouter.get('/api/widget/query', api.widget.query)\nrouter.get('/api/widget/count', api.widget.count)\nrouter.get('/api/widget/detail/:id', api.widget.detail)\nrouter.get('/api/widget/info/:id', api.widget.info)\nrouter.get('/api/account/list', api.account.list)\nrouter.get('/api/account/add', api.account.add)\n```\n\n## 数据初始化指引\n\n字段如无指定，默认类型为 `String`\n\n- _Role，添加一角色 `admin`\n- _User，添加一用户 `admin` 并关联至 _Role admin\n  - username\n  - password\n- Business，创建（限制写入）\n  - !name\n- Classify，创建（限制写入），固定数据 = 标题+标签+选项卡+坑位+商品列表+挂件+优惠券+时间轴+其他\n  - !name\n- Widget，创建（无限制），限制 _Role admin: delete\n  - oid 原Leancloud的id\n  - stamp ms 组件更新时间戳，不等同updatedAt，用于覆盖上传组件时比对更新时间戳\n  - package\n  - !name\n  - !author\n  - business (Pointer -\u003e Business)\n  - classify (Pointer -\u003e Classify)\n  - !platform (0 = h5 | 1 = pc)\n  - !pullTimes (Number default 0)\n  - state (Number default 0) 状态，0=正常 1=已删除\n  - appId\n  - moduleId\n- Account，创建（限制写入），赋予 _Role admin: create, delete, update\n  - !name\n\n## 上传组件规范\n\n（待确认）\n\n- 全部或部分：\n  - 1个 images 文件夹 + N个图片文件\n  - 1个 HTML 文件\n  - 1个 CSS / SCSS 文件，如同时存在，SCSS 优先，CSS 被忽略，目前只支持预处理器 `SCSS`\n  - 1个 Javascript 文件\n  - 1个 JSON 配置文件（必需）\n  - 1个 capture.png 截图文件（可选）\n- 不包含外层文件夹，无组件依赖\n- 除图片文件，所有文件名跟组件名一致\n- 组件命名务必要有一定的复杂度，避免跟CSS关键字、JS关键字、HTML标签相同，因为组件的重命名为纯粹的字符串替换\n- 配置文件 `data` 字段填写编译组件的必要参数\n- 配置文件 `dataList` 字段为多态服务，比 `data` 优先，必须是一个数组，数组子项就相当于一个 `data`\n\n## Athena 平台迭代\n\n饿~饿~饿\n\n- 组件上传选择 `业务` 和 `分类`\n- 组件上传分析SASS依赖，编译SASS\n- 组件下载安置SASS依赖\n- 组件重命名\n- autoprefix\n\n\n## 其他\n\nSyntaxHighlighter 自定义编译\n \n``` bash\ngulp setup-project\ngulp build --brushes=css,javascript,sass,xml --theme=default\n```\n\n问题归档：\n\n```\nCannot assign to read only property 'exports' of object '#\u003cObject\u003e'\n```\n\n[问题解决](http://www.mamicode.com/info-detail-1694072.html)\n要配对使用require和module.exports以及import和export default\n所以自定义修改了 `brush-base` 的包\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo2team%2Fathena-component","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fo2team%2Fathena-component","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo2team%2Fathena-component/lists"}