2013-12-04 8 views
14

Я очень новичок в node.js, и я не могу найти определения где-либо в отношении того, какие привязки узлов. Я видел этот термин, используемый в слайдах и переговорах nodejs, но он никогда не был четко объяснен. Может кто-нибудь помочь прояснить эту концепцию для меня. Я прикрепил картину того, что я имею в виду. enter image description hereЧто такое привязки node.js?

+9

привязки - это исполняемый код, который делает V8 и библиотеку способной разговаривать друг с другом. Примером является привязка для библиотек баз данных. V8 не имеет собственного понимания баз данных, а библиотеки баз данных не заботятся о том, кто их использует, поэтому требуется привязка, чтобы обе стороны могли разговаривать друг с другом. –

+0

@ Mike'Pomax'Kamermans, приятно и прямо, вы должны отправить его в качестве ответа. –

+0

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

ответ

1

При дальнейших исследованиях я столкнулся с этой статьей. Я надеюсь, что это помогает любому из:

http://pravinchavan.wordpress.com/2013/11/08/c-binding-with-node-js/

+3

объяснение в ответе @Aren Li намного лучше, чем статья, которую вы предоставляете здесь. Эта статья - мусор с точки зрения объяснения того, какие привязки. – mavili

24

Вместо того, чтобы понять, что node.js привязка, это более полезно, чтобы понять, что «привязки» в первую очередь.

Предположим, вы пишете веб-приложение, где бэкэнд node.js (JavaScript) получает запросы от клиентов, (2) ведет запросы к базам данных, (3) сортирует результаты запроса и (4) возвращает результаты для клиента. Теперь вы обычно будете писать весь код самостоятельно. Однако вы знаете, что есть отличная библиотека сортировки, которая может позаботиться о шаге 3 (т. Е. Результаты запроса сортировки). Единственная проблема заключается в том, что библиотека написана на языке системного программирования, например C/C++, тогда как ваш код написан на JavaScript. Обычно вы не можете использовать эту библиотеку в своем коде, потому что они находятся на разных языках программирования, но с привязками вы можете.

Привязки в основном представляют собой библиотеки, которые «связывают» два разных языка программирования, поэтому код, написанный на одном языке, может использоваться в коде, написанном в другой библиотеке. При наличии привязок вам не нужно снова писать весь код только потому, что они находятся на разных языках. Еще одна мотивация привязок заключается в том, что вы можете воспользоваться преимуществами разных языков программирования. Например, C/C++ намного быстрее, чем JavaScript. Возможно, было бы полезно написать некоторый код в C/C++ для повышения производительности.

Теперь давайте посмотрим на прилагаемую вами фотографию. Двигатель V8, согласно официальному сайту Google, является «written in C++». libuv добавляет слой абстракции, который предоставляет операции асинхронного ввода-вывода, написанные на C. Однако основные функциональные возможности Node.js, такие как создание сетей, запросы к базе данных, ввод/вывод файловой системы, предоставляются в библиотеках (или в модулях, если вы предпочитают), которые написаны на JavaScript. Кроме того, ваш код также написан на JavaScript. Теперь, чтобы эти технологии, написанные на разных языках программирования, обменивались данными друг с другом, вы должны «связывать» их вместе, используя привязки. Эти привязки являются привязками node.js.

В последнее время я написал статью, в которой объясняется архитектура Node.js' internal codebase, где я объяснил, как привязывать вписывается в Node.js. Я бы хотел, чтобы это помогло!

+0

Очень информативно ... насколько велик обязательный компонент этих проектов связывания? Когда я смотрю на произвольное репозиционирование «привязки узлов xxx», он кажется большим с томами файлов C/C++. Являются ли эти файлы только копией исходного источника, или они были полностью изменены и частично переписаны? – wayofthefuture

Смежные вопросы