Przewodnik po korzystaniu z SparkPost z Node.js

Ptak

1 wrz 2017

Email

1 min read

Przewodnik po korzystaniu z SparkPost z Node.js

Kluczowe Wnioski

    • SparkPost oferuje wiele sposobów wysyłania e-maili z Node.js — bezpośrednie wywołania API, transport Nodemailer oraz dostawę wielokanałową notif.me.

    • Przechowuj klucze API w zmiennych środowiskowych, nigdy nie zakodowuj ich na stałe. SparkPost automatycznie wykrywa SPARKPOST_API_KEY.

    • Transmissions API zapewnia potężną elastyczność: szablony, dane zamienne, załączniki i tagowanie kampanii.

    • Użytkownicy Nodemailer mogą natychmiast przełączyć się na SparkPost za pomocą oficjalnego transportu — bez większych zmian w kodzie.

    • Notif.me zapewnia dostawę wielokanałową (e-mail, SMS, push) z strategiami awaryjnymi, co czyni go idealnym do solidnych systemów powiadomień.

    • Node.js naturalnie pasuje do nowoczesnych chmurowych API e-mailowych i bezserwerowych przepływów pracy, co ułatwia osadzanie możliwości e-mailowych bezpośrednio w aplikacji.

Q&A Highlights

  • Jaki jest najszybszy sposób na rozpoczęcie wysyłania e-maili z SparkPost w Node.js?

    Zainstaluj pakiet sparkpost, zainicjuj klienta za pomocą klucza API (najlepiej poprzez zmienne środowiskowe) i wywołaj metodę transmissions.send() z odbiorcami + treścią.

  • Czy muszę przechowywać mój klucz API SparkPost w kodzie?

    Nie — i nie powinieneś. Użyj zmiennych środowiskowych. Klient automatycznie odczytuje SPARKPOST_API_KEY.

  • Czy mogę wysyłać emaile używając szablonów zamiast liniowego HTML?

    Tak. API Transmissions obsługuje zapisane szablony, dane zastępcze, listy odbiorców, załączniki, kopię cc/bcc i więcej.

  • Co jeśli już używam Nodemailer?

    Jesteś zabezpieczony — SparkPost jest dostarczany z oficjalnym transportem Nodemailer. Po prostu skonfiguruj go za pomocą swojego klucza API i używaj Nodemailer jak zwykle.

  • Czy SparkPost może współpracować z systemami do wielokanałowego przesyłania wiadomości?

    Tak. Biblioteki takie jak notifme-sdk umożliwiają wysyłanie e-maili, SMS-ów, powiadomień push i webpush z logiką awaryjną, a także zawierają dostawcę SparkPost.

  • Czy Node.js nadaje się do bezserwerowych przepływów pracy email?

    Absolutnie. Dobrze współpracuje z Cloud Functions, Lambdas i dowolnym środowiskiem bezserwerowym używającym SparkPost's API do e-maili wyzwalanych zdarzeniami.

  • Kto powinien używać Transmissions API vs. Nodemailer lub notif.me?

    • Użyj Transmissions API, gdy chcesz pełną kontrolę i wydajność.

    • Użyj Nodemailer, jeśli Twój projekt już z niego korzysta i chcesz szybką integrację.

    • Użyj notif.me do wiadomości wielokanałowych lub strategii awaryjnego dostarczania.

  • Jakie jest największe dobre praktyka przy wysyłaniu emaili z Node?

    Traktuj swój klucz API jako poufny — tylko zmienne środowiskowe, nigdy nie zapisuj go w kodzie.

Jako Developer Advocate w SparkPost piszę wiele przykładowych aplikacji. Moje doświadczenie to głównie rozwój front-end, dlatego moim najsilniejszym językiem jest JavaScript. Dzięki Node.js jestem również przyzwoitym deweloperem back-end. Czy to oznacza, że teraz jestem deweloperem full stack?

Wprowadzenie do Node.js

