Что интервьюер спрашивает вас об узле (основы)

внешний интерфейс

Frontier: Источник статьи в том, что друг Шу Цзяна был прав в некоторых позициях в недавнем интервью.nodeТребования к мастерству ",КонечноnodeОн постепенно изменился с «плюсов», набранных многими компаниями, на «сильные показатели».Причина «паники» не что иное, как то, что в проектах обычно не нужно использовать или меньше использовать узлы, плюс наше поглощение знаний ,большинство из них фрагменты Знания сращены воедино, и отсутствует полное и систематическое прочесывание.Воспользуйтесь этой возможностью, чтобы реорганизовать его.Конечно, вам все равно нужно участвовать в реальном бою.Эта статья основная статья.

1. Перекус перед едой 🥧

👨Вопрос: Deno в последнее время очень популярен, заменит ли он ноду, у ноды нет будущего?

Не паникуйте, Node по-прежнему является самой популярной средой выполнения JavaScript на стороне сервера в сообществе.Появление Deno на самом деле связано с улучшением текущего Node (нового колеса), включая встроенную поддержку TS, безопасность, поддержку браузера ES Module. модули и другие функции. Ничего не меняется.Хотя с Deno, Node.js может и не понадобиться в будущем, но новые вещи всегда нужно выводить и тестировать.Поэтому Node сложно заменить за короткое время.Опирается на сильное сообщество

Для получения дополнительной информации о Deno вы можете прочитать

2. Ужин 🍔

Поговорите с вами о некоторых базовых знаниях, ответив на некоторые общие вопросы об узлах.

2.1 Как узел получает параметры из командной строки

ответ:process.argv. process — это глобальная переменная, которая предоставляет информацию о текущем процессе Node.js, а свойство process.argv возвращает массив, информация в массиве включает аргументы командной строки при запуске процесса Node.js.

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

Разработка: зачем сращивать (2)? Посмотрим на значение других параметров

  • process.argv[0] : возвращает абсолютный путь, по которому находится исполняемый файл, запустивший процесс Node.js.
  • process.argv[1] : путь к выполняющемуся в данный момент файлу JavaScript.
  • process.argv.splice(2): после удаления первых двух оставшиеся элементы являются другими параметрами командной строки (то есть нашей пользовательской частью).

Насчет получения параметров из командной строки, вы также можете комбинироватьcommanderизcommander.parse(process.argv);

2.2 Каковы соответствующие пути к файлам для узла?

Ответ таков: пути к файлам в Node имеют__dirname, __filename, process.cwd(), ./ 或者 ../В следующем примере показана разница между этими путями к файлам.

Давайте посмотрим на структуру каталога, в котором мы сейчас работаем.

KSDK/
    -src/ 
        -test.js

Напишите следующий код в test.js👇Затем запустите его под src и KSDK соответственно, каков результат?

  • Запустите в каталоге src
  • Запустить в каталоге KSDK

В сравнении видно, что изменились только два последних, и можно сделать следующие выводы 🚀

  • __dirname: всегда возвращает абсолютный путь к папке, в которой находится исполняемый js
  • __filename: всегда возвращает абсолютный путь к выполненному js
  • process.cwd(): всегда возвращает абсолютный путь к папке, в которой была запущена команда node.

2.3 Что представляют собой API пути, связанные с узлом?

Ответ: Модуль path предоставляет некоторые утилиты для работы с путями к файлам и каталогам.path.dirname,path.join,path.resolveпосмотреть другие документыPath API

  • path.dirname(): возвращает имя каталога пути
  • path.join(): объединить все заданные фрагменты пути вместе, затем нормализовать полученный путь.
  • path.resolve(): метод анализирует последовательность путей или фрагментов пути в абсолютный путь, анализируемый как абсолютный путь относительно текущего каталога, эквивалентный команде cd.

Мы используем простую демонстрацию, чтобы отличить

Мы виделиpath.join(__dirname, '../lib/common.js')а такжеpath.resolve(__dirname, '../lib/common.js')Возвращаемые результаты одинаковы, можно ли их заменить друг другом? Вы смотрите на следующий пример👇, может быть вам будет понятнее

Путь по-прежнему является путем, показанным выше.

  • присоединиться, чтобы соединить каждый сегмент пути вместе, разрешить поставитькак корневой каталог
path.join('/a', '/b') // '/a/b'
path.resolve('/a', '/b') //'/b'
  • присоединиться к полям соединения напрямую, разрешить - проанализировать путь и вернуться
