Что такое Node.js? Что можно сделать? Наконец-то кто-то дал понять
Что такое Node.js? Что можно сделать? Наконец-то кто-то дал понять

Введение:В этой статье давайте познакомимсяNode.js,Узнайте, чего это может нам помочь.

Автор: Ши Вэньцян

Источник: Big Data DT (ID: hzdashuju)

В эволюции языка JavaScript, пытающегося избавиться от ярлыка «игрушечного языка», Node.js определенно может оставить след.Node.jsЭто не сторонняя библиотека инструментов, используемая для реализации определенных функций.,Это рабочая среда программ JavaScript.

До появления Node.js,использоватьJavaScriptСкрипты, написанные на этом языке, должны быть включены в веб-страницу.<script>Его можно выполнить только после того, как метка заключена в кавычки.,Из-за этого программы, написанные фронтенд-разработчиками, выглядят как аксессуары к интерфейсу, как бы вы на них ни смотрели.。Появление Node.js разрушает эти оковы.,Предоставляемая им среда выполнения позволяет запускать программы JavaScript на настольных компьютерах, терминалах командной строки, мобильных телефонах, планшетах и ​​даже встроенных системах.,Это не только значительно обогащает сценарии применения JavaScript.,Это также заложило основу для последующего развития интерфейсной разработки и появления модели архитектуры среднего уровня.

Более десяти лет технологических ожиданий и эволюции сделали Node.js уже не новой технологией, расширяющей возможности чтения, а навыком, которым должны овладеть фронтенд-разработчики. Поговорка «фронтенд без понимания Node неполна». тоже Это уже не шутка.

Появление Node.js позволяет разработчикам внешнего интерфейса завершать разработку клиентов и серверов, не переключая языки. Людям, которые его знают, он часто нравится, а люди, которые его не знают, часто рассматривают его как развлечение для разработчиков интерфейса. думая, что Java может делать все, что может Node.js, и что он более зрелый. Так что же может Node.js и для чего он подходит?

01 Что такое Node.js

Node.js — это среда выполнения JavaScript, основанная на движке Chrome V8. Node.js использует управляемую событиями неблокирующую модель ввода-вывода, которая является легкой и эффективной. Ее нижний уровень написан на C/C++. Это официальное описание Node.js. Для разработчиков интерфейса, если вы хотите понять, что в нем содержится «движка», «рабочей среды», «управляемой событиями» и «неблокирующей модели ввода-вывода». значит, и задача непростая.

ТакNode.jsчто именно?Сначала поясним на примере аналогии.например,Кто-то отправил вам документ с расширением docx.,ты хочешь увидеть, что в нем,Итак, я открыл блокнот,Перетащите документ в окно блокнота,Потом я увидел много бреда. Это связано с тем, что программа «Блокнот» не распознает документы в этом формате.,Вам нужно сначала установить егоMicrosoft Office 2007 или более поздней версии программного обеспечения, а затем откройте его с помощью программы Word, чтобы увидеть правильно декодированное содержимое.

Если файл docx в примере рассматривать как программу, то Word — это его среда выполнения, точно так же, как связь между программой JavaScript и браузером. Если вы поняли структуру современного браузера, вы знаете, что он содержит движок JavaScript.

Раньше, если вы хотели просмотреть содержимое файла docx, вам почти приходилось полагаться на Microsoft. Office, а позже и Kingsoft, также выпустили офисный программный инструмент WPS. Office,Он также может интерпретировать и запускать файлы docx.,Таким образом, файл docx имеет несколько работоспособных сред.,То же самое относится и к Node.js для языка JavaScript.

Чтобы более интуитивно понять концепцию среды выполнения, вы можете попробовать интересный эксперимент: самостоятельно создать простой язык программирования, указать некоторый простой синтаксис, а затем использовать JavaScript для написания кода, который сможет интерпретировать этот синтаксис.

Например, напишите несколько простых программ на своем родном языке и, наконец, запустите программу JavaScript через Node.js и используйте в программе интерфейс чтения и записи файлов (File API), предоставляемый Node.js, для чтения файлов, которые вы написали в программе. свою собственную программу на языке программирования, чтобы проверить, можно ли ее правильно интерпретировать и выполнить. Как только вы поймете, как JavaScript интерпретирует и выполняет ваш собственный язык программирования, вы, естественно, поймете, что C/C++ делает со сценариями JavaScript в среде выполнения Node.js.

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

