Основное введение
Давайте начнем с важной концепции «шаблона». Вообще говоря, шаблон в Интернете - это страница, которая может генерировать файл после заполнения данных. Строго говоря, механизм шаблона должен использовать файлы в определенном формате и данные, предоставленные для компиляции и генерации страниц. Шаблоны примерно разделены на шаблоны передних конечностей (например, EJS) и шаблоны на задние панели (такие как Freemarker), скомпилированные в браузере и на стороне сервера соответственно.
Поскольку некоторые студенты на месте мало знали о node.js, вот некоторые из соответствующих знаний о Node.js. Я не буду говорить о определениях, основанных на событиях, асинхронном и так и т. Д. На официальном сайте. Здесь я одолжил картину из Пу Лингху, чтобы объяснить структуру узла.js. Если вы понимаете Java, вы можете понять ее как версию JS JVM. Браузеры, как правило, включают в себя рендеринги и двигатели сценариев JS. Принимая Chrome Browser в качестве примера, они используют рендеринг Webkit ядра и двигатель сценария V8, в то время как Node.js использует двигатель V8. Короче говоря, это среда, управляемая JS, точно так же, как инструмент отладки F12 браузера, но Node.js не имеет DOM и BOM.
Эта картина описывает некоторую информацию о Node.js, такой как NPM, отличный менеджер пакетов, сообщество CNODE и GitHub, которые в определенной степени продвигают процветание Node.js и предоставили технические гарантии.
Крупные компании, как правило, являются погодными технологиями. Например, Google Angular и React Facebook сейчас очень популярны. Только 3 крупных компаний перечислены здесь в качестве примеров. Само собой разумеется, на полпути Таобао архитектура, пионер Omestic Node.js, происходит из Taobao. Кунар также разработал техническую структуру, которую следует назвать «QTX». Команда 75, возглавляемая Yueying, запустила структуру веб -сервера на основе ES6/ES7 - ThinkJS. В то время наш технический директор был очень оптимистичным, но, поскольку у меня не было времени выучить ES6, а плагины не были достаточно богатыми, я все еще выбрал более зрелый экспресс.
Вернувшись к теме, в этой таблице перечислены три метода разработки для разделения передних и задних концов, которые я подвергался. Первый-это наиболее распространенные шаблоны языка бэкэнд, которые используют Java, которые являются благоприятными для SEO, и лучше используют кэш и уменьшают бремя рендеринга браузера. Самая большая проблема заключается в том, что степень сочетания файлов шаблонов слишком высока. Никто не хочет решать проблему. Передний персонал не может видеть данные, переносные сотрудники не понимают страницы, а файлы шаблонов похожи на горячий картофель. Второе-это текущее решение для реализации мобильного терминала нашего проекта, которое использует структуру угловых (угловые инструкции можно рассматривать как шаблоны переднего интерната), а обратный прокси-сервер Nginx для полного отделения переднего и заднего вещества и взаимодействия только с данными через Ajax. Это решение является точно противоположностью преимуществам и недостаткам первого. Производительность шаблонов фронта всегда является проблемой, особенно на мобильных устройствах и, в частности, на низких мобильных устройствах. Последний-это новый проект, который использует node.js в качестве фронтального сервера, который делит передние обязанности от браузера на уровень шаблона, решая все вышеперечисленные проблемы, но действительно есть новые проблемы, и эта проблема будет проанализирована позже.
Конечно, разработка с полным стеком также очень подходит для небольших проектов. Для традиционной разработки JSP/PHP затраты на коммуникацию в разработке полного стека ниже, и разработчики могут легко понять весь функциональный модуль, тем самым лучше восстановить дизайн продукта. Особенно развитие полного стека, основанная на языке JS: Meteor и Anduce Technology, которые в настоящее время появляются в настоящее время, создает фронт-END и Back-End Development, непосредственно обрабатывается на одном языке. С помощью MongoDB данные из браузера в базу данных напрямую используются без ухода, и нет необходимости писать SQL, что значительно снижает стоимость разработки.
Некоторые плагины, используемые для создания сервера Node.js на этот раз. Нет необходимости представлять знаменитую экспресс, легкую структуру веб -сервера. Это также совпадение для использования шаблона руля, потому что Express4 - это по умолчанию. Руля достойна того, чтобы быть шаблонным двигателем «слабой логики». Он выступает за уменьшение логики шаблонов и пытается использовать только переменные и пейджинг. Основываясь на его концепции дизайна, я расширил только двух помощников. Конкретная статья: https://yalishizhude.github.io/2016/01/22/handlebars/superagent все еще используется из -за Express4. Поскольку его тестовый код использует SuperTest, SuperTest основан на супергентах, поэтому суперигент используется для пересылки и инициирования запросов. Супергент по -прежнему слишком слаб и не может быть установлен для длинных связей. Я все еще рекомендую плагин запроса. Там нет ничего, что можно было бы представить в Restfulaeapi. Передний сервер и браузер, фронтальный сервер и сервер на заднем плане используют этот набор спецификаций. По сути, URL -адрес указывает на ресурсы, добавляется, удаляет, изменяет и проверьте, а конкретный метод запроса выражается, коды состояния представляют результаты и т. Д. Это слишком больно, поэтому я сдался.
Процесс разработки
Если в этом обмене в основном рассказывается о том, как использовать node.js в качестве фронтального сервера для достижения фронтального разделения, то нечего сказать, просто посмотрите на статью о Taobao Ued. Самая большая проблема с разделением передних и задних концов заключается в том, что она повышает затраты на общение, в частности, определение и отладку интерфейсов. В традиционном процессе разработки на рисунке выше, определение интерфейса будет размещено на интерфейсном сервере, а затем передние и задние концы будут проводить локальную отладку на основе данных мошенничества с интерфейсом, а затем проводить совместную отладку. Эта ссылка - когда спереди и задние концы начинают сражаться. Этот параметр неверен, и возвратное значение неверно. Короче говоря, это пустая трата времени. Далее, давайте посмотрим, как эта проблема решена в нашем проекте ~
Проблема по борьбе с интерфейсом в передней и задней части всегда существовала. Как консерватор, я верю в итеративную разработку, поэтому первым шагом является добавление фиктивного сервера. Магия этого сервера заключается в том, что он автоматически генерирует фальшивые данные на основе интерфейсного документа, реализуя интерфейс, а именно API, и студентам фронт-энд больше не нужно писать данные до смерти для тестирования. Ничего невозможна, кто сказал, что я фронт-разработчик? Прежде всего, я думаю о своих народах. Хе-хе ~, конечно, это выгодно только для фронтального развития в определенной степени. Также будут проблемы, когда интерфейсы и документы задней части непоследовательны и связаны. что делать?
Я случайно видел статью Лао Ма в блоге «Мастера лезвия», в которой в частности, рассказывается о разделении передних и задних концов. Одной из важных понятий является тестирование контракта, также называемое двусторонним тестированием. Основная концепция заключается в решении проблемы удаленной совместной отладки. Проверьте параметры передних и задних концов и требуйте, чтобы каждый разрабатывал в соответствии с интерфейсным документом. Вдохновленный им, правило JSON-Schema было добавлено, чтобы реализовать проверку параметров HTTP-запросов, и тот, кто не следит за правилами, изменит его.
Эта Redmine является нашим самым ранним менеджером документов интерфейса и не имеет другой функции, кроме функций записи и просмотра.
Swagger известен как самый популярный интерфейс -сервер документов в мире. У него красивый интерфейс и много плагинов. Он может напрямую генерировать тестовый код для внутренних языков. Тем не менее, я никогда не понимал этого при его развертывании, и формат YAML не так хорош, как JSON, поэтому я отказался от этого.
Это сервер документов и фиксаторный сервер, используемый в нашем проекте, сервер реализован на основе средней технологии, и основные функции:
Используя плагин Mockjs, случайные данные могут быть сгенерированы динамически для выполнения тестов интерфейса контрольной суммы на параметрах интерфейса на основе JSON-SCHEMA, а также можно сохранить состояние теста и время отклика интерфейса. Простой редактор JSON имеет функцию проверки входа в систему, и отладка интерфейса может быть выполнена после входа в систему. Mock Server реагирует на запрос в соответствии с сервером API, и он будет обновляться автоматически при обновлении интерфейса.
Некоторые вопросы
Node.js-это крылья фронт-инженеров, и должен ли я стать ангелом или демоном с крыльями? Это зависит от того, могут ли проблемы, вызванные использованием его, решить.
Прежде всего, рабочая нагрузка на передней части, несомненно, увеличится, но стоимость связи будет снижена. Стабильность сервера единого потока Node.js действительно недостаточно хороша, но надежность кода и идеального журнала можно эффективно избежать. Перезвонить. Существует слишком много решений этой проблемы, включая Node.js 'Q/Async Module и ES6/ES7. node.js отладка. Хотя я всегда отвергал IDE, я должен признать, что Webstorm действительно очень удобен для отладки. Узел, который я использую, также довольно хорош, интерфейс похож на инструмент разработчика Chrome, и он выглядит довольно знакомо.
Если вы бэкэнд -программист, вы должны быть с большей вероятностью быть приспособленным Node.js. Работа интеграции интерфейса передается на передний сервер для обработки, а степень связи с фронт-конце значительно снижается, а рабочая нагрузка и эффективность работы снижаются.
Есть два момента, чтобы испытать
Хотя использование node.js имеет определенную стоимость обучения, оно все еще очень дружелюбно для фронтальных разработчиков. Более того, если node.js используется в передней части, как технический контент, так и рабочая нагрузка будет улучшена, что повышает важность работы. Только когда нынешние разработчики могут создать большую ценность, имеют право требовать более высокую зарплату. Рекомендуется делать меньше предложений и дать больше технико-экономических обоснований на работе, а также проводить технические предварительные исследования вместо того, чтобы писать простой Helloworld.
Суммировать
Некоторые люди могут сказать, что набор вещей, которые вы введены, настолько сложный, и он слишком неприятен в использовании, поэтому лучше общаться лицом к лицу. Для таких сомнений я могу использовать только пример, упомянутый Tencent Senior Engineer UI Yu Guo в «Самоультивации инженеров с полным стеком Web». Однажды, когда лидерный человек, отвечающий за небольшую компанию в телефоне, спросил его, как управлять кодом, другая сторона сказал, что он будет использовать FTP для загрузки его напрямую, и жаловался, что его подчиненные всегда обновляли неправильный код. Он также спросил его, почему он не использовал SVN или GIT. Он сказал, что будет легче обновить вручную. Правда этой истории - мой ответ на вопрос ~
PPT скачать адрес