ifade = gerekli('ekspres')

Feb 01 2023
Ben bu açıklamanın perde arkasında neler döndüğünü anlamaya çalışırken süreç böyle işliyor. Şimdi kutuya bir göz atalım ;) ilk önce request'te gerçekte neyin ifade edildiğini öğrenerek başlayalım.
Unsplash'ta Kelli McClintock'un fotoğrafı

Ben bu açıklamanın perde arkasında neler döndüğünü anlamaya çalışırken süreç böyle işliyor. Şimdi kutuya bir göz atalım ;)

önce, request içinde gerçekte neyin ifade edildiğini öğrenerek başlayalım .

express, şunları kullandığınızda yüklediğiniz çerçeve paketidir:

npm istall express

Burada gördüğünüz gibi, bazı tanımlı fonksiyonlarımız ve başka şeyler var ve orada fonksiyonlar da dahil olmak üzere bazı şeyleri dışa aktarıyoruz.

İhracatın ne demek olduğunu bilmiyor musunuz?

Burada ihracat yapmak, gerçek hayatta mal ihraç etmek gibidir, sadece malları orada kullanabilmek için başka bir yere taşıyorsunuz;

Tamam?

JS'de, işlevleri, özellikleri ve diğer öğeleri aşağıdakileri kullanarak başka bir dosyaya aktarabilirsiniz:

module.exports = (stuff you want to export)

a.js dosyasında şu sayHi işlevine sahibiz:

// a.js

const sayHi = () => { return 'Hi' }

Yukarıda belirttiğimiz satırı ekleyerek:

// a.js

module.exports = sayHi

// a.js

const sayHi = () => { return 'Hi' }
module.exports = sayHi

Hayır, kullanabilmek için ithal etmeliyiz! bu mantık.

ama o zaman nasıl?

Aşağıdaki satırı kullanarak. Etkileyici: Bu modüle ihtiyacımız var, bu yüzden ona ihtiyacımız var.

require(module location);

// b.js

const sayHi = require('./a.js');

Artık fonksiyona bir referansımız var ve referansa () ekleyerek onu çağırabiliriz;

// b.js
const sayHi = require('./a.js');
console.log( sayHi() ) //output: Hi

bunu görebiliriz:

//express.js module

exports = module.exports = createApplication;

//express.js module 

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

export burada yalnızca module.exports'a bir referanstır, böylece module.exports.json demek yerine bu kısayolu doğrudan export.json yapabilirsiniz.

Peki?

sunucumuzu oluşturduğumuz ve biraz yönlendirme eklediğimiz app.js dosyasına gidelim , şimdi sadece ilk satırı görmemiz gerekiyor:

// app.js

const express = require('express')

giriş yaparak deneyelim:

// app.js

const express = require('express')

console.log(express)


