Предисловие
Если мы не выучим Nodejs, мы будем стареть ... когда нажимает волну HTML5, многие предки начали свое путешествие Nodejs, и в то время я все еще работал над программами на стороне сервера.
Позже я перешел на передний конец, и расстояние между ним и эшелоном было уже очень большим. Поскольку я знал язык на стороне сервера и работал в течение долгого времени, я только начал изучать Nodejs и двигаться к полному фронта.
На этот раз план изучения Nodejs:
① Узнайте базовые знания за 1-2 недели
② Разработка простого проекта примерно за 1 неделю
③ Используйте Nodejs для разработки набора инструментов для мобильной отладки
④ Связанная с упаковкой (это может быть далеко)
Функции Nodejs
① Асинхронно
Все Nodejs завершаются асинхронно от чтения файлов до сетевых запросов, а функции обратного вызова играют важную роль. Узел является ведущей моделью программы
② Обратный вызов события
Обратные вызовы событий делают программу легкой, но специфика зависит от программиста. Тем не менее, функцию обратного вызова на самом деле довольно сложно прочитать.
③ Одиночная резьба
Узел однопоточный. Если он многопоточный, этот язык будет глубже. Очень раздражает задавать несколько вопросов о общении в процессе, но в потоке нет тупиков или других проблем.
Но есть проблемы с связанностью с производительностью, потому что нельзя использовать мульти-ядер;
Механизм модуля/Commonjs
Мы использовали разработку на стороне сервера. Если бы у нас не было хорошего организационного кода, было бы очень трудно поддерживать позже, так что же будет там MVC и трехслойная архитектура?
Теперь бизнес-логика фронт-конца постепенно приближается к концу. Что касается одностраничных приложений, то это превысило логику программы задней части.
Непрерывное увеличение просмотров страниц приведет к всплеску количества кода JS. Как хорошо управлять нашим фронтальным кодом, стало проблемой, поэтому появляется requirejs ...
PS: Черт, этот период имеет отношения копейки с Nodejs ...
JavaScript не имеет модульной системы, поэтому CommonJS предлагается дать JS основу для разработки крупномасштабных приложений.
Ссылка на модуль
Если мы хотим ссылаться на модуль, например, связанный с математическим расчетом:
var math = require ('математика');
Определение модуля
Если мы хотим определить наш собственный модуль, мы можем сделать это
Кода -копия выглядит следующим образом:
exports.add = function () {
вернуть сумму;
}
Если эта функция определена в математике, ее можно использовать
math.add ();
Идентификатор модуля
Идентификатор модуля является параметром, передаваемым для требования. Он должен быть назван в честь верблюда и указывает на путь файла. Это очень похоже на потребности здесь.
Реализация модуля
Реализация модуля узла разделена на две категории: одна является основным модулем системы системного уровня, а другой-модуль файла, записанный пользователями.
Модуль Core переводится в двоичный файл во время процесса компиляции. После начала процесса узла некоторые модули Core будут загружены непосредственно в память (расположение файла, компиляция и выполнение)
Файл -модуль должен быть загружен динамически, а скорость относительно медленная.
Однако после загрузки эти файлы будут кэшированы, а кэшированные файлы (скомпилированные файлы) будут прочитать при снова импорте (скомпилированные файлы)
Давайте поговорим здесь немного дальше. Когда мы используем подчеркивание, мы будем скомпилировать HTML для формирования функции шаблона (это на самом деле просто функция). На самом деле, это может быть кэшировано.
Сохраните скомпилированные функции перед развертыванием проекта и удалите файл шаблона HTML (я не знаю эффект оптимизации)
В узле каждый модуль является объектом:
Кода -копия выглядит следующим образом:
Функциональный модуль (id, parent) {
this.id = id;
this.exports = {};
// родитель - это ключевое слово, его не следует использовать случайным образом
this.parent = родитель;
if (parent && parent.children) {
parent.children.push (это);
}
this.filename = null;
this.laded = false;
this.children = [];
}
Последний этап внедрения модуля файла во время компиляции и выполнения. После поиска конкретного файла узел создаст новый объект модуля, а затем загрузите и компилируется в соответствии с пути.
Каждый успешно скомпилированный модуль будет кэшировать свой путь файла в качестве индекса на модуле._CACHE
Каждый файл модуля имеет три переменных: требуется, экспорт и модуль, но они не определены в файле (переменные __filename__ и __dirname__ также).
Фактически, во время процесса компиляции узел завершает содержимое головки и хвоста файла JavaScript (эквивалентно передаче пользовательской функции в окно)
Кода -копия выглядит следующим образом:
(Функция (экспорт, требование, модуль, __filename__, __dirname__) {
var math = require ('математика');
exports.area = function (radius) {
возвращаться '';
};
});
Таким образом, модуль изолирован и не будет влиять друг на друга. Это несколько похоже на компиляцию подчеркивания ...
Пакет и NPM
Node организует свои собственные основные модули, поэтому сторонние файловые модули могут быть записаны и используются упорядоченным образом, но в сторонних модулях модули все еще хэшируются в различных местах.
Это не может быть прямо ссылается друг с другом. В модуле аутсорсинг и NPM являются механизмом установления соединений.
PS: Многие модули будут сформировать упаковку. Концепция этого пакета похожа на концепцию пакета Java.
После декомпрессии структуры пакета будет сформировано несколько файлов:
① Package.json Описание файл
② Исполняемый бинарный каталог бин
③ Справочник по кодам кода Lib JavaScript
④ Документация DOC (ослепительное в основном не существует)
⑤ тест демо
Выше приведены некоторые из спецификаций пакета CommonJS, но мы можем немного узнать (новички), и NPM должен быть опытным в нем. С помощью NPM мы можем быть опытными в установке пакетов управления.
Установите пакет зависимости
Установка пакетов зависимостей является распространенным методом:
NPM Install Express
После выполнения каталог NODE_MODULES будет создан в текущем каталоге, а затем будет создан экспресс -каталог ...
PS: Express - это популярная структура веб -разработки на NodeJS, помогающая нам быстро разработать веб -приложение
После завершения установки ее можно назвать:
Кода -копия выглядит следующим образом:
var Express = require ('Express');
Заключение
Этот раздел просто закончился, и фактический боевой процесс нашего проекта постепенно углубляется.