Jako Developer Advocate dla SparkPost, piszę wiele aplikacji przykładowych. Moje doświadczenie to głównie rozwój front-end, dlatego moim najsilniejszym językiem jest JavaScript. Dzięki Node.js jestem również przyzwoitym programistą backendowym. Mówiąc o aplikacjach przykładowych, Node.js doskonale nadaje się do tworzenia funkcji bezserwerowych, które integrują się z Flow Builder - jak nasz poradnik integracji Google Cloud Functions i Vision API. Czy to oznacza, że teraz jestem pełnoprawnym programistą full stack? Tak czy inaczej, ważne było dla mnie, że mamy wspaniałą bibliotekę klienta SparkPost dla Node.js. Więc zagłębiłem się w to i stałem się jednym z współtwórców (nawet zanim zostałem zatrudniony).

Pozwól mi pomóc ci rozpocząć wysyłanie e-maili z SparkPost w twoim projekcie Node.js. Zanim zagłębisz się w szczegóły dotyczące Node.js, możesz chcieć zrozumieć podstawy API e-mail w infrastrukturze chmury i jak wpisują się one w nowoczesny rozwój aplikacji.

Jako Developer Advocate dla SparkPost, piszę wiele aplikacji przykładowych. Moje doświadczenie to głównie rozwój front-end, dlatego moim najsilniejszym językiem jest JavaScript. Dzięki Node.js jestem również przyzwoitym programistą backendowym. Mówiąc o aplikacjach przykładowych, Node.js doskonale nadaje się do tworzenia funkcji bezserwerowych, które integrują się z Flow Builder - jak nasz poradnik integracji Google Cloud Functions i Vision API. Czy to oznacza, że teraz jestem pełnoprawnym programistą full stack? Tak czy inaczej, ważne było dla mnie, że mamy wspaniałą bibliotekę klienta SparkPost dla Node.js. Więc zagłębiłem się w to i stałem się jednym z współtwórców (nawet zanim zostałem zatrudniony).

Pozwól mi pomóc ci rozpocząć wysyłanie e-maili z SparkPost w twoim projekcie Node.js. Zanim zagłębisz się w szczegóły dotyczące Node.js, możesz chcieć zrozumieć podstawy API e-mail w infrastrukturze chmury i jak wpisują się one w nowoczesny rozwój aplikacji.

Jako Developer Advocate dla SparkPost, piszę wiele aplikacji przykładowych. Moje doświadczenie to głównie rozwój front-end, dlatego moim najsilniejszym językiem jest JavaScript. Dzięki Node.js jestem również przyzwoitym programistą backendowym. Mówiąc o aplikacjach przykładowych, Node.js doskonale nadaje się do tworzenia funkcji bezserwerowych, które integrują się z Flow Builder - jak nasz poradnik integracji Google Cloud Functions i Vision API. Czy to oznacza, że teraz jestem pełnoprawnym programistą full stack? Tak czy inaczej, ważne było dla mnie, że mamy wspaniałą bibliotekę klienta SparkPost dla Node.js. Więc zagłębiłem się w to i stałem się jednym z współtwórców (nawet zanim zostałem zatrudniony).

Pozwól mi pomóc ci rozpocząć wysyłanie e-maili z SparkPost w twoim projekcie Node.js. Zanim zagłębisz się w szczegóły dotyczące Node.js, możesz chcieć zrozumieć podstawy API e-mail w infrastrukturze chmury i jak wpisują się one w nowoczesny rozwój aplikacji.

Instalacja i konfiguracja

Zakładam, że masz zainstalowany Node.js. Ponieważ podążamy za harmonogramem wsparcia długoterminowego Node.js (LTS), będziesz musiał używać wersji 4 lub wyższej. Możesz sprawdzić, którą wersję używasz, za pomocą polecenia `node –version` w oknie terminala.

Stwórzmy nowy projekt npm. Jeśli już masz taki, możesz pominąć tę część.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

To stworzy nowy projekt i zaakceptuje wszystkie domyślne ustawienia. Możesz również uruchomić `npm init` i odpowiedzieć na wszystkie pytania.

Teraz możemy zainstalować node-sparkpost:

> npm install sparkpost --save

Po zainstalowaniu możesz zaimportować i utworzyć instancję klasy SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TWÓJ KLUCZ API')

