1.项目目录

2.路由

根目录/routes/index.js -- 首页

const router = require('koa-router')();

router.get('/', async (ctx) => {
await ctx.render('default/index');
}) // 注意 前台和后台匹配路由的写法不一样
router.get('/case', async (ctx) => {
ctx.body = '案例'
}) router.get('/about', async (ctx) => {
await ctx.render('default/about');
}) module.exports = router.routes();

根目录/routes/api.js -- api接口

const router = require('koa-router')();

router.get('/', async (ctx) => {
ctx.body = {
"title": "这是一个api"
}
}) router.get('/newslist', async (ctx) => {
ctx.body = {
"title": "这是一个新闻接口"
}
}) router.get('/focus', async (ctx) => {
ctx.body = {
"title": "这是一个轮播图的api"
}
}) module.exports = router.routes();

根目录/routes/admin.js -- 后端管理

const router = require('koa-router')();
const user = require('./admin/user.js');
const focus = require('./admin/focus.js');
const newscate = require('./admin/newscate.js'); // 配置admin的子路由(层级路由)
router.get('/', async (ctx) => {
ctx.body = '后台管理系统首页';
}) router.use('/user', user)
router.use('/focus', focus)
router.use('/newscate', newscate) module.exports = router.routes();

根目录/routes/admin/user.js -- 用户

/**
* 用户的增加修改删除
*/
const router = require('koa-router')(); router.get('/', async (ctx) => {
// ctx.body = '用户首页';
await ctx.render('admin/user/index');
}) router.get('/add', async (ctx) => {
await ctx.render('admin/user/add');
}) router.get('/edit', async (ctx) => {
await ctx.render('admin/user/edit');
}) router.get('/delete', async (ctx) => {
ctx.body = '删除用户';
}) module.exports = router.routes();

根目录/routes/admin/focus.js -- 轮播图

/**
* 轮播图的增加修改删除
*/
const router = require('koa-router')(); router.get('/', async (ctx) => {
await ctx.render('admin/focus/index');
}) router.get('/add', async (ctx) => {
await ctx.render('admin/focus/add');
}) router.get('/edit', async (ctx) => {
await ctx.render('admin/focus/edit');
}) router.get('/delete', async (ctx) => {
ctx.body = '删除轮播图';
}) module.exports = router.routes();

根目录/routes/admin/newscate.js -- 新闻分类

/**
* 新闻分类的增加修改删除
*/
const router = require('koa-router')(); router.get('/', async (ctx) => {
ctx.body = '新闻分类首页';
}) router.get('/add', async (ctx) => {
ctx.body = '增加新闻分类';
}) router.get('/edit', async (ctx) => {
ctx.body = '编辑新闻分类';
}) router.get('/delete', async (ctx) => {
ctx.body = '删除新闻分类';
}) module.exports = router.routes();

3.视图

根目录/views/default/index.html

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<h2>这是一个网站的首页</h2>
<div>
box
</div>
</body> </html>

4.入口文件

/**
* koa 路由模块化
*/
const Koa = require('koa');
const router = require('koa-router')();
const path = require('path');
const render = require('koa-art-template');
// 引入子模块(子路由)
const admin = require('./routes/admin.js');
const api = require('./routes/api.js');
const index = require('./routes/index.js'); // 实例化
var app = new Koa(); // 配置 koa-art-template 模板引擎
render(app, {
root: path.join(__dirname, 'views'),
extname: '.html',
debug: process.env.NODE_ENV !== 'production'
}) // 配置路由
// router.use('/', index)
router.use(index) /**
* /admin 配置子路由(层级路由)
* /admin/user
*/
router.use('/admin', admin); /**
* /api/newslist 新闻列表的api
*/
router.use('/api', api); /*在模块里面暴露路由并且启动路由*/ // 启动路由
app.use(router.routes()).use(router.allowedMethods()) app.listen(8008);

.

最新文章

  1. gitlab 配置
  2. Android 隐藏软键盘方法
  3. bat隐藏文件夹
  4. YII设置用户访问过滤
  5. bzoj 1042: [HAOI2008]硬币购物 dp+容斥原理
  6. Android 带password输入界面的Dialog实现机制
  7. Flex中TabNavigator隐藏和显示选项卡
  8. Spring之Enterprise JavaBeans (EJB) integration
  9. linux屏幕扩展、扩展屏幕的校准
  10. NodeJs之邮件(email)发送
  11. 在 asp.net core 中使用类似 Application 的服务
  12. LeetCode 13. Roman to Integer(c语言版)
  13. Spring-扫描注解原理,注解自动扫描原理分析
  14. (5)Linux权限管理
  15. synchronized与volatile的区别及各自的作用、原理(学习记录)
  16. python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)
  17. 在SQL Server 2018 Management Studio中修改表字段顺序
  18. canvas移动端常用技巧图片loading
  19. Linux C语言连接 sqlserver数据库
  20. 关于jsp中引用css外部样式无效时的处理方法

热门文章

  1. mysql计算QPS
  2. python3中OS模块
  3. fetch的文件流下载及下载进度获取
  4. 9、nginx常用基础模块
  5. C库函数——字符串转数字整理
  6. Winfrom TextBox 添加水印文字 + 字体颜色
  7. Hadoop_03_Hadoop分布式集群搭建
  8. 纯c中声明变量
  9. Linux文件归档管理
  10. (八)zabbix获取到的数值自定义单位