使用Egg改造订单系统展示效果,方便快速浏览

素材准备:

1.Egg.js

Born to build better enterprise frameworks and apps with Node.js & Koa 

为企业级框架和应用而生

2.订单数据

订单列表://gzh.58yskj.com/qd-sys/

订单详情://gzh.58yskj.com/public/index-detail.html?id=9bbf0efa-15cc-4898-8a3d-75468ec55ced

3.Bootstrap

Bootstrap样式文件、脚本文件,插件bootstrap-paginator.js

4.swiper

轮播图切换效果脚本swiper.js

 

我们在看到下面这种订单列表时,如果要查看具体的需求,那就需要每个订单去下载附件,然后再打开查看了。如果可以查看图片形式的需求岂不是一目了然,为此我以egg.js框架搭建一个方便自己预览的小型系统(此处应该说是一个站点吧,具体的名词不去纠结了)。

UntitledImage

在本地搭建的站点效果如下:

UntitledImage

这样是不是就一目了然了呢,当然了这个只是订单的展示,并未做接单的操作(这个由于官方是基于接单是基于微信公众号的微信登录,暂时不考虑做接单了)

 

接下的操作分为,

1.基于egg.js快速初始化

直接使用脚手架,只需几条简单指令,即可快速生成项目(npm >=6.1.0):

$ mkdir egg-example && cd egg-example
$ npm init egg –type=simple
$ npm i

启动项目:

$ npm run dev
$ open //localhost:7001

 

2.上面的操作完成之后就可以看到一个简单的页面,内容显示hello,egg。

我们使用egg.js在渲染页面时需要用到模板引擎,此处我使用的是egg-view-nunjucks

引入 view 插件
$ npm i egg-view-nunjucks –save

启用插件
// config/plugin.js  注意此处的文件路径
exports.nunjucks = {
      enable: true,
     package: ‘egg-view-nunjucks’,
};

//另外还要注意一下此处配置的写法啊。由于我也是第一次玩egg啊,在此处刚开始配置的时候没太注意那么多,导致写错了配置结构,报了一堆错误,后来根据报错的堆栈信息,逐步调试才发现是配置文件写错了结构。

或者以下方的写法,我用的就是下面的方式,刚开始没注意到,结构里面写nunjucks,导致一系列的报错。。。

module.exports = {
nunjucks: {
enable: true,
package: ‘egg-view-nunjucks’,
},
};

 

另外还要在config下的配置文件中配置一下模板引擎

/config/config.default.js

config.view = {
defaultViewEngine: ‘nunjucks’,
mapping: {
‘.tpl’: ‘nunjucks’,
},
};

 

3.模板引擎安装上了,接下来我们就写一下模板

写模板之前需要先写一下路由、控制器

在router.js定义一下访问的路由

module.exports = app => {
const { router, controller } = app;
router.get(‘/’, controller.home.index);//首页的路由
router.get(‘/order/:id’, controller.home.order);//订单详情页面的路由
};

 

首先来看首页的路由对应的控制器方法就是controller.home.index,也就是controller目录下的home.js中的index()方法

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
async index() {
const { ctx, app } = this;

const pageSize = app.config.env.pageSize;
const page = parseInt(ctx.query.page) || 1;
const cid = ctx.query.cid || '';

// const orderList = await ctx.service.order.getOrderList();
const data = await ctx.service.order.getOrderListDb(cid, page, pageSize);
const categoryList = await ctx.service.order.getCategoryListDb(page, 50)


await ctx.render('home/list.tpl', { data, categoryList, page, pageSize, cid });
}

async order() {
const { ctx } = this
const { id } = ctx.params
ctx.content = {
name: `hello ${ctx.params.id}`,
};

await ctx.render(‘home/order.tpl', {order });
}
}

module.exports = HomeController;

 

Tags: