1. Вступительный анализ
Привет всем, сегодняшняя статья в основном фокусируется на серии анализа исходного кода для промежуточного программного обеспечения «Connect» и связанного вспомогательного промежуточного программного обеспечения. Я думаю, что все прочитали предыдущую статью.
В этой статье представлен метод использования и цель, и эта статья также выходит за рамки моего собственного интереса, так что читатели могут иметь более глубокое понимание этого. Если на этапе анализа есть неверность, пожалуйста, дайте мне несколько советов.
хорошо! Давайте доберемся до старых правил. Давайте сначала рассмотрим пример и используем анализ введения в комбинации следующим образом:
Кода -копия выглядит следующим образом:
var connect = require ("./ lib/connect");
var app = connect.createserver ();
app.use (connect.static (__ dirname + "/public", {
Максаж: 0
}));
app.use (function (req, res, next) {
res.end («Привет, мир!»);
})
.listen (8888);
2. Анализ линии по линии:
(1), первая строка, введите модуль «Connect», создайте сервер HTTP | HTTPS через Connect и предоставьте все функции HTTP -сервера.
Промежуточное программное обеспечение «Connect» позволяет создавать «серверы» различными способами.
Кода -копия выглядит следующим образом:
var server = connect.createserver (
connect.logger ()
, connect.static (__ dirname + '/public')
); // 1
var app = connect ();
app.use (function (req, res) {
res.end ("Привет, Nobita!/n");
}). Слушайте (8888); // 2
Итак, как это происходит, посмотрите на исходный код:
Кода -копия выглядит следующим образом:
exports = module.exports = createServer;
exports.createserver = createServer;
Установите «CreateServer» на глобальном «экспорте», затем расширяйте атрибут «Createserver» и снова установите его, цель состоит в том, чтобы быть совместимой с родной формой письма.
Цель создания различных способов была достигнута. Это также идея, которую каждый может учиться в своем ежедневном развитии.
(2), давайте посмотрим на вторую строку "Connect.createserver". Что он сделал, посмотрите на исходный код ниже:
Кода -копия выглядит следующим образом:
var httpserver = require ('./ http'). Сервер,
Httpsserver = require ('./ https'). Server;
функция createServer () {
if ('object' == typeof Arguments [0]) {
вернуть новый httpsserver (аргументы [0], array.prototype.slice.call (аргументы, 1));
} еще {
вернуть новый httpserver (array.prototype.slice.call (аргументы));
}
};
«Httpsserver» и «httpserver» в основном одинаковы, это просто метод HTTPS, инкапсулированный «httpsserver». Когда «CreateServer» также может быть передана серия промежуточного программного обеспечения, которое совпадает с последующим введением, но может быть связана только с корневым каталогом.
(3), продолжайте смотреть на третью строку "app.use ()", что он сделал, посмотрите на исходный код следующим образом:
Кода -копия выглядит следующим образом:
var server = exports.server = function httpserver (промежуточное программное обеспечение) {
this.stack = [];
Middleware.foreach (function (fn) {
this.use (fn);
}, этот);
http.server.call (this, this.handle);
};
/**
* Унаследовать от `http.server.prototype`.
*/
Server.prototype .__ Proto__ = http.server.prototype;
«Connect» - это прототип, унаследованный от «HTTP Server», который заменит requestListener сервера на промежуточное программное обеспечение, которое вы используете.
Используйте «Connect.use (маршрут, ручка)», чтобы добавить промежуточное программное обеспечение к каждому маршруту. «Руководство» этого промежуточного программного обеспечения будет связано с «маршрутом» и сохраняется в «стеке». Каждый раз, когда есть запрос «запрос»,
Пройдя эту кучу, найдите «ручку», соответствующую «маршруту» и выполните «ручку». Если «ручка» наконец вызывает «Next ()», он будет продолжать искать и выполнять следующее подходящее «Руководство».
Инкапсулируя «ручку», легко добавить больше «промежуточного программного обеспечения» к «подключению».
(4), Наконец, посмотрите на «Слушай (8888)», какую работу это делает?
Это очень просто. Унаследовав основной объект сервера, он дает функцию «прослушивать» для прослушивания конкретных портов.
Server.prototype .__ Proto__ = http.server.prototype
Ниже приведен весь исходный код "connect.js". Чтобы сохранить пространство, все комментарии были удалены, как показано на рисунке ниже:
Добавить:
Кода -копия выглядит следующим образом:
fs.readdirsync (__ dirname + '/middleware'). foreach (function (filename) {
if (//.js$/.test(filename)) {
var name = filename.substr (0, fileName.lastIndexof ('.'));
exports.middleware .__ Definegetter __ (name, function () {
return require ('./ Middleware/' + name);
});
}
});
Экспорт «Middleware» объекта «экспорт», а затем перециры в объект «промежуточное программное обеспечение» - это метод, который непосредственно загружает модуль файла .js в папке «промежуточное программное обеспечение».
Использование: «exports.utils.merge (Exports, Exports.middleware)», чтобы непосредственно экспортировать методы в промежуточном программном обеспечении.
Три, давайте обобфрим:
(1) Понимание намерения проектирования исходного кода поможет максимизировать прибыль в приложении.
(2) При рассмотрении исходного кода понимайте процесс, а затем вычитайте грамматические детали.
(3) Учитесь на умных идеях реализации в исходном коде, но не переходите дизайн, дизайн ради дизайна.
(4) Продолжайте анализировать соответствующее промежуточное программное обеспечение завтра и продолжайте обновляться. Полем Полем Полем Полем Полем