koa 路由、视图模块化(二)
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);
.
koa 路由、视图模块化(二)的更多相关文章
- Laravel教程 二:路由,视图,控制器工作流程
Laravel教程 二:路由,视图,控制器工作流程 此文章为原创文章,未经同意,禁止转载. View Controller 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就 ...
- koa 路由模块化(一)
1.项目目录 2.入口文件 根目录/app.js /** * koa 路由模块化 */ const Koa = require('koa'); const router = require('koa- ...
- koa 路由配置
Koa 路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等) 组成的,涉及到应用如何响应客户端对某个网站节点的访问. 通俗的讲:路由就是根据不 ...
- Vue-初步了解vue-router的三要素:路由map 、路由视图、路由导航
安装vue-router模块 使用vue-router前要先安装vue-router库 cnpm install vue-router –save 使用vue-router vue-router有三个 ...
- Xamarin XAML语言教程模板视图TemplatedView(二)
Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <? ...
- 用Decorator控制Koa路由
在Spring中Controller长这样 @Controller public class HelloController{ @RequestMapping("/hello") ...
- Eclipse的Debug各种视图介绍(二)
本文链接:https://blog.csdn.net/u011781521/article/details/55000066 http://blog.csdn.net/u010075335/ar ...
- vue 路由视图,router-view嵌套跳转
实现功能:制作一个登录页面,跳转到首页,首页包含菜单栏.顶部导航栏.主体,标准的后台网页格式.菜单栏点击不同菜单控制主体展示不同的组件(不同的页面). 配置router-view嵌套跳转需要准备两个主 ...
- Laravel 5系列教程二:路由,视图,控制器工作流程
免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel ...
随机推荐
- python之时间日期calendar
calendar是与日历相关的模块,calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型.其中,Calendar是TextCale ...
- 用NetHttpClient执行Post操作遇到的问题
最近在做接口的调试,用NetHttpClient来进行相关操作.部分数据是用get方法来操作的,没有问题,但有个数据是用Post来操作的,始终报错,用了抓包分析工具发现没有发送数据出去.但找不出代码的 ...
- In Unix, what is tar, and how do I use it?
In Unix, the name of the tar command is short for tape archiving, the storing of entire file syste ...
- Linux 下幾種網芳/Samba 目錄的 mount 方式
Linux 下幾種網芳/Samba 目錄的 mount 方式,比較新的 Smaba 只能用 cifs 的 mount 方式. [smbmount] smbmount -o username=&qu ...
- 第三章·Logstash入门-部署与测试
1.Logstash环境准备与安装 Logstash环境准备 关闭防火墙 #CentOS6 关闭防火墙 [root@elkstack01 ~]# /etc/init.d/iptables stop # ...
- CSS相对定位与绝对定位详解
相对定位和绝对定位,不改变元素的大小形状,只改变元素的位置. 相对定位和绝对定位是通过position属性来控制的,position属性的值为下面几种: 值 描述 absolute 使元素绝对定位,相 ...
- Hive压缩和存储(十二)
压缩和存储 1. Hadoop压缩配置 1) MR支持的压缩编码 压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAU ...
- Django REST Framework(DRF)_第四篇
DRF分页(总共三种) PageNumberPagination(指定第n页,每页显示n条数据) 说明 既然要用人家的那么我们就先来看下源码,这个分页类源码中举例通过参数指定第几页和每页显示的数据:h ...
- hive单机部署
hadoop,hbase,zookeeper安装好了,现在来安装hive hadoop 版本:2.8.4 hbase 版本:2.1.3 hive 版本:2.3.4 zookeeper 版本:3.4.1 ...
- springboot2.1.7整合Druid
一.maven的依赖:文中就贴重点的, 其他依赖就不贴了 <dependency> <groupId>com.alibaba</groupId> <artif ...