написать впереди
После того, как последний выпуск "Node.js Getting Started Series (1)" был обновлен, было много комментариев и личных сообщений от мелких партнеров. Эта серия может многому научиться. После завершения и доработки в течение недели я наконец написал версию, которой я больше доволен.
Вводная серия Node.js представляет собой полный набор справочных руководств. В этой серии будут описаны точки знаний в виде структурных карт мозга, текстовых объяснений, общих резюме, практических примеров и тестовых сайтов для интервью. Если вам это нравится, пожалуйста, подпишитесь и поставьте лайк, и в будущем будет больше обновлений.
Обзор последней серии
В последнем эпизоде мы говорили о том, какие болевые точки внешнего интерфейса может решить Node.js, о функциях и применимых сценариях Node.js.
Если вы хотите прочитать ее снова, пожалуйста, нажмите здесь, чтобы выбрать главу, которую вы хотите прочитать:
Разговор о начале работы с Node.js
Серия «Начало работы с Node.js» (1)
Цели обучения этого раздела
Познакомьтесь с модулями Node.js и интерактивной средой выполнения Node.js.
Этот раздел является теоретическим и может быть прочитан без IDE, что подходит для чтения и запоминания в отрыве от времени.
Учебный каталог для этого раздела
1. Модули в Node.js
2. Интерактивная среда выполнения Node.js
3. Соответствующие тестовые сайты интервью в этом разделе
4. Резюме этого раздела
Пятерка в конце текста
1. Модули в Node.js
Прежде чем мы поговорим о Node.js, забудьте об этом понятии и проведите мозговой штурм: где вы слышали слово «модуль»? Правильно, передняя модульность. В качестве вводного руководства, я думаю, все же необходимо подробно рассказать о связанных с модулями вещах, хотя модуляризация внешнего интерфейса не находится в центре внимания этого раздела.
Отношения между модулями и общим проектом можно сравнить с отношениями между строительными блоками и домом. Каждый модуль строительного блока имеет свою особую форму и функцию, и только в определенном порядке можно окончательно построить прочный и надежный дом. Зачем разбивать весь дом на мелкие строительные блоки? Поскольку модуль небольшого строительного блока имеет одну функцию и его легко изготовить, если определенный блок сломан, просто замените его, чтобы не повредить все, а стоимость обслуживания низкая. Думая о фронте:
В первые дни интерфейсная страница состояла из трех частей: CSS, HTML и JavaScript. Страница представляла собой файл .html. Причина, по которой ее можно написать таким образом, заключается в том, что основная функция внешнего интерфейса страница была одна: для просмотра пользователями. Функция единая, а логика проста, поэтому нет необходимости отдельно писать файлы CSS и JS, а затем импортировать их в процессе разработки.
Позже интерфейс постепенно усложнялся не только для того, чтобы хорошо выглядеть, но и для взаимодействия. Таким образом, интерфейсный проект начал усложняться. Чтобы повысить эффективность разработки и сократить затраты на итерацию, интерфейс -end начал разделять код на целую функцию, разделенную на множество Файлов, каждый файл реализует функцию, и наконец вводит их в страницу.Это первый этап модуляризации фронтенда: разбиение файлов. Это действительно приносит удобство в разработку, но также приносит и проблемы, например, мы можем импортировать и модифицировать другие файлы модулей в любом файле, что вызовет проблему случайного удаления и модификации, и конфликтов имен, кроме того, между модулями необходимо поддерживать вручную.В случае нескольких модулей сеть отношений хаотична, а связь все еще очень высока. Проблема в том, что приватной области видимости нет, зависимости между модулями сложные, а загрузка по требованию невозможна.
С развитием внешнего интерфейса модульность внешнего интерфейса достигла второго этапа: функция немедленного выполнения и члены каждого модуля помещаются в функцию немедленного выполнения, так что функция немедленного выполнения предоставляет личное пространство для модуль.Глобальные члены могут быть реализованы путем подключения к глобальному объекту, и этот метод может указывать модули, от которых зависит модуль, в виде параметров.Этот метод решает проблему загрязнения глобальной области, конфликтов областей и зависимостей модулей.проблемы отношений.
Среди них наиболее ярким примером является исходный код JQuery, который использует эту идею при инкапсуляции исходного кода JQuery. Небольшие партнеры, испытавшие стадию JQuery, также знают, что в период JQuery, когда несколько человек сотрудничают в разработке или когда пишут колесо от руки, они используют функции немедленного выполнения для инкапсуляции собственного кода. Из трех больших проблем только что упомянутого модуля непосредственное выполнение функции решает две, а оставшуюся одну: загрузку по требованию.
Далее идет третий этап.Фронтенд сформировал единую спецификацию модуля.Я собираюсь поместить эту часть знаний в "Изучение Webpack с нуля" для доработки, которая будет начинаться с начальной модульности, до рукописного плагина конфигурации веб-пакета. -in., в настоящее время находится в проекте. Таким образом, модульное дерево знаний внешнего интерфейса и Node-сервера завершено.
Теперь вернемся к сути этого раздела:
Я говорил о модульности во внешнем интерфейсе, а модули в Node.js не являются таинственными, Node.js называет файл .js модулем. Если файл заканчивается на .js, это модуль Node.js, независимо от того, является ли содержимое внутри него кодом JavaScript, JSON или скомпилированным расширением C/C++.
Разобравшись, что такое модуль, давайте подумаем о другой проблеме: во фронтенде есть модульное решение, а в Node js-файл — это модуль, так как Node решает: приватную область видимости, управление зависимостями и т. д. спрос на загрузку как насчет?
Node.js делит каждую функцию на модуль, и каждый модуль представляет собой файл js.Node.js понимает, что глобальные переменные и функции, определенные в каждом модуле, могут использоваться только внутри этого модуля, и только те, которые экспортируются через экспорт Объект может быть только передается наружу, что решает проблему приватной области. Вот небольшая точка знаний, хотя она будет упомянута в серии официальных аккаунтов, но вот краткое упоминание: что такое экспорт.
Когда мы используем JavaScript для написания кода на стороне браузера, есть только два способа импортировать js-файлы: один — использовать для импорта тег script, другой — использовать стандарт ES Modules для импорта с помощью import.
Как реализация JavaScript на стороне сервера, Node.js следует набору спецификаций, называемых common.js. Каждый модуль имеет глобальный модуль объекта, и в объекте модуля есть экспорт объекта, и объект экспорта используется для реализации экспорта модуля. exports — это псевдоним для объекта module.exports, предоставляющий удобные настройки свойств и методов.
require может загружать файловые модули (.js, .code, .json) и основные модули nodejs и, наконец, получать объект module.exports. Код выполняется при первой загрузке и втором получении объекта module.exports из кеша, если указанный модуль не найден, будет выдано сообщение об ошибке не найденного модуля.
Идентификатор модуля может не содержать имя суффикса, поэтому Node.js будет дополнять имена суффиксов .js, .json, .node по очереди при поиске файла, а затем переходить к расположению файла, поскольку Node.js — это один поток. , это произойдет при нахождении файла Блокировка, поэтому если суффикс импортируемого модуля .json или .node, вы можете добавить суффикс при импорте, что может улучшить скорость поиска.
Например: экспортировать функцию Foo в модуль foo.js.
exports.Foo = function(){ return 'foo' }
Таким образом, к Foo можно получить доступ извне. При использовании способ введения следующий:
const foo = require('/foo.js') // 引入模块
foo.Foo() // 访问模块内的Foo函数
Как упоминалось ранее, js-файл Node.js — это модуль, который можно настраивать. Внутри Node.js есть много встроенных модулей, которые могут использовать разработчики, скриншоты показаны здесь, а часто используемые модули будут описаны позже или подробно.
Основные модули Node.js следующие:
Одна из замечательных особенностей Node.js — суперрасширяемость. В дополнение к встроенным модулям, пользовательским модулям, вы также можете использовать установки сторонних модулей для расширения Node.js.
Три проблемы модульности, упомянутые ранее: частная область, управление зависимостями и загрузка по требованию.
Модуль — это файл js, и механизм, при котором доступ к внешней части файла возможен только через экспорт файла, решает проблему частной области. Так как же решаются две другие проблемы?
Для решения по управлению зависимостями: npm. Звучит знакомо? Да, это обычный npm во фронтенд-проектах. Его роль заключается в реорганизации модулей, разбросанных вокруг, в соответствии с зависимостями. Но функция npm — это нечто большее, и мы поговорим об этом позже.
Для загрузки по запросу Node.js загружает все модули одновременно в начале, кэширует используемые модули и считывает их непосредственно из кеша при следующем использовании, а поскольку Node.js запускается в службе, с другой стороны С другой стороны, чтение файлов с диска в память происходит очень быстро, поэтому в Node.
резюме:
1) Node.js тоже имеет концепцию модулей, а файл js — это модуль;
2) Каждый модуль имеет свою область видимости.Глобальные переменные и функции, установленные в модуле, не могут быть доступны в других модулях.Другие модули могут получить доступ только к экспортируемым объектам.
3) Экспорт и импорт модулей соответствуют спецификации модуля common.js, которая отличается от спецификации модуля внешнего интерфейса. Эта спецификация устраняет несоответствия частной области действия и стиля кодирования.
4) Типы модулей можно разделить на: встроенные модули, пользовательские модули и сторонние модули расширения в зависимости от их источников.
Расширение знаний:
Node.js является основой модуляризации внешнего интерфейса. Модульность веб-пакета основана на Node.js. Таким образом, изучение веб-пакета столкнется с Node.js, поэтому я хочу написать как серию Node, так и серию веб-пакетов. причина.
2. Интерактивная среда выполнения (REPL) Node.js
Что такое РЕПЛ?
В Node.js, чтобы облегчить разработчикам тестирование кода JavaScript, предоставляется интерактивная среда выполнения под названием REPL (Read Eval Print Loop: Interactive Interpreter), в которой разработчики могут ввести любое выражение. Затем нажмите клавишу Enter, и REPL среда выполнения отобразит результат выражения.
Подводя итог, REPL — это просто инструмент отладки, предоставляемый разработчикам для тестирования кода в REPL.
Если подумать, действительно ли нам нужен REPL?
Нам действительно нужен REPL?
Ответ положительный. Зачем? Во-первых, код, который мы пишем во внешнем интерфейсе, либо выполняется в браузере, либо внутри приложения (например, небольшой программы), но эти операционные среды предоставляют нам инструменты разработчика, вы можете перейти в консоль, вы можете проверить элементы, но Node.js работает на стороне сервера, инструмента разработчика нет, поэтому REPL становится нашим инструментом разработчика для отладки. Итак, нам действительно нужен REPL.
Как использовать РЕПЛ
Во-первых, вам нужна современная среда REPL.
Для системы Windows операция выглядит следующим образом:
1) Клавиша Windows + R, всплывающее окно команды
2) Введите cmd, нажмите Enter, чтобы войти в окно командной строки
3) Введите: node в окно командной строки, нажмите клавишу Enter, появится командная строка «>», и она будет выполнена успешно.
Пример приложения REPL
Node поставляется с интерактивным интерпретатором, который может выполнять следующие задачи:
Чтение — считывает пользовательский ввод, анализирует ввод в структуру данных Javascript и сохраняет его в памяти.
execute - выполнить структуру входных данных
распечатать - вывести результат
Цикл. Повторяйте описанные выше шаги до тех пор, пока пользователь дважды не нажмет кнопку ctrl + c для выхода.
Пример 1. Логическое оценочное суждение:
Войдите в среду REPL, в которую вы только что вошли: 3>2 Enter выведет логическое значение: true
Пример 2. Доступ к переменным:
Войдите в среду REPL: foo="bar" Войдите выведет строку: 'bar'
Затем, чтобы получить доступ к значению переменной, введите в REPL: foo выведет строку: 'bar'
REPL очень мощный, вы можете запускать функции, вы можете определять и запускать серверы, и вот несложная демонстрация. Он будет использован позже.
Ярлыки в REPL
Точно так же, как в консоли браузера есть горячие клавиши для доступа к истории, REPL также предоставляет горячие клавиши :_ Используйте _ для доступа к самому последнему выражению, примеры следующие:
Введите в РЕПЛ:
а=3 Войти
Введите снова: _+=1 Войти
Вы увидите вывод: 4
Основные команды в REPL
Node.js предоставляет разработчикам множество команд для более эффективного использования REPL. Все эти команды начинаются с точки. Общие команды организованы следующим образом:
1) ctrl+c - выйти из текущего терминала.
2) Дважды нажмите ctrl+c, чтобы выйти из Node REPL.
3) ctrl+d - Выход из узла REPL.
4) Клавиши вверх/вниз - просмотреть историю введенных команд
5) клавиша табуляции - перечислить текущую команду
6) .help — список используемых команд
7). Break - выйти из многострочной экспрессии
8) .clear - Выход из многобанковского выражения
9) .save имя файла — сохраняет текущую сессию Node REPL в указанный файл
10) .load имя_файла — загрузить содержимое файла текущего сеанса Node REPL.
резюме:
1) REPL — это среда отладки для разработчиков, предоставляемая Node.js, позволяющая разработчикам отлаживать код в среде;
2) REPL предоставляет общие базовые команды для лучшего восприятия, обратите внимание на точки перед основными командами.
3. Соответствующие тестовые сайты интервью в этом разделе
1) Как Node.js реализует частную область?
2) Как Node.js решает проблему зависимостей между модулями?
3) Каковы общие модули Node.js? Какова роль?
4) Что такое РЕПЛ?
5) Расскажите нам о ваших часто используемых командах REPL
4. Резюме этого раздела
Этот раздел в основном посвящен двум темам знаний: модулям Node.js и REPL. Каждое произведение суммируется. Его можно просмотреть непосредственно в каждой сводке.