По сравнению с техническими моментами идеи разработки дизайнеров Node.js, возможно, заслуживают изучения, чего не хватает большинству начинающих разработчиков.Node.jsПервоначальная цель разработки — более удобная реализация высокопроизводительногоWebсервер,Но когда оно наконец выйдет,Он не претендует на звание «технологии для реализации высокопроизводительных веб-серверов».,Вместо этого он предоставляет разработчикам инструмент,Одной из возможностей этого инструмента является реализация высокопроизводительных веб-серверов.

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

Если вы хотите стать отличным программистом, вы должны постоянно развивать свои способности разрабатывать программы, а не просто выполнять работу по переводу на уровне языка.

02 Что может Node.js

Среди множества функций Node.js наиболее важными для разработчиков интерфейсов являются возможность создавать веб-серверы, а также читать и записывать локальные файлы.

1. Создайте высокопроизводительный веб-сервер

Многие новички в Node.js должны были видеть классический пример создания веб-сервера менее чем за 10 строк кода. Хотя для фронтенд-разработчиков,Им все еще необходимо изучить базовые знания веб-сервера.,Только так нам будет легче осуществлять разработку на стороне сервера.,Но по сравнению с настройкой Apache или Nginx для достижения той же функциональности,Стоимость такого обучения уже очень низкая,В конце концов, фронтенд-разработчики могут создавать приложения, используя наиболее знакомый им язык JavaScript.

С другой стороны, в Node.js код может взаимодействовать с различными базами данных, а это означает, что фронтенд-инженеры могут напрямую использовать язык JavaScript для написания кода, взаимодействующего с базой данных (хотя в больших приложениях это не рекомендуется). При написании кода бизнес-логики нет очевидной разницы между Node.js и другими серверными языками. Таким образом, фронтенд-разработчики могут овладеть навыками полнофункциональной разработки, не переключая языки разработки.

Поскольку нижний уровень Node.js использует асинхронный неблокирующий механизм ввода-вывода, он больше подходит для сценариев с интенсивным вводом-выводом и небольшим объемом бизнес-логики и потребления вычислений. Хотя интерпретируемый язык сценариев сам по себе не подходит для выполнения вычислительных задач, нижний уровень Node.js написан кодом C/C++ и предоставляет интерфейс для уровня кода JavaScript для взаимодействия с кодом C/C++ при ресурсоемких вычислениях. задачи, Node.js необходимо использовать только в качестве сценария запуска для вызова базовой программы C/C++ для выполнения задач, требующих больших вычислительных ресурсов.

Задачи, выполняемые сервером, можно условно разделить наЧитать и писать интенсивные заданияиВычисление интенсивных задач。дляЧитать и писать интенсивные заданияс точки зрения,ЦП тратит больше времени на ожидание чтения и записи диска.,Скорость использования не высока,Сетевая связь, передача информации, а также чтение и запись на диск на веб-сервере — все это операции чтения и записи.,Он предъявляет более высокие требования к скорости отклика диска и эффективности передачи.

В сравнении,Вычисление интенсивных задачверноCPUТребования к вычислительной мощности выше,Но нагрузка на производительность, вызванная чтением и записью диска, очень мала.,Обычно нет необходимости взаимодействовать с интерфейсом ввода-вывода в процессе расчета.,Может выполняться напрямую и эффективно в памяти.,Процесс расчета таких задач обычно сложен.,Например, необходимо реализовать некоторые алгоритмы шифрования или матричные вычисления.

Факторы, которые необходимо учитывать при выборе серверной технологии для крупномасштабных архитектур, более сложны. Node.js не был готов выполнить эту задачу, когда он был первоначально разработан, сказал даже Райан Дал, отец Node.js. что при работе с крупномасштабными серверными приложениями при разработке опыт разработки Node.js не так хорош, как у языка Go.

но,В настоящее время в мире существует более 600 языков программирования.,Ни один язык не может решить все проблемы,Язык — это всего лишь средство для переноса и передачи идей программирования.,Как выбрать подходящую технологию для вашего целевого сценария,Возможно, разработчикам стоитсосредоточиться на вопрос.

Когда у вас появятся определенные накопления в области front-end, многие пожилые люди порекомендуют вам продолжить изучение более полных и сложных языков, таких как Java или C++. Цель этого — не только расширить границы ваших возможностей, но и улучшить их. также надеяться, что вы сможете вырваться из ограничений языка программирования, изучить и понять идеи, лежащие в основе языка программирования.

2. Функции чтения и записи локальных файлов.

На самом деле существует множество проблем, которые необходимо решить в нижней части функции чтения и записи файлов. Если в файле много содержимого и процесс чтения его в память занимает много времени, что делать? Стоит ли дождаться завершения операции чтения или сначала выполнить другие задачи? Если ресурс, запрошенный клиентом, представляет собой фильм высокой четкости и размер файла превышает общий объем памяти, доступной программе, файл точно не будет прочитан?