path.join("a","b")  // "a/b"
path.resolve("a", "b") // "/Users/tree/Documents/infrastructure/KSDK/src/a/b"

2.4 Как сделать чтение файла узла?

Ответ: API, предоставляемый модулем файловой системы fs, также является одним из важных модулей в узле.Модуль fs в основном используется для таких операций, как чтение, запись, перемещение, копирование, удаление и переименование файлов.

через простое переименование APIrenameИспользуется, используется в строительных лесах до

⏰Следует отметить, что при использовании require('fs') для загрузки модуля fs все методы в модуле fs имеют две формы: синхронную и асинхронную. Переименование, которое мы только что показали, является асинхронным вызовом метода, потому что в загруженном процессе , Следует использовать асинхронный метод.Синхронная версия заблокирует весь процесс (остановит все соединения).Конечно, синхронный метод, соответствующий fs.rename,fs.renameSync

Давайте посмотрим на демонстрацию метода синхронизации, чтобы определить, существует ли файл

Еще один момент, который следует отметить, заключается в том, что независимо от синхронизации или асинхронности попытайтесь соответствующим образом обработать выброшенное исключение.

2.5 Для чего используется модуль URL узла?

Ответ: Струнный анализ, URL-композиция и другие функции, используемые для URL, в основном в том числе следующие API.url.parse(),url.format()

  • url.parse: может анализировать строку URL и возвращать объект URL.
  • url.format: Программируйте объект входящего URL к строке URL и возврат

кurl.parseНапример:

разобрать результат

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'baidu.com:8080',
  port: '8080',
  hostname: 'baidu.com',
  hash: '#node',
  search: '?query=js',
  query: 'query=js',
  pathname: '/test/h',
  path: '/test/h?query=js',
  href: 'http://baidu.com:8080/test/h?query=js#node'
}

2.6 Чем служба создания http-модуля узла отличается от фреймворков Express или Koa?

Ответ таков: Express — это фреймворк на стороне сервера. Фреймворк просто инкапсулирует http-модуль узла. Express поддерживает собственный метод написания узла. Express не только инкапсулирует сервер, но также инкапсулирует такие функции, как промежуточное ПО и маршрутизация, чтобы облегчить разработка веб-серверов, другими словами экспресс = модуль http + промежуточное ПО + маршрутизация

Посмотри сначалаhttpКак модули реализуют простой сервер

运行3000端口Вы можете получить доступ к браузеру, чтобы распечататьhello node.js

Далее посмотрим, как реализован экспресс

Вышеприведенное реализует простую логику на стороне сервера, включая промежуточное ПО и настройки маршрутизации.

2.7 В чем разница между промежуточным ПО Express и Koa?

Ответ: Промежуточное ПО:app.useМетод заключается в вставке нового промежуточного программного обеспечения в очередь промежуточного программного обеспечения.Метод обработки экспресс-промежуточного программного обеспечения является линейным.После следующего он продолжает поиск следующего промежуточного программного обеспечения.Конечно, если next() не вызывается, следующая функция не будет вызываться .вызов будет прерван

  • Промежуточное ПО Express: через следующий механизм, т. е. предыдущее промежуточное ПО будет запускать следующее промежуточное ПО через следующий
  • промежуточное ПО koa2: реализовано через асинхронное ожидание, порядок выполнения промежуточного ПО — модель «луковое кольцо» (рекомендуется)

Давайте посмотрим на простой пример ниже koa2, вы можете сравнить реализацию Express

посмотри выходной лог

2.8 Что такое шаблонизатор?

Ответ таков: механизм шаблонов — это инструмент, который генерирует HTML-страницы, комбинируя шаблоны страниц и отображаемые данные. По сути, это требование внутреннего рендеринга (SSR). Кроме того, сама страница рендеринга Node является чисто статической. Когда нам нужны разные страницы Чтобы быть более эффективными и гибкими, нам нужно использовать механизм шаблонов, чтобы усилить страницу и лучше выделить преимущества рендеринга на стороне сервера.

Распространенными основными механизмами шаблонов являются:

Продолжение следует...

🌲Предыдущие статьи Соуса:

Пожалуйста, выпейте 🍵 Не забудьте подключиться три раза~

1. После прочтения не забудьте поставить лайк 🌲 соусу, там есть 👍 и мотивация

2. Обратите внимание на интересные вещи в интерфейсе официального аккаунта и пообщайтесь с вами об интересных вещах в интерфейсе.

3. Статья размещена на GithubfrontendThingsСпасибо, Стар✨