Dobrą praktyką jest unikanie umieszczania klucza API w kodzie. Gorąco rekomendujemy przechowywanie go poza twoim kodem, więc skonfigurowaliśmy bibliotekę klienta, aby wykryła zmienną środowiskową SPARKPOST_API_KEY.

Zakładam, że masz zainstalowany Node.js. Ponieważ podążamy za harmonogramem wsparcia długoterminowego Node.js (LTS), będziesz musiał używać wersji 4 lub wyższej. Możesz sprawdzić, którą wersję używasz, za pomocą polecenia `node –version` w oknie terminala.

Stwórzmy nowy projekt npm. Jeśli już masz taki, możesz pominąć tę część.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

To stworzy nowy projekt i zaakceptuje wszystkie domyślne ustawienia. Możesz również uruchomić `npm init` i odpowiedzieć na wszystkie pytania.

Teraz możemy zainstalować node-sparkpost:

> npm install sparkpost --save

Po zainstalowaniu możesz zaimportować i utworzyć instancję klasy SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TWÓJ KLUCZ API')

Dobrą praktyką jest unikanie umieszczania klucza API w kodzie. Gorąco rekomendujemy przechowywanie go poza twoim kodem, więc skonfigurowaliśmy bibliotekę klienta, aby wykryła zmienną środowiskową SPARKPOST_API_KEY.

Zakładam, że masz zainstalowany Node.js. Ponieważ podążamy za harmonogramem wsparcia długoterminowego Node.js (LTS), będziesz musiał używać wersji 4 lub wyższej. Możesz sprawdzić, którą wersję używasz, za pomocą polecenia `node –version` w oknie terminala.

Stwórzmy nowy projekt npm. Jeśli już masz taki, możesz pominąć tę część.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

To stworzy nowy projekt i zaakceptuje wszystkie domyślne ustawienia. Możesz również uruchomić `npm init` i odpowiedzieć na wszystkie pytania.

Teraz możemy zainstalować node-sparkpost:

> npm install sparkpost --save

Po zainstalowaniu możesz zaimportować i utworzyć instancję klasy SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TWÓJ KLUCZ API')

Dobrą praktyką jest unikanie umieszczania klucza API w kodzie. Gorąco rekomendujemy przechowywanie go poza twoim kodem, więc skonfigurowaliśmy bibliotekę klienta, aby wykryła zmienną środowiskową SPARKPOST_API_KEY.

Wysyłanie Email

Teraz, gdy masz instancję SparkPost, jesteś gotowy do wysyłania. Dostępnych jest całkiem sporo opcji wysyłania, ale zacznijmy od prostego przykładu. Oto jak wysłać e-mail do pojedynczego odbiorcy, określając zawartość inline:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Uwaga: Ten przykład używa Promises, ale nie martw się. My również obsługujemy funkcje zwrotne.

W przypadku aplikacji korporacyjnych wymagających kompleksowego zarządzania e-mailami, deweloperzy mogą również rozważyć budowę systemów archiwizacji e-mail w celu obsługi wymagań dotyczących przechowywania i zgodności.

Dostępnych jest więcej opcji dla transmisji, w tym możliwość określenia przechowywanych szablonów lub list odbiorców, cc i bcc, dodawanie załączników, określanie kampanii, używanie danych zastępczych i wiele więcej. Zapoznaj się z przykładami, dokumentacją zasobu Transmissions, oraz dokumentacją API Transmissions dla więcej informacji.

Teraz, gdy masz instancję SparkPost, jesteś gotowy do wysyłania. Dostępnych jest całkiem sporo opcji wysyłania, ale zacznijmy od prostego przykładu. Oto jak wysłać e-mail do pojedynczego odbiorcy, określając zawartość inline:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Uwaga: Ten przykład używa Promises, ale nie martw się. My również obsługujemy funkcje zwrotne.

W przypadku aplikacji korporacyjnych wymagających kompleksowego zarządzania e-mailami, deweloperzy mogą również rozważyć budowę systemów archiwizacji e-mail w celu obsługi wymagań dotyczących przechowywania i zgodności.

