这几天为了给系统新做个后台,到处找开源项目,真给我找到了,https://github.com/marmelab/ng-admin
用完只能说,太方便了~~~ 这么好的项目为啥我现在才发现,之前我是使用 angular 一步步搭起来了,自从用了 ng-admin 之后,2 天时间系统已经成形了,结合 rest API,后台的开发很简单,待我这个项目做好之后写篇总结。
不过可以先贴段代码,这里是跟后台交互的 API,自定义的接口风格都可以在这里修改,由于我实现的后台使用的是 mongoose,因此可以根据它的查询风格修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import store from 'store';
export function requestInterceptor(RestangularProvider) { RestangularProvider.addFullRequestInterceptor(function (element, operation, what, url, headers, params) { if (operation == "getList") { if (params._page) { params.skip = (params._page - 1) * params._perPage; params.limit = params._perPage; delete params._page; delete params._perPage; } if (params._sortField) { let field = params._sortField; if (params._sortField === 'id') { field = '_id'; } params.sort = `${params._sortDir === 'ASC' ? '':'-'}${field}`; delete params._sortField; delete params._sortDir; } if (params._filters) { params.filters = params._filters; delete params._filters; } } const token = store.get('JWT_TOKEN'); if (token) { headers['Authorization'] = `Bearer ${token}`; } return {params: params, headers: headers}; }); }
export function responseInterceptor(RestangularProvider) { RestangularProvider.addResponseInterceptor(function (data, operation, what, url, response) {
return data; }); }
|
然后在后台的接口直接使用传过来的参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| export function getAdminDataList(Model, query) { const filters = JSON.parse(query.filters); let q = Model.find(filters);
if (query.sort) { q = q.sort(query.sort); } if (query.limit) { q = q.limit(Number(query.limit)); } if (query.skip) { q = q.skip(Number(query.skip)); } return q.exec(); }
|
关于管理后台
一些开发团队往往有这样的想法:『管理后台是给自己人用的,差点无所谓』。我却认为,你做的管理后台是给员工用的,如果差的话,他们用着难受,尤其是客服,他们的态度会被影响,然后传染给你的用户。同时,管理后台是工具,如果差的话就意味着效率低,效率低对团队意味着什么,我也不用细说了。
退一步说,管理后台的使用者也是你的用户,建议让管理后台的产品或者开发人员去客服边上待上几个小时,当他们看到自己做的东西让别人那么难受的时候,就会知道该怎么做了。
** 来自一个给客服同事造成困扰的工程师 **
原链接: https://github.com/xizhibei/blog/issues/8
本文采用 署名 - 非商业性使用 - 相同方式共享(BY-NC-SA) 进行许可。