Модуль fs Node.js предоставляет как синхронные, так и асинхронные методы практически для каждого интерфейса файловых операций.,Он также поддерживает более детальный контроль над процессом чтения и записи в потоковом режиме.,Вы даже можете отслеживать изменения в указанных файлах или папках. Тот факт, что файл доступен для чтения и записи, означает, что разработчик может поручить программе анализировать содержимое файла в другой программе.,и проверьте и исправьте их,Его даже можно скомпилировать на другой язык.,Это краеугольный камень передовых инженерных возможностей.

03 Найм инженера полного стека JavaScript

Node.js предоставляет разработчикам внешнего интерфейса возможности разработки на стороне сервера благодаря возможности создавать высокопроизводительные веб-серверы и взаимодействовать с базами данных. Еще несколько лет назад разработчики могли использовать MEAN (MongoDB + Express + Angular.js + Node.js), чистый стек технологий JavaScript, для завершения разработки бизнес-логики с замкнутым циклом, и многие интерфейсные инженеры также называли себя Full-Stack инженеры.

Нельзя отрицать, что такой набор технологий действительно может позволить многим малым и средним командам продвигать продукты от творческой стадии до онлайн-версии с меньшими затратами рабочей силы и времени.,Но это также делает разработчиков JavaScript самыми известными инженерами полного стека в отрасли.,Потому что реализации бизнес-логики недостаточно для поддержки Full-Stack-инженеров в серверной разработке.

При разработке на уровне предприятия инженеры Java по-прежнему являются основной силой внутренней разработки.

Поскольку сама Java имеет строгую типизацию и полные объектно-ориентированные функции.,Таким образом, общее качество кодирования и осведомленность о программировании у серверных инженеров выше, чем у интерфейсных инженеров.,В сочетании с поддержкой стека технологий Angular, который очень похож на опыт разработки на Java (сам Angular — это технология, разработанная и поддерживаемая Java-инженерами Google).,Внутренние инженеры могут легко писать код, который так же стандартизирован и удобен в сопровождении, как и интерфейсные разработчики, что значительно повышает конкурентоспособность инженеров полного стека Java.

Если бы не порог, сформированный инженерной конфигурацией и практическим опытом CSS, фронтенд-инженерам было бы трудно отразить свою собственную ценность при столкновении с back-end фулл-стек-инженерами. Однако инженеры, имеющие опыт фронтенд-разработки, не так гладко используют стек технологий Node.js для разработки на стороне сервера. Самые популярные платформы Express и Koa предоставляют только платформы и базовое промежуточное программное обеспечение. , вам все равно потребуется большое количество промежуточного программного обеспечения, которое необходимо внедрить или разработать самостоятельно.

В это время разница между разработчиками станет очень очевидной. Даже если они вообще не понимают Node.js, серверные разработчики знают, что им следует уделять внимание ведению журналов, отслеживанию ошибок, управлению сеансами, проверке безопасности, мониторингу производительности. Модули или промежуточное программное обеспечение для объектно-реляционного сопоставления (ORM), подключения к базе данных и других функций. Однако обычные разработчики внешнего интерфейса часто используют операторы «try...catch...» для захвата времени выполнения в дополнение к добавлению, удалению, изменению и использованию. проверка бизнес-логики Неправильного сознания не существует.

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

Приравнивание серверной разработки к написанию кода бизнес-логики,Это все равно, что приравнивать фронтенд-разработку к написанию статического кода страницы.。Если вы действительно хотите быть полным инженером, вам нужно использовать скромное сердце, чтобы узнать эти странные знания.,Процесс обучения может быть трудным,Но результаты, которые вы узнаете, вам обязательно принесут пользу.

Об авторе: Ши Вэньцян, старший технический эксперт по интерфейсу, нынешний инженер по интерфейсу команды ByteDance Xingfuli, заслуженный инженер-программист аэрокосмической школы Сианьского университета Цзяотун, эксперт по облачным удовольствиям Huawei, когда-то находился под влиянием Google GDG (Сообщество разработчиков Google) приглашает к обмену технологиями. Он имеет богатый практический опыт и хорошо разбирается в крупномасштабном проектировании архитектуры интерфейсных систем, оптимизации производительности и построении инженерных систем.

Эта статья взята из «Руководства по международной разработке интерфейсов: анализ принципов библиотеки инструментов JavaScript и практическая практика» и опубликована с разрешения издателя. (ISBN: 978-7-111-70804-9)

boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]