1. Что такое Eggjs?
Eggjs — это фреймворк, основанный на Koajs, поэтому он должен принадлежать фреймворку поверх фреймворка. у самого слишком много свободы развития.
Koajs — относительно базовый фреймворк в nodejs, у него не так много ограничений и спецификаций, а степень свободы очень высока, когда каждый разработчик реализует свой сервис, у него своя «дерзкая операция». Чтобы адаптироваться к развитию предприятия, яйцо добавило некоторые спецификации и ограничения во время разработки, чтобы устранить недостатки Koajs, который слишком бесплатен и не подходит для использования на предприятиях.Egg родился в этом контексте.
Яйцо — это «яйцо», исходный код которого открыт командой Alibaba. Почему это яйцо? Яйца имеют бесконечные возможности. Цыпленок, вылупившийся из яйца, откладывает цыплят. Яйца, вылупившиеся динозаврами, — это динозавры. Это также лучше отражает одну из главных особенностей яйца — «механизм подключаемых модулей». Каждая компания, каждая команда или даже отдельный разработчик могут инкубировать наиболее подходящая структура поверх этого. Например, разные отделы в Alibaba разработали свои собственные каркасы для яиц, такие как Ant’s Chair, UC Nut, Aliyun-egg от Alibaba Cloud и т. д. Вы можете увидеть рисунок ниже.
2. Сравнение существующего фреймворка Nodejs и Eggjs
Два фреймворка Express и Koa были выпущены одной и той же группой людей.Во-первых, Koa должен иметь врожденные преимущества, которые нельзя заменить express, что также означает, что сам egg на основе Koa имеет преимущества перед express. При использовании фреймворка Express каждый разработчик становится Гамлетом из-за высокой степени свободы фреймворка. Например, при реализации определенной функции первый пользователь любит разделять контроллер и сервис, а другой пользователь любит писать их вместе, в результате получается и экспресс-проект. становится очень высоким, потому что вы не знаете, насколько нелепой может быть операция предыдущего разработчика. Чтобы использовать одну и ту же спецификацию для разработки на предприятии, сам egg придерживается принципа «конвенция важнее конфигурации». Как и в приведенном выше примере, он сам определяет, какую спецификацию должна реализовать эта функция, чтобы она могла быть реализованным в корпоративной среде.Выступайте на поле и играйте в ценность Koajs.
Фреймворк Sails также является фреймворком корпоративного уровня на основе nodejs.В предыдущей работе автор использовал этот фреймворк в бэкенде, просто для сравнения двух фреймворков. Идея парусов заимствована из фреймворка ruby, это MVC фреймворк, основанный на экспрессе, он также придерживается принципа "конвенция над конфигурацией" перед разработчиками, но не относится к деликатным Сам фреймворк имеет встроенные некоторые общие функции, такие как его блюпринты, функция автоматической генерации маршрутизации restApi, но на самом деле, когда мы формально разрабатывали эту функцию, поскольку эта функция не могла удовлетворить наши требования, мы фактически не включить эту функцию. Он также интегрирует сам интерфейсный модуль, но мы используем его только как серверный сервис и никогда не используем эти функции. Яйцо очень маленькое, и все функции модуля выбираются разработчиком, нужно ли их устанавливать и использовать в режиме плагина.
Ниже приведены некоторые из установленных модулей официального сайта паруса, при этом сам egg предоставляется разработчику в виде плагина, и разработчик сам решает, устанавливать его или нет.
3. Введение в спецификацию проекта eggjs
установить яйцо
npm init egg --type=simplenpm i // 安装依赖
-
Знакомство с фреймворковыми соглашениями
app/router.js
Используется для настройки правил маршрутизации URL-адресов, подробности см. в разделе Router.app/controller/**
Он используется для анализа ввода пользователя и возврата соответствующего результата после обработки.Подробнее см. в разделе Контроллер.app/service/**
Используется для написания слоя бизнес-логики, необязательный, рекомендуемый, подробности см. в разделе Служба.app/middleware/**
Используется для написания промежуточного программного обеспечения, необязательно, подробности см. в промежуточном программном обеспечении.app/public/**
Используется для размещения статических ресурсов, опционально, подробности смотрите во встроенном плагине egg-static.app/extend/**
Расширение для рамы, необязательное, подробности см. в разделе Расширение рамы.config/config.{env}.js
Используется для записи файлов конфигурации, подробности см. в разделе Конфигурация.config/plugin.js
Используется для настройки загружаемых подключаемых модулей, подробности см. в разделе «Плагины».test/**
Подробности о модульном тестировании см. в разделе Модульное тестирование.app.js
а такжеagent.js
Он используется для настройки работы инициализации при запуске.Это необязательно.Подробнее см. в разделе Настройка запуска. оagent.js
См. Механизм агента для роли.
4. Реализовать сервис интерфейса
Затем используйте eggjs для реализации базовой бизнес-функции в качестве практики начального уровня.Если вы заинтересованы, следуйте практике шаг за шагом.
1. Спрос
Подключитесь к базе данных mysql, запросите данные в базе данных и предоставьте интерфейс http.
2. Реализация
А. Установите mysql и создайте базу данных и таблицу.
Служба mysql, установленная зеркалом mysql, предоставленным докером, используемым автором в виртуальной среде, очень удобна, я рекомендую ее всем, но вам нужно установить докер (囧), непосредственно выполнить поиск учебника по установке докера, а затем в командной строке Выполните установку.
#1.下载镜像:
docker pull mysql:5.6
#启动,设置root初始密码为123456
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
# 3.进入容器:
docker exec -it mysql 建库建表
#也可直接启动mysql工具连接本机3306进行操作使用docker ps 命令查看一下启动好的mysql:
После завершения выполнения используйте docker ps для просмотра состояния mysql (см. рисунок ниже).
Затем подключитесь к mysql и начните создавать таблицы и вставлять операторы. Автор рекомендует использовать инструмент datagrip для работы с базой данных, но он будет взимать плату (囧). Я использую здесь бесплатное продолжениеPro. Файл sql для построения базы данных и построения таблицы может использовать файл SQL, который я использовал ранее.После построения таблицы и вставки данных посмотрите на данные mysql.
б. Подключиться к базе данных
Сначала установите подключаемый модуль mysql egg-mysql, используя npm.
npm i --save egg-mysql //安装对应mysql插件
Затем измените файл конфигурации в каталоге и включите плагин mysql.
// config/plugin.js
'use strict';
module.exports = {
mysql: {
enable: true,
package: 'egg-mysql',
}
};
// config/config.default.js
const mysql = {
// 单数据库信息配置
client: {
// host
host: '127.0.0.1',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'Test_User',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
module.exports = { mysql};
в. Реализовать маршрутизацию
// app/router.js
router.get('/user/list', controller.user.list);
г. Добавьте пользовательский сервис и добавьте метод searchAll.
// app/service/user.js
async searchAll() {
// 假如 我们拿到用户 id 从数据库获取用户详细信息
const users = await this.app.mysql.select('Tab_User_Info');
return { users };
}
е. Добавьте пользовательский контроллер и добавьте метод списка
// app/controller/user.js
'use strict';
···const userList = await ctx.service.user.searchAll();
ctx.body = {
success: true, data: userList
};
···
е. Проверка
Откройте http://127.0.0.1:7001/user/list для проверки.
Используемый выше код можно получить в репозитории git.
https://github.com/FantasyGao/Practice-book/tree/master/eggjs
Адрес файла sql, использованного выше: https://github.com/FantasyGao/About_Node/blob/master/graphql/test.sql.
Суммировать
Полная функция eggjs с использованием mysql для запроса данных будет завершена в ближайшее время.Из приведенного выше видно, что eggjs легкий и удобный.Если вы также хотите использовать его для создания сервисов, пожалуйста, начните быстро.
Вышеупомянутое содержание является моим собственным резюме, это неизбежно, что будут ошибки или недоразумения.Если у вас есть какие-либо вопросы, я надеюсь, что вы оставите сообщение, чтобы исправить меня, чтобы не понять неправильно.Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение, и я постараюсь ответить на него.Если у вас есть помощь вам, не забудьте поделиться своими друзьями! Вы также можете обратить внимание на автора, проверить свои исторические статьи и обратить внимание на последние разработки, и помочь вам стать full stack инженером как можно скорее!