Prerequisites

Name Version Link
NodeJS >=10 https://nodejs.org
MySQL >=5.7.27 https://dev.mysql.com/downloads/mysql/

Any question, see also: FAQ - General

Create a project

Create a project named as cabloy-demo,then install all dependencies

$ npm init cabloy cabloy-demo --type=cabloy
$ cd cabloy-demo
$ npm i
Name Description
type specify the project template: cabloy

Configure MySQL

EggJS provides three runtime environments, and EggBornJS implements different database access strategies for each runtime environment:

1、unit-test environment:Every time service started, the old test database is always deleted and a new test database is created

2、local development environment:Every time service started, the available test database is always looked up, and if not found, a new one is created

3、production environment:The database needs to be created manually and specified in config.prod.js

Through these database access strategies, debugging can be very convenient in the development stage. For example, the database architecture changes frequently during the development stage, when only one unit test command is needed to take effect. The basic operation is as follow:

# run unit-test
$ npm run test:backend
# start local development service
$ npm run dev:backend

Therefore, it is necessary to set up the database connection configuration of the three runtime environments separately

unit-test environment

src/backend/config/config.unittest.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: '',
        database: 'sys', // donnot change the name
      },
    },
  };
Name Description
__ebdb the system’s built-in MySQL node name, which is not allowed to change
database specified as sys. Every time service started, the old test database is always deleted and a new test database is created

local development environment

src/backend/config/config.local.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: '',
        database: 'sys', // recommended
      },
    },
  };
Name Description
database recommendeded as sys. Every time service started, the available test database is always looked up, and if not found, a new one is created
If specified as the other specific database name, then use this one directly

production environment

src/backend/config/config.prod.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: '',
        database: '{{name}}',
      },
    },
  };
Name Description
database The database need to be created manually

Unit-Test

$ npm run test:backend

CabloyJS recommends a test-driven development mode. By test-driven, you can lock in the results of development, and when there are code changes, you can find problems as soon as possible, so as to solve problems

In addition, the database architecture changes frequently during the development stage, when only one unit test command is needed to take effect

Run

Start backend service

$ npm run dev:backend

Start frontend service

$ npm run dev:front

Enjoy