экспресс = требуется('экспресс')

Feb 01 2023
Вот как работает процесс, когда я пытался понять, что происходит за кулисами этого заявления. Теперь давайте взглянем на коробку ;) давайте сначала узнаем, что на самом деле выражается в require.
Фото Келли МакКлинток на Unsplash

Вот как работает процесс, когда я пытался понять, что происходит за кулисами этого заявления. Теперь давайте посмотрим на коробку ;)

давайте сначала начнем с того, что узнаем, что на самом деле выражается в require .

Express — это пакет фреймворка, который вы установили при использовании:

npm istall express

Как видите, у нас есть некоторые определенные функции и другие вещи, а здесь мы экспортируем некоторые вещи, включая функции.

Вы не знаете, что подразумевается под экспортом?

Экспорт здесь похож на экспорт товаров в реальной жизни, вы просто перемещаете вещи в другое место, чтобы иметь возможность использовать их там;

Хорошо?

В JS вы можете экспортировать функции, свойства и другие вещи в другой файл, используя:

module.exports = (stuff you want to export)

В файле a.js у нас есть эта функция sayHi:

// a.js

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

Добавив ту строку, которую мы указали выше, а именно:

// a.js

module.exports = sayHi

// a.js

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

Нет, мы должны импортировать его, чтобы иметь возможность использовать! это логика.

но как тогда?

Используя строку ниже. Это выразительно: нам нужен этот модуль, поэтому он нам нужен.

require(module location);

// b.js

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

Теперь у нас есть ссылка на функцию, и мы можем вызвать ее, добавив () к ссылке;

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

мы можем видеть это:

//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

exports здесь — это просто ссылка на module.exports, так что вместо того, чтобы говорить module.exports.json, вы можете просто использовать этот ярлык напрямую exports.json.

Хорошо?

давайте перейдем к файлу app.js , где мы создали наш сервер и добавили маршрутизацию, теперь нам нужно увидеть только первую строку:

// app.js

const express = require('express')

давайте попробуем зарегистрировать это:

// 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]
}

Это createApplication, так что на самом деле была возвращена ссылка на createApplication();

Вы можете спрашивать, как и я, прежде чем я понял!

где другие экспорты, которые мы видели выше, как это! :

// express.js module

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

так что здесь происходит?

Все дело в функциях, ведущих себя в JS. Он ведет себя как объект;)

когда вы использовали это:

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’);

__

Взгляните на этот фрагмент и проверьте себя, задав экспресс-эквивалент в каждой строке ниже:

// app.js

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

законченный? теперь пойдем:

В первой строке: нам нужен модуль, который возвращает ссылку createApplication, которая включает в себя другие свойства, и сохраняет эту ссылку в экспресс-константе;

Во второй строке: мы вызвали эту экспресс-функцию, добавив () к ссылочному экспрессу, и эта функция (createApplication) возвращает объект приложения, который мы сохранили в константе приложения.

В третьей строке: мы использовали экспресс-константу, которая ссылается на функцию createApplication, которая имеет некоторые свойства, такие как статическая функция, которую мы вызвали здесь.

Теперь я закончил…