Dostępnych jest więcej opcji dla transmisji, w tym możliwość określenia przechowywanych szablonów lub list odbiorców, cc i bcc, dodawanie załączników, określanie kampanii, używanie danych zastępczych i wiele więcej. Zapoznaj się z przykładami, dokumentacją zasobu Transmissions, oraz dokumentacją API Transmissions dla więcej informacji.

Teraz, gdy masz instancję SparkPost, jesteś gotowy do wysyłania. Dostępnych jest całkiem sporo opcji wysyłania, ale zacznijmy od prostego przykładu. Oto jak wysłać e-mail do pojedynczego odbiorcy, określając zawartość inline:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Uwaga: Ten przykład używa Promises, ale nie martw się. My również obsługujemy funkcje zwrotne.

W przypadku aplikacji korporacyjnych wymagających kompleksowego zarządzania e-mailami, deweloperzy mogą również rozważyć budowę systemów archiwizacji e-mail w celu obsługi wymagań dotyczących przechowywania i zgodności.

Dostępnych jest więcej opcji dla transmisji, w tym możliwość określenia przechowywanych szablonów lub list odbiorców, cc i bcc, dodawanie załączników, określanie kampanii, używanie danych zastępczych i wiele więcej. Zapoznaj się z przykładami, dokumentacją zasobu Transmissions, oraz dokumentacją API Transmissions dla więcej informacji.

Bonus: Wysyłanie Email z Nodemailer

Nodemailer jest popularną biblioteką dla Node.js, która sprawia, że wysyłanie e-maili jest „proste jak ciasto.” Dla tych z Was, którzy decydują się na użycie tej biblioteki, stworzyliśmy transport SparkPost dla Nodemailer. Będziesz musiał zainstalować pakiety nodemailer i nodemailer-sparkpost-transport w swoim projekcie.

> npm install nodemailer nodemailer-sparkpost-transport --save

Teraz możesz utworzyć instancję transportu nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Zauważ, jak odczytuję klucz API z zmiennej środowiskowej. Nadal obowiązuje najlepsza praktyka, aby nigdy nie umieszczać go bezpośrednio w kodzie.

Istnieje kilka opcji, które można przekazać do transportu SparkPost, jak identyfikator kampanii oraz czy wiadomość jest transakcyjna. Zajrzyj do README.md po wszystkie opcje.

Oto, jak można wysłać tę samą wiadomość powyżej używając Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Nodemailer jest popularną biblioteką dla Node.js, która sprawia, że wysyłanie e-maili jest „proste jak ciasto.” Dla tych z Was, którzy decydują się na użycie tej biblioteki, stworzyliśmy transport SparkPost dla Nodemailer. Będziesz musiał zainstalować pakiety nodemailer i nodemailer-sparkpost-transport w swoim projekcie.

> npm install nodemailer nodemailer-sparkpost-transport --save

Teraz możesz utworzyć instancję transportu nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Zauważ, jak odczytuję klucz API z zmiennej środowiskowej. Nadal obowiązuje najlepsza praktyka, aby nigdy nie umieszczać go bezpośrednio w kodzie.

Istnieje kilka opcji, które można przekazać do transportu SparkPost, jak identyfikator kampanii oraz czy wiadomość jest transakcyjna. Zajrzyj do README.md po wszystkie opcje.

Oto, jak można wysłać tę samą wiadomość powyżej używając Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Nodemailer jest popularną biblioteką dla Node.js, która sprawia, że wysyłanie e-maili jest „proste jak ciasto.” Dla tych z Was, którzy decydują się na użycie tej biblioteki, stworzyliśmy transport SparkPost dla Nodemailer. Będziesz musiał zainstalować pakiety nodemailer i nodemailer-sparkpost-transport w swoim projekcie.

> npm install nodemailer nodemailer-sparkpost-transport --save

Teraz możesz utworzyć instancję transportu nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Zauważ, jak odczytuję klucz API z zmiennej środowiskowej. Nadal obowiązuje najlepsza praktyka, aby nigdy nie umieszczać go bezpośrednio w kodzie.

Istnieje kilka opcji, które można przekazać do transportu SparkPost, jak identyfikator kampanii oraz czy wiadomość jest transakcyjna. Zajrzyj do README.md po wszystkie opcje.

Oto, jak można wysłać tę samą wiadomość powyżej używając Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Podwójny Bonus: Wysyłanie Email z notif.me

Wszyscy wiemy, że email jest królem komunikacji, ale czasami chcesz móc dotrzeć do ludzi za pomocą wielu kanałów. notif.me to biblioteka Node.js do wysyłania wszelkiego rodzaju wiadomości transakcyjnych. Niezależnie od tego, czy chcesz wysłać email, sms, push, czy webpush, możesz to zrobić z łatwością. Posiada również wbudowane strategie upadku i round robin dla wielu dostawców. Niedawno współpracowaliśmy z twórcami, aby zbudować dostawcę SparkPost. Będziesz musiał zainstalować pakiet `notifme-sdk` w swoim projekcie.

> npm install notifme-sdk --save

Możesz teraz utworzyć instancję notifme z dostawcą SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Ponownie, pobieramy klucz API z zmiennej środowiskowej. Powiedzieliśmy to trzy razy — to jest tak ważne. 🙂

Teraz powtórzmy ten sam przykład, tym razem używając notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Jest naprawdę łatwy w użyciu i polecam zapoznanie się z innymi funkcjami.

Wszyscy wiemy, że email jest królem komunikacji, ale czasami chcesz móc dotrzeć do ludzi za pomocą wielu kanałów. notif.me to biblioteka Node.js do wysyłania wszelkiego rodzaju wiadomości transakcyjnych. Niezależnie od tego, czy chcesz wysłać email, sms, push, czy webpush, możesz to zrobić z łatwością. Posiada również wbudowane strategie upadku i round robin dla wielu dostawców. Niedawno współpracowaliśmy z twórcami, aby zbudować dostawcę SparkPost. Będziesz musiał zainstalować pakiet `notifme-sdk` w swoim projekcie.

> npm install notifme-sdk --save

Możesz teraz utworzyć instancję notifme z dostawcą SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Ponownie, pobieramy klucz API z zmiennej środowiskowej. Powiedzieliśmy to trzy razy — to jest tak ważne. 🙂

Teraz powtórzmy ten sam przykład, tym razem używając notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Jest naprawdę łatwy w użyciu i polecam zapoznanie się z innymi funkcjami.

Wszyscy wiemy, że email jest królem komunikacji, ale czasami chcesz móc dotrzeć do ludzi za pomocą wielu kanałów. notif.me to biblioteka Node.js do wysyłania wszelkiego rodzaju wiadomości transakcyjnych. Niezależnie od tego, czy chcesz wysłać email, sms, push, czy webpush, możesz to zrobić z łatwością. Posiada również wbudowane strategie upadku i round robin dla wielu dostawców. Niedawno współpracowaliśmy z twórcami, aby zbudować dostawcę SparkPost. Będziesz musiał zainstalować pakiet `notifme-sdk` w swoim projekcie.

> npm install notifme-sdk --save

Możesz teraz utworzyć instancję notifme z dostawcą SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Ponownie, pobieramy klucz API z zmiennej środowiskowej. Powiedzieliśmy to trzy razy — to jest tak ważne. 🙂

Teraz powtórzmy ten sam przykład, tym razem używając notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Jest naprawdę łatwy w użyciu i polecam zapoznanie się z innymi funkcjami.

Nie ma złego sposobu na Node

Jeśli chodzi o wysyłanie e-maili za pomocą Node.js, masz wiele opcji. Pracowaliśmy ciężko, aby uczynić to jak najprostszym.

Jeśli chodzi o wysyłanie e-maili za pomocą Node.js, masz wiele opcji. Pracowaliśmy ciężko, aby uczynić to jak najprostszym.

Jeśli chodzi o wysyłanie e-maili za pomocą Node.js, masz wiele opcji. Pracowaliśmy ciężko, aby uczynić to jak najprostszym.

Inne wiadomości

Czytaj więcej z tej kategorii

A person is standing at a desk while typing on a laptop.

Kompletna, natywna dla AI platforma, która rośnie wraz z Twoim biznesem.

A person is standing at a desk while typing on a laptop.

Kompletna, natywna dla AI platforma, która rośnie wraz z Twoim biznesem.