Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

πŸŸ‘πŸ“¦ Simple node framework for typical tasks. As NPM Packege. πŸ”ŒπŸ”₯ DI system for system modules

License

Notifications You must be signed in to change notification settings

scott-walker/node-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

35 Commits

Repository files navigation

Node Framework

node-framework

NPM Package Scottweb

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ лСгковСсный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Установка

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

npm init -y
npm i @scottwalker/node-framework
cp -r ./node_modules/@scottwalker/node-framework/demo/* .
node .

ИспользованиС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ использования Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния (index.js)

const { Application, Container } = require("@scottwalker/node-framework")
const config = require("./config/main")
const modules = require("./modules")
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй
const container = new Container()
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
const app = new Application(container, modules, config)
// Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
app.run()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (config.js)

const path = require("path")
module.exports = {
 router: {
 options: {
 jsonResponse: true
 },
 headers: {
 "Content-Type": "application/json"
 },
 handler: ({ response }) => response.ok("default"),
 errorHandler: ({ response }) => response.error("error"),
 },
 logger: {
 dir: path.resolve(__dirname, "../logs"),
 },
 server: {
 host: "localhost",
 port: 3030,
 ssl: {}
 }
}

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ‚ основныС сСкции

router - ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°
 options - ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
 jsonResponse - ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON
 headers - HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
 handler - ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… запросов ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
 errorHandler - ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… запросов ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
logger - ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π»ΠΎΠ³Π³Π΅Ρ€Π°
 dir - ДирСктория для Π»ΠΎΠ³ΠΎΠ²
 dateFormat - ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Ρ‚Ρ‹ Π² Π»ΠΎΠ³Π°Ρ…
server - ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ сСрвСра
 host - Π₯ост сСрвСра
 port - ΠŸΠΎΡ€Ρ‚ сСрвСра
 ssl - Настройки SSL соСдинСния

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ прилоТСния modules.js

const { Module } = require("@scottwalker/node-framework")
module.exports = [
 new Module("base", { 
 // ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ модуля
 routes: [
 {
 method: "GET", 
 path: "/", 
 handler: ({ response }) => response.ok("Hello World!"),
 errorHandler: ({ response }) => response.error("Goodbye World!"),
 },
 ],
 // ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ модуля
 commands: [
 {
 name: "base/hello",
 params: [
 { key: "name", type: "string", required: true },
 { key: "p", alias: "price", type: "number", default: 100 },
 ],
 flags: [
 { key: "a", alias: "all" }
 ],
 handler: ({ params }) => {
 const { name, price, all } = params 
 console.log({ name, price, all })
 }
 }
 ],
 // Зависимости модуля
 dependencies: {
 "base/models/User": ({ name }) => new require("./models/User")(name)
 }
 })
]

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ свойства

routes - ОписаниС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля
dependencies - ОписаниС зависимостСй модуля

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй

Π’ вСрсии 2.0.1 Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π° структура Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ использования ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° зависимостСй.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 2 стратСгии получСния Π²Π½Π΅Π΄Ρ€Π΅Π½Π½Ρ‹Ρ… зависимостСй

invoke - Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, которая ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ создаСтся ΠΏΠΎ стратСгии make, Π° ΠΏΡ€ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… invoke Π²Ρ‹Π·ΠΎΠ²Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ экзСмпляр зависимости 
make - Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр зависимости

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания зависимостСй прилоТСния

const { Container } = require("@scottwalker/node-framework")
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй
const container = new Container({
 // ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹
 "app/clients/HttpClient": ({}, { host, strict }) => new require("./clients/HttpClient")(host, strict),
 "app/clients/MongoClient": ({}, { config }) => new require("./clients/MongoClient")(config),
 // МодСли
 "app/models/CampaignModel": () => new require("./models/CampaignModel")(),
 
 // Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ
 "app/repositories/CampaignRepository": ({ invoke }) => {
 const CampaignRepository = require("./repositories/CampaignRepository")
 const mongoClient = invoke("app/clients/MongoClient")
 return new CampaignRepository(mongoClient)
 },
 // БСрвисы
 "app/services/CampaignService": ({ invoke, make }) => {
 const CampaignService = require("./services/CampaignService")
 const httpClient = invoke("app/clients/HttpClient", { host: "localhost", strict: true })
 const campaignRepository = make("app/repositories/CampaignRepository")
 return new CampaignService(httpClient, campaignRepository, { logged: true })
 }
})

Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°

Π’ вСрсии 2.1.4 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для выполнСния ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ прилоТСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ консольного прилоТСния

const { Shell } = require("@scottwalker/node-framework")
const config = require("./config/main")
const modules = require("./modules")
const container = require("./container")(config)
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ
const shell = new Shell(container, modules, config)
// ΠŸΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 
const { name, params } = shell.parse(process.argv)
// Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
shell.exec(name, params)

About

πŸŸ‘πŸ“¦ Simple node framework for typical tasks. As NPM Packege. πŸ”ŒπŸ”₯ DI system for system modules

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /