­čž▒ Nodejs Temelleri

Nodejs'i kullanma

Paket Y├Ânetimi

Paket kurulumlar─▒ npm komutu yard─▒m─▒yla yap─▒l─▒r.

Paketler ve A├ž─▒klamalar─▒

Paketler NPM ile npm install <paket> komutu yard─▒m─▒yla indirilir.

  • Normal kurulum: ├ľn ek gerektirmez

  • Global kurulum: -g ├Ân eki ile yap─▒l─▒r

  • Dev kurulum: --save-dev son eki ile yap─▒l─▒r

Normal Paketler

Paket

A├ž─▒klama

Ba─člant─▒lar

nodemon

Hata ve de─či┼čiklik durumunda otomatik derleme

ÔÇő

exporess

Sunucu i┼člemlerinnde kolayl─▒k sa─člar

ÔÇő

colors

Consola renkli ├ž─▒kt─▒lar yazma

ÔÇő

faker

Rastgele veri olu┼čturmay─▒ sa─člar

ÔÇő­čîÉ ­čĹü ­čôąÔÇő

Geli┼čtirici Paketleri

Paket

A├ž─▒klama

nodemon

Hata ve de─či┼čiklik durumunda otomatik derleme

NPM Kullan─▒m Yap─▒s─▒

npm <operasyon> <varsa_├Ân_ek> <paket> <varsa_son_ek>
  • <operasyon> install, remove ...

  • <varsa_├Ân_ek> -g ...

  • <paket> nodemon, colors, express ...

  • <varsa_son_ek> --save-dev ...

Paket Kurulum ├ľrnekleri

npm install nodemon --save-dev
npm install -g babel-cli
npm install colors

Nodejs Dependency Prefixes

<prefix><dependency_version>

  • ~ This version

  • ^ latest version

Ortam De─či┼čkenleri

Ortam ├Ân ayarlar─▒ scriptler ├žal─▒┼čt─▒r─▒lmadan ├Ânce girilen komutlard─▒r.

ÔÇőHeroku gibi sitelerde ├╝retim modu ├Ân eki uygulama ├žal─▒┼čt─▒r─▒lmadan uygulan─▒r.

Ortam De─či┼čkenleri A├ž─▒klamalar─▒

Kod i├žerisinde process.env.<de─či┼čken> ┼čeklinde eri┼čilir.

De─či┼čken

Kullan─▒m

A├ž─▒klama

DEBUG

set DEBUG=<dosya ismi>

Debug modunu belli dosyalar i├žin a├žma

NODE_ENV

set NODE_ENV=<├Âzel_mod>

├ľzel modlarda projeyi ├žal─▒┼čt─▒rma

PORT

set PORT=<port>

├çal─▒┼čt─▒ralacak port

  • <dosya_ismi> ├Ârnekleri:

    • * ile her ┼čeyi

    • lib\* ile lib'le ba┼člayan her┼čeyi

    • index ile index.js dosyas─▒n─▒

  • <├Âzel_mod> ├Ârnekleri:

    • stagging Normal iskelet

    • production ├ťretim iskeleti

  • <port> ├Ârnekleri:

    • 3000 Normal port

    • 5000 ├ťretim portu

De─či┼čken ├Ârnekleri keyfidir.

Ortam De─či┼čkenleri Kullan─▒m─▒

set NODE_ENV=production & set DEBUG=* & npm run-script dev

Herokunun Kulland─▒─č─▒ Ortam De─či┼čkenleri

├ťcretsiz nodejs sunucular─▒ndan biri olan heroku'nun hali haz─▒rda sundu─ču ortam de─či┼čkenler:

De─či┼čken

De─čeri

Tipi

PORT

Rastgele

number

NODE_ENV

"production"

string

Nodejs ES6 Yap─▒s─▒n─▒ Kullanma

Nodejs'de ES6 yap─▒s─▒ babel yard─▒mc─▒s─▒ ile kullanabilinmektedir.

Taray─▒c─▒ es5 yap─▒s─▒n─▒ kullanmaktad─▒r.

Babel Paketleri

Paket

A├ž─▒klama

Kurulum

babel-cli

Konsoldan "babel" ile ba┼člayan komutlara izin verir

Global

babel-register

NPM ├╝zerinden require ile babel mod├╝llerine eri┼čimi sa─člar

Dev

babel-preset-env

ES5'i derlemek i├žin kullan─▒l─▒r

Dev

  • Global kurulum: -g ├Ân eki ile yap─▒l─▒r

  • Dev kurulum: --save-dev son eki ile yap─▒l─▒r

Babel Paketlerinin Kurulumu

Global olarak babel consol komutlar─▒n─▒ ve i┼čleyicisini ekler.

npm install -g babel-cli
npm install babel-register babel-preset-env --save-dev

babel-cli global olarak kurulmazsa babel komutlar─▒ her yerde tan─▒nmaz.

Babel Yap─▒land─▒rmas─▒

Bu ad─▒m ve sonras─▒ndaki i┼člemler projenin (index.js) dizininde yap─▒lmal─▒d─▒r

