Egg.jsノードですか?

藏色散人
リリース: 2022-12-29 14:51:50
オリジナル
1974 人が閲覧しました

egg.js は、Koa から継承されたノード フレームワークです。egg.js フレームワークは、exporess や koa などの基本的なフレームワークとは異なります。アプリケーション レベルでビジネス シナリオに近づけ、より迅速に開始できるようにします。

Egg.jsノードですか?

#このチュートリアルの動作環境: Windows 10 システム、egg.js v2.0.0 バージョン、Dell G3 コンピューター。

egg.js ノードですか? #########はい。

egg.js を理解する

Egg は、Koa から継承された Node.js フレームワークです。 expoless や koa などの基本的なフレームワークとは異なり、egg.js はアプリケーション レベルで洗練されてカプセル化されているため、ビジネス シナリオに近くなり、より迅速に開始できるようになります。

Egg は、「設定よりも規約の方が優れている」という規約に従って開発されており、チームの共同作業のコストは低くなります

インストール

npm init egg
npm i
npm run dev
ログイン後にコピー
基本的な API は大きく分けてルーティング、リクエストパラメータの取得、論理処理、レスポンスデータの返却で構成されます

Routing

app/router.js URL ルーティング ルールを構成するために使用されます

router.get("/", controller.home.index);
// 当访问GET '/' ,app/controller/home.js 下的 index 方法会执行
router.post("/create", controller.user.create);
// 当访问POST '/create' ,app/controller/user.js 下的 create 方法会执行
ログイン後にコピー

リクエスト パラメーターの取得

This.ctx.query は URL 内の次のパラメーターを取得します?

// GET /posts?category=egg&language=node
// app/controller/post.js
class PostController extends Controller {
  async listPosts() {
    const query = this.ctx.query;
    // {
    //   category: 'egg',
    //   language: 'node',
    // }
  }
}
ログイン後にコピー

this .ctx.params ルート内の動的パラメータを取得します

// app.get('/projects/:projectId/app/:appId', controller.app.listApp);
// GET /projects/1/app/2
class AppController extends Controller {
  async listApp() {
    const params = this.ctx.params;
    // {
    //   projectId: '1',
    //   appId: '2'
    // }
  }
}
ログイン後にコピー

this.ctx.request.body 本体パラメータを取得します

// POST /api/posts HTTP/1.1
// Host: localhost:3000
// Content-Type: application/json; charset=UTF-8
//
// {"title": "controller", "content": "what is controller"}
class PostController extends Controller {
  async listPosts() {
    const body = this.ctx.request.body;
    // {
    //   title: 'controller',
    //   content: 'what is controller'
    // }
  }
}
ログイン後にコピー

応答データを返します

this.ctx.body応答データを返す

class ViewController extends Controller {
  async show() {
    // 返回Content-Type为application/json的body
    this.ctx.body = {
      name: "egg",
      category: "framework",
      language: "Node.js",
    };
  }
  async page() {
    // 返回Content-Type为text/html的body
    this.ctx.body = "<html><h1>Hello</h1></html>";
  }
}
ログイン後にコピー

mysqlデータベースを使用する

mysqlプラグインをインストールする

npm i egg-mysql
ログイン後にコピー

設定

// config/plugin.js
exports.mysql = {
  enable: true,
  package: "egg-mysql",
};
// config/config.${env}.js
exports.mysql = {
  // 单数据库信息配置
  client: {
    // host
    host: "localhost",
    // 端口号
    port: "3306",
    // 用户名
    user: "root",
    // 密码
    password: "root",
    // 数据库名
    database: "database",
  },
};
ログイン後にコピー

使用する

// 查找id 为 ${uid}的用户
await this.app.mysql.get("users", { id: uid });
ログイン後にコピー

プロセス ビジネス ロジック

データベース操作を含むビジネス ロジックをアプリ/サービスに配置することをお勧めします

// app/service/user.js
const Service = require("egg").Service;
class UserService extends Service {
  async find(uid) {
    // 假如 我们拿到用户 id 从数据库获取用户详细信息
    const user = await this.app.mysql.get("users", { id: uid });
    return user;
  }
}
module.exports = UserService;
ログイン後にコピー

その後、データサービス層によって取得された情報は、コントローラーを通じて取得できます。

// app/controller/user.js
class UserController extends Controller {
  async info() {
    const ctx = this.ctx;
    const userId = ctx.params.id;
    // 调用service层的user下的find方法
    const user = await ctx.service.user.find(userId);
    ctx.body = user;
  }
}
ログイン後にコピー

基本的な CURD ステートメントでは、create、get、select、update、delete メソッドを使用できます

SQL ステートメントを直接実行するには、クエリ メソッドを使用できます

トランザクション コントロール

egg.js 官网:https://www.eggjs.org/zh-CN/
ログイン後にコピー

推奨学習: 「

node.js ビデオ チュートリアル

以上がEgg.jsノードですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート