zoukankan      html  css  js  c++  java
  • 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);

    .

  • 相关阅读:
    [转]Magento刷新索引的几种方法
    [转]centos7 移动mysql5.7.19 数据存储位置
    [转]解决Magento批量导入带图片的商品的问题
    [转]【mysql监控】查看mysql库大小,表大小,索引大小
    [转]Centos系统中查看文件和文件夹大小
    [转]Magento 2.2 Developer Documentation
    [转]Magento2开发教程
    [转]Magento Configurable Product
    [转]论magento1和magento2的速度性能优化问题
    [转]本地 Windows 计算机密码登录 登录 腾讯云 Linux 实例
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10970965.html
Copyright © 2011-2022 走看看