前端架构师-week5-egg.js+云Mongodb快速入门

文章介绍了如何使用Egg.js框架来实现下载项目模版的功能,包括Egg.js的初始化、云和本地MongoDB的安装与使用,以及如何通过Egg.js添加新API。同时,详细讲述了在MongoDB中存储和获取项目模版信息的步骤。
摘要由CSDN通过智能技术生成

目录

下载项目模版功能实现流程分析+egg.js简介

egg.js

官网

初始化

云 mongodb 

云 mongodb 开通

本地 mongodb 安装

mongodb 使用方法

通过 egg.js 框架添加新的API

云 mongodb 开通 + 本地 mongodb 调试技巧讲解

egg.js 接入 mongodb 方法

云 mongodb 如何连接公网


下载项目模版功能实现流程分析+egg.js简介

// commands/init/lib/index.js 中前提代码

  async exec() {
    try {
      // 1. 准备阶段
      const projectInfo = await this.prepare();
      if (projectInfo) {
        // 2. 下载模板
        log.verbose('projectInfo', projectInfo);
        await this.downloadTemplate();
        // 3. 安装模板
        
      }
    } catch (e) {
      log.error(e.message);
    }
  }
  downloadTemplate() {
    // 1. 通过项目模版API获取项目模版信息
    // 1.1 通过 egg.js 搭建一套后端系统
    // 1.2 通过 npm 存储项目模版
    // 1.3 将项目模版信息存储到 mongodb 数据库中
    // 1.4 通过 egg.js 获取 mongodb 中的数据并且通过 API 返回
  }

egg.js

官网

官网地址: https://eggjs.org/zh-cn/

初始化

初始化和项目启动方法:

# 初始化
mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i

# 项目启动
npm run dev
open http://localhost:7001

 大家可以试试:npm init imooc-cli 有惊喜

思考:为什么 npm init egg 可以初始化 egg 项目?

答案:npm init 默认情况下会把当前目录(执行命令的目录)作为一个 npm 项目去初始化。但是在 npm init 后面加上一个命令的话,如 imooc-cli,就会去执行 imooc-cli 命令。会去调用 create-imooc-cli 包、create-egg 包。

云 mongodb 

云 mongodb 开通

地址:https://mongodb.console.aliyun.com/,创建实例并付款即可

本地 mongodb 安装

地址:https://www.runoob.com/mongodb/mongodb-tutorial.html

mongodb 使用方法

地址:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

通过 egg.js 框架添加新的API

 

        1. 在 controller 下面创建一个新的 js 文件,project.js 。 

        2. router.js 当中修改配置。

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/project', controller.project.index);
  router.get('/project/template', controller.project.getTemplate);
};

        3. project.js 文件中加入内容

'use strict';

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

class ProjectController extends Controller {
  index() {
    const { ctx } = this;
    ctx.body = 'your project';
  }
  // 获取项目/组件的代码模板
  getTemplate() {
    const { ctx } = this;
    ctx.body = 'get template';
  }
}

module.exports = ProjectController;

        4. 访问 127.0.0.1:7001/project,会在页面中显示  'your project'。

        5. 项目未上线,域名怎样指向 127.0.0.1 呢?

                方式一:改动 hosts 文件,sudo vim /etc/hosts

                方式二:下载 SwitchHosts 软件,更为推荐

云 mongodb 开通 + 本地 mongodb 调试技巧讲解

启动:

# 先创建/Users/sam/data/db
mongod --dbpath=/Users/sam/data/db

更多使用细节请看菜鸟教程文档 

egg.js 接入 mongodb 方法

1. imooc-cli-dev-server/app 目录下新建 utils/mongo.js

2. 可以使用 mongodb 提供的默认库,为了加快进度可以使用下面的

npm install -S @pick-star/cli-mongodb

3. imooc-cli-dev-server/config 目录下新建 db.js

'use strict';

/** MONGODB **/
const mongodbUrl = 'mongodb://sam:123456@localhost:27017/imooc-cli';
const mongodbDbName = 'imooc-cli';

module.exports = {
  mongodbUrl,
  mongodbDbName,
};

4. utils/mongo.js 文件内容

'use strict';

const Mongodb = require('@pick-star/cli-mongodb');
const { mongodbUrl, mongodbDbName } = require('../../config/db');

function mongo() {
  return new Mongodb(mongodbUrl, mongodbDbName);
}

module.exports = mongo;

5. app/controller/project.js 接入 mongodb

'use strict';

const Controller = require('egg').Controller;
const mongo = require('../utils/mongo');

class ProjectController extends Controller {
  // 获取项目/组件的代码模板
  async getTemplate() {
    const { ctx } = this;
    const data = await mongo().query('project');
    ctx.body = data;
  }
}

module.exports = ProjectController;

云 mongodb 如何连接公网

        云 mongodb 刚开通下来是没有公网地址的,在mongodb实例  数据库连接 中去'释放公网地址'。

ConnectionStringURI使用说明:

        ***** 替换为自己的密码,删掉 admin?...... 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值