[Function: createApplication] {
 application: {
 init: [Function: init],
 defaultConfiguration: [Function: defaultConfiguration],
 lazyrouter: [Function: lazyrouter],
 handle: [Function: handle],
 use: [Function: use],
 route: [Function: route],
 engine: [Function: engine],
 param: [Function: param],
 set: [Function: set],
 path: [Function: path],
 enabled: [Function: enabled],
 disabled: [Function: disabled],
 enable: [Function: enable],
 disable: [Function: disable],
 acl: [Function (anonymous)],
 bind: [Function (anonymous)],
 checkout: [Function (anonymous)],
 connect: [Function (anonymous)],
 copy: [Function (anonymous)],
 delete: [Function (anonymous)],
 get: [Function (anonymous)],
 head: [Function (anonymous)],
 link: [Function (anonymous)],
 lock: [Function (anonymous)],
 'm-search': [Function (anonymous)],
 merge: [Function (anonymous)],
 mkactivity: [Function (anonymous)],
 mkcalendar: [Function (anonymous)],
 mkcol: [Function (anonymous)],
 move: [Function (anonymous)],
 notify: [Function (anonymous)],
 options: [Function (anonymous)],
 patch: [Function (anonymous)],
 post: [Function (anonymous)],
 propfind: [Function (anonymous)],
 proppatch: [Function (anonymous)],
 purge: [Function (anonymous)],
 put: [Function (anonymous)],
 rebind: [Function (anonymous)],
 report: [Function (anonymous)],
 search: [Function (anonymous)],
 source: [Function (anonymous)],
 subscribe: [Function (anonymous)],
 trace: [Function (anonymous)],
 unbind: [Function (anonymous)],
 unlink: [Function (anonymous)],
 unlock: [Function (anonymous)],
 unsubscribe: [Function (anonymous)],
 all: [Function: all],
 del: [Function (anonymous)],
 render: [Function: render],
 listen: [Function: listen]
 },
 request: IncomingMessage {
 header: [Function: header],
 get: [Function: header],
 accepts: [Function (anonymous)],
 acceptsEncodings: [Function (anonymous)],
 acceptsEncoding: [Function (anonymous)],
 acceptsCharsets: [Function (anonymous)],
 acceptsCharset: [Function (anonymous)],
 acceptsLanguages: [Function (anonymous)],
 acceptsLanguage: [Function (anonymous)],
 range: [Function: range],
 param: [Function: param],
 is: [Function: is],
 protocol: [Getter],
 secure: [Getter],
 ip: [Getter],
 ips: [Getter],
 subdomains: [Getter],
 path: [Getter],
 hostname: [Getter],
 host: [Getter],
 fresh: [Getter],
 stale: [Getter],
 xhr: [Getter]
 },
 response: ServerResponse {
 status: [Function: status],
 links: [Function (anonymous)],
 send: [Function: send],
 json: [Function: json],
 jsonp: [Function: jsonp],
 sendStatus: [Function: sendStatus],
 sendFile: [Function: sendFile],
 sendfile: [Function (anonymous)],
 download: [Function: download],
 type: [Function: contentType],
 contentType: [Function: contentType],
 format: [Function (anonymous)],
 attachment: [Function: attachment],
 append: [Function: append],
 header: [Function: header],
 set: [Function: header],
 get: [Function (anonymous)],
 clearCookie: [Function: clearCookie],
 cookie: [Function (anonymous)],
 location: [Function: location],
 redirect: [Function: redirect],
 vary: [Function (anonymous)],
 render: [Function: render]
 },
 Route: [Function: Route],
 Router: [Function (anonymous)] {
 param: [Function: param],
 handle: [Function: handle],
 process_params: [Function: process_params],
 use: [Function: use],
 route: [Function: route],
 acl: [Function (anonymous)],
 bind: [Function (anonymous)],
 checkout: [Function (anonymous)],
 connect: [Function (anonymous)],
 copy: [Function (anonymous)],
 delete: [Function (anonymous)],
 get: [Function (anonymous)],
 head: [Function (anonymous)],
 link: [Function (anonymous)],
 lock: [Function (anonymous)],
 'm-search': [Function (anonymous)],
 merge: [Function (anonymous)],
 mkactivity: [Function (anonymous)],
 mkcalendar: [Function (anonymous)],
 mkcol: [Function (anonymous)],
 move: [Function (anonymous)],
 notify: [Function (anonymous)],
 options: [Function (anonymous)],
 patch: [Function (anonymous)],
 post: [Function (anonymous)],
 propfind: [Function (anonymous)],
 proppatch: [Function (anonymous)],
 purge: [Function (anonymous)],
 put: [Function (anonymous)],
 rebind: [Function (anonymous)],
 report: [Function (anonymous)],
 search: [Function (anonymous)],
 source: [Function (anonymous)],
 subscribe: [Function (anonymous)],
 trace: [Function (anonymous)],
 unbind: [Function (anonymous)],
 unlink: [Function (anonymous)],
 unlock: [Function (anonymous)],
 unsubscribe: [Function (anonymous)],
 all: [Function (anonymous)]
 },
 json: [Function: json],
 query: [Function: query],
 raw: [Function: raw],
 static: [Function: serveStatic] {
 mime: Mime {
 types: [Object: null prototype],
 extensions: [Object: null prototype],
 default_type: 'application/octet-stream',
 Mime: [Function: Mime],
 charsets: [Object]
 }
 },
 text: [Function: text],
 urlencoded: [Function: urlencoded]
}

Bu createApplication, yani döndürülen şey aslında createApplication();

Ben anlamadan siz de benim gibi soruyor olabilirsiniz!

bunun gibi yukarıda gördüğümüz diğer ihracatlar nerede! :

// express.js module

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

peki burada neler oluyor?

Her şey JS'de davranan işlevlerle ilgili, Bir nesne gibi davranır;)

bunu kullandığınızda:

exports = module.exports = createApplication;

exports.static = require('serve-static');
exports.json = bodyParser.json
exports.query = require('./middleware/query');
exports.raw = bodyParser.raw

exports = module.exports = createApplication;

createApplication.static = require(‘serve-static’);

__

Bu pasaja bir göz atın ve aşağıdaki her satırda neyin açık eşdeğer olduğunu sorarak kendinizi test edin:

// app.js

const express = require('express')
const app = express();
app.use(express.static('public'))

bitti mi şimdi gidelim:

İlk satırda: diğer özellikleri içeren bir createApplication referansı döndüren ve bu referansı ifade sabitinde saklayan modüle ihtiyacımız vardı;

İkinci satırda: ifadeye () ekleyerek bu ifade işlevini çağırdık ve bu işlev (createApplication), app sabitinde sakladığımız app nesnesini döndürür.

Üçüncü satırda: Burada adlandırdığımız static function gibi bazı özelliklere sahip olan createApplication işlevini ifade eden ifade sabitini kullandık.

Şimdi, bitirdim…