Babel Derleyici Yap─▒land─▒rmas─▒n─▒ Olu┼čturma

Babelrc dosyas─▒ belli ayarlarla olu┼čturma

@echo {"presets":[["env",{"targets":{"edge":"17","firefox":"60","chrome":"67","safari":"11.1","node":"current"}}]]} > .babelrc

targets iste─če ba─čl─▒d─▒r. Hedeflenen taray─▒c─▒lar─▒ g├Âsterir.

Babel Derleme Ara├žlar─▒n─▒ Yap─▒land─▒rma

Tools dizini olu┼čturup, i├žindeki dosyaya derleme parametrelerini yaz─▒yoruz.

mkdir tools & @echo require("babel-register") > tools/dev && @echo require("./../index.js") >> tools/dev

Not: Bu k─▒s─▒mdaki tools/dev ile di─čer ad─▒mdaki i┼člemler yap─▒lmaktad─▒r

Packege.json Olu┼čturma

npm init

Bu i┼člem olu┼čturulmas─▒ istenen dizinde yap─▒lmal─▒d─▒r.

Package.json Scriptlerini Olu┼čturma

package.json dosyas─▒ i├žerisindeki script k─▒sm─▒nda alttakiler eklenir.

"scripts": {
"test": "node test",
"start": "node dist/index.js",
"dev": "set DEBUG=* & node tools/dev",
"build": "mkdir dist & babel *.js lib/**/*.js -s -d dist & xcopy public dist\\public /s /i /e /y",
"build:db": "mkdir dist & babel *.js lib/**/*.js -s -d dist & xcopy public dist\\public /s /i /e /y & xcopy database dist\\database /s /i /e /y",
"build:start": "npm run-script build & npm run-script start",
"clean": "xcopy dist\\database database /s /i /e /y & rd /s /q dist",
"clean:all": "rd /s /q dist",
"rebuild": "npm run-script clean & npm run-script build",
"rebuild:db": "npm run-script clean & npm run-script build:db"
}

Build Script Yap─▒s─▒

  • mkdir dist Dist adl─▒ klas├Âr olu┼čturulur

  • babel [her bir js dosyas─▒n─▒n yolu] -s -d dist Javasciprt dosyalar─▒ es5 tipinde d├╝zenlenip dist i├žine at─▒l─▒r

  • xcopy [klas├Âr] dist\\[klas├Âr] /s /i /e /y Dinamik veri tutan klas├Ârler varsa dist i├žine kopyalan─▒r

Package.json i├žin Script A├ž─▒klamalar─▒

Script

A├ž─▒klama

test

Tan─▒mlanmam─▒┼čt─▒r

start

Dist klas├Âr├╝ndeki es5 format─▒ndaki index.js'i ├žal─▒┼čt─▒r─▒r. Build edilmeyi gerektirir

dev

Geli┼čtirici modunda ├žal─▒┼čt─▒r─▒r. Es6 tipineki kodlar babel arac─▒l─▒─č─▒ ile kullan─▒l─▒r

build

Dist klas├Âr├╝ i├žine es6 tipindeki kodlar─▒n es5'i olu┼čturulur. Start scripti i├žin gerekli i┼člemdir

build:db

Veri taban─▒'n─▒ da dahil ederek build i┼člemini yapar

build:start

Build i┼čleminden sonra start i┼člemini ba┼člat─▒r

clean

Veri taban─▒n─▒ depolayarak dist klas├Âr├╝n├╝ temizler

clean:all

Veri taban─▒ dahil t├╝m dist dizinini temizler

rebuild

Eski dist klas├Âr├╝n├╝ kald─▒r─▒r, yenisi olu┼čturur

rebuild:db

Eski dist klas├Âr├╝n├╝ veritaban─▒n─▒ depolayarak kald─▒r─▒r, yenisi olu┼čturur

Program─▒ Derleme ─░┼člemi

Package.json dosyas─▒ndaki scriptleri ├žal─▒┼čt─▒rma

npm run-script [script]
  • [script] scripts i├žindeki isimler; start, dev, build

VsCode i├žin Debug Ayarlar─▒

A├ž─▒klama videosu ve metni i├žin ├╝zerlerine t─▒klayabilirsin.

## Kod Bankas─▒
ÔÇő
### Fonksiyon ─░smi, Sat─▒r─▒ ve Dosya Ad─▒ Alma
ÔÇő
```js
export function _getCallerInfo() {
const err = new Error();
let index = 3;
let line = err.stack.split("\n")[index];
let functionName = line.split(" at ")[1].split(" ")[0];
ÔÇő
while (functionName.includes(`C:/`)) {
index++;
line = err.stack.split("\n")[index];
functionName = line.split(" at ")[1].split(" ")[0];
}
ÔÇő
let callerInfo = line.split(`${projectName}/`);
callerInfo = callerInfo[callerInfo.length - 1];
ÔÇő
const filename = callerInfo.split(".")[0];
const lineInfos = callerInfo.replace(filename + ".js:", "").replace(")", "");
return `${filename}:${functionName}:${lineInfos}`; // lib\server:func(12:21)
}

Harici Ba─člant─▒lar