{"id":29341502,"url":"https://github.com/thierryxing/falcon","last_synced_at":"2026-03-02T07:33:26.890Z","repository":{"id":67662491,"uuid":"93726210","full_name":"thierryxing/Falcon","owner":"thierryxing","description":"基于 Vue2 和 AdminLTE 的移动客户端 CI 平台（前端）","archived":false,"fork":false,"pushed_at":"2019-05-15T15:30:40.000Z","size":445,"stargazers_count":173,"open_issues_count":0,"forks_count":70,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-07-08T09:54:12.910Z","etag":null,"topics":["adminlte","jaguar","vue","vue2"],"latest_commit_sha":null,"homepage":"","language":"Vue","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/thierryxing.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}},"created_at":"2017-06-08T08:36:41.000Z","updated_at":"2025-01-16T10:27:13.000Z","dependencies_parsed_at":"2023-03-11T02:09:07.827Z","dependency_job_id":null,"html_url":"https://github.com/thierryxing/Falcon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thierryxing/Falcon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thierryxing%2FFalcon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thierryxing%2FFalcon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thierryxing%2FFalcon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thierryxing%2FFalcon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thierryxing","download_url":"https://codeload.github.com/thierryxing/Falcon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thierryxing%2FFalcon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29995041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["adminlte","jaguar","vue","vue2"],"created_at":"2025-07-08T09:42:10.652Z","updated_at":"2026-03-02T07:33:26.886Z","avatar_url":"https://github.com/thierryxing.png","language":"Vue","readme":"# Falcon\n\u003e 基于Vue2和AdminLTE的移动客户端自动化平台（前端）\n\n## 关于Falcon\n从16年初开始到现在，我们的前端团队将 Vue 作为主框架已经有一年多的时间了，而作为前端工程师出身的我，知识体系还停留在远古的 Prototype 和 jQuery 上，说起来也是一件十分惭愧的事情。\n\n于是我下定决心花一段时间由浅入深地学习一下这个目前非常流行的框架，同时恶补一下ES6的知识。\n\n本人一直赞同并践行一个观点：\n\n\u003e 学习一项新技术的最佳途径就是动手写一个完整的项目。\n\n因为在这个项目中你将遇到几乎所有的问题，那么解决这些问题的过程就是你不断提高，融会贯通的过程。\n\n学习 Vue 也不例外，恰好最近正在计划为内部的自动化平台 Jaguar 提供 iOS 和 Android 的版本，以方便大家在移动端进行使用，那么用 Native 去写显然有些浪费资源，而做一个Hybrid的跨平台App应该是最经济的方式了，所以最终的计划是将 Jaguar 进行前后端分离，然后在前端使用Vue框架，并使其同时能够支持浏览器，iOS 和 Android 平台。\n\n为了和 Jaguar（美洲豹）相对应，最终决定给项目取名叫 Falcon，即：猎鹰，和 Jaguar 一样都是速度飞快的动物。\n\n经过一段时间的规划和整理，可以预计出最终的版本大约包含40个左右的页面，30 个左右的组件，这么算来也可以称之为一个不大不小的项目了。\n\n最终的界面大概如下：\n![Dashboard.png](http://upload-images.jianshu.io/upload_images/1639341-feeaad585cad9bba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n![Project.png](http://upload-images.jianshu.io/upload_images/1639341-00dfe3a7d6767857.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n[Vue实战](http://www.jianshu.com/nb/13169691)将事无巨细的记录我在完成整个项目过程中对Vue的从浅到深理解，遇到的点点滴滴问题，希望可以帮助正在入门或打算尝试Vue框架的同学们。\n\n## 如何运行\n由于后端 Jaguar 服务配置起来比较繁琐，为了简化大家的使用，我已经将部分 API 放置在了 Easy-Mock 服务上（不断更新中），运行方法如下：\n\n### 配置 proxy\n首先保证，vue.config.js 中 proxy 的内容如下（注释部分）：\n\n```\n    proxy: {\n            '/api/v1': {\n              changeOrigin: true,\n              secure: false,\n              target: 'https://www.easy-mock.com/mock/5b18ccb77dddfa3903693dba'\n            },\n            '/sidekiq': {\n              changeOrigin: true,\n              secure: false,\n              target: 'http://localhost:3000'\n            }\n          }\n```\n\n### 运行项目：\n\n* 安装npm依赖的库\n\n```\nnpm install\n```\n\n* 运行服务\n\n```\nnpm run serve\n```\n\n* 在浏览器中访问：[http://localhost:8080/#/](http://localhost:8080/#/)\n\n### 登录\n\n登录页面的用户名（邮箱）和密码可以随意填写\n\n## 项目结构\n\n```\n.\n├── App.vue\n├── assets\n│   └── logo.png\n├── components\n│   ├── global\n│   │   ├── Alert.vue\n│   │   ├── ConfirmModal.vue\n│   │   ├── ContentFooter.vue\n│   │   ├── ContentHeader.vue\n│   │   ├── LoadingOverlay.vue\n│   │   ├── NavBar.vue\n│   │   ├── Pagination.vue\n│   │   ├── SideBar.vue\n│   │   ├── SideBarItem.vue\n│   │   ├── TableBox.vue\n│   │   └── UserPanel.vue\n│   └── projects\n│       ├── Dependency.vue\n│       ├── EnvForm.vue\n│       ├── Form.vue\n│       ├── Info.vue\n│       └── SideBar.vue\n├── constants\n│   ├── api.js\n│   └── enum.js\n├── main.js\n├── router\n│   ├── index.js\n│   └── routes.js\n├── store\n│   ├── actions.js\n│   ├── index.js\n│   ├── modules\n│   │   ├── alert.js\n│   │   ├── current-platform.js\n│   │   ├── current-project.js\n│   │   └── current-user.js\n│   └── mutation-types.js\n├── utils\n│   ├── networking.js\n│   └── storage.js\n└── views\n    ├── Dashboard.vue\n    ├── Layout.vue\n    ├── account\n    │   └── Login.vue\n    ├── guardian\n    │   └── List.vue\n    ├── job\n    │   └── Index.vue\n    └── projects\n        ├── Edit.vue\n        ├── Home.vue\n        ├── Layout.vue\n        ├── New.vue\n        ├── builds\n        │   ├── CheckDependency.vue\n        │   ├── Detail.vue\n        │   ├── List.vue\n        │   ├── PreBuildBeta.vue\n        │   └── PreBuildLib.vue\n        ├── environments\n        │   ├── Clone.vue\n        │   ├── List.vue\n        │   ├── New.vue\n        │   └── configs\n        │       ├── Fastlane.vue\n        │       ├── GitClone.vue\n        │       ├── Info.vue\n        │       └── List.vue\n        └── services\n            ├── Edit.vue\n            └── List.vue\n\n18 directories, 55 files\n```\n\n## 功能\n目前项目还在不断的开发中，已经包含的功能如下：\n\n- [x] 登录\n- [x] 登出\n- [x] 项目列表展示\n- [x] 新增项目\n- [x] 项目详情\n- [x] 项目依赖第三方库列表\n- [x] 项目下新增构建环境\n- [x] 配置环境\n- [x] 项目构建列表\n- [x] 项目构建前配置\n- [x] 第三方服务（Bugly，Fir）列表\n- [x] 项目设置\n- [x] 用户列表\n- ...\n\n## 链接\n\n### 文章\n\n* [Vue实战（一）Falcon计划](http://www.jianshu.com/p/52eac947cd96)\n* [Vue实战（二）框架和环境](http://www.jianshu.com/p/a6e37818fd9a)\n* [Vue实战（三）Mock服务JSON Server](http://www.jianshu.com/p/7094c477207d)\n* [Vue实战（四）组件和路由](http://www.jianshu.com/p/153f847fa2aa)\n* [Vue实战（五）网络层拦截器与全局异常信息展示](http://www.jianshu.com/p/0f3f27f33a6f)\n\n### 三方工具\n\n* [AdminLTE](https://github.com/almasaeed2010/AdminLTE)\n* [JSON Server](https://github.com/typicode/json-server)\n* [Vue Highlightjs](https://github.com/metachris/vue-highlightjs)\n\n## License\nMIT licensed.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthierryxing%2Ffalcon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthierryxing%2Ffalcon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthierryxing%2Ffalcon/lists"}