javascript - meaning - bower معنى




ما الفرق بين Bower و npm؟ (6)

2017-أكتوبر التحديث

أوقف Bower أخيرًا. نهاية القصة.

إجابة قديمة

من Mattias Petter Johansson ، مطور جافا سكريبت في Spotify :

في معظم الحالات تقريبًا ، من الأفضل استخدام Browserify و npm على Bower. إنه ببساطة حل تغليف أفضل للتطبيقات الأمامية من Bower هو. في Spotify ، نستخدم npm لحزم وحدات الويب بالكامل (html و css و js) وتعمل بشكل جيد.

العلامات التجارية Bower نفسها كمدير الحزم للويب. سيكون رائعا إذا كان هذا صحيحا - مدير مجموعة الذي جعل حياتي أفضل كمطور أمامي سيكون رائعا. المشكلة هي أن Bower لا تقدم أدوات متخصصة لهذا الغرض. إنه لا يقدم أي أدوات أعلم أن npm لا ، ولا سيما تلك التي تكون مفيدة بشكل خاص لمطوري الواجهة الأمامية. هناك ببساطة أي فائدة لمطوّر الواجهة الأمامية لاستخدام Bower عبر npm.

يجب أن نتوقف عن استخدام bower ودمج حول npm. لحسن الحظ ، هذا ما يحدث :

مع browserify أو webpack ، يصبح من السهل جدًا تجميع جميع وحداتك في ملفات كبيرة الحجم ، وهو أمر رائع للأداء ، خاصة للأجهزة المحمولة. ليس الأمر كذلك مع باور ، التي تتطلب عملاً أكبر بكثير للحصول على نفس التأثير.

يوفر لك npm أيضًا القدرة على استخدام إصدارات متعددة من الوحدات في وقت واحد. إذا لم تكن قد قمت بإجراء الكثير من تطوير التطبيقات ، فقد يضر هذا الأمر في البداية بأنه أمر سيئ ، ولكن بمجرد أن تمر بنوبات قليلة من جحيم التبعية سوف تدرك أن امتلاكك للقدرة على الحصول على إصدارات متعددة من وحدة واحدة هو رتق جميل ميزة رائعة. لاحظ أن npm يحتوي على أداة dedupe مفيدة للغاية والتي تعمل تلقائيًا على التأكد من أنك تستخدم فقط إصدارين من وحدة نمطية إذا كان عليك فعلاً - إذا كان بإمكان وحدتين كلاهما استخدام نفس الإصدار من وحدة نمطية واحدة ، فسوف يفعل ذلك. ولكن إذا لم يتمكنوا من ذلك ، فأنت في متناول اليد.

(لاحظ أن Webpack و Webpack يعتبران على نطاق واسع أفضل من Browserify اعتبارًا من أغسطس 2016).

ما هو الفرق الأساسي بين كلاً من bower و npm ؟ فقط اريد شيئًا بسيطًا وبسيطًا. لقد رأيت بعض زملائي يستخدمون npm و npm بالتبادل في مشاريعهم.


Bower و Npm هما مديري حزم لـ javascript.

كوخ ريفي

تم إنشاء Bower فقط من أجل تطوير الواجهة الأمامية. تستخدم شجرة التبعية المسطحة ، التي تتطلب إصدارًا واحدًا فقط لكل حزمة ، مما يقلل من تحميل الصفحة. ويهدف أساسا إلى الحد الأدنى من تحميل الموارد. لديها أقل من المساهمين ، وبالتالي فإن عملية التنمية بطيئة.

لدى Bower ملف تكوين يسمى bower.json. في هذا الملف ، يمكننا الحفاظ على تهيئة Bower مثل أي تبعيات نحتاجها وتفاصيل التراخيص والوصف والاسم وغير ذلك. Bower مناسب للحزم الأمامية مثل jquery ، الزاوي ، التفاعل ، العض ، الضربة القاضية ، العمود الفقري وهكذا.

الآلية الوقائية الوطنية

Npm هو الأكثر استخدامًا لإدارة وحدات Node.js ، ولكنه يعمل أيضًا للواجهة الأمامية. يستخدم شجرة تبعية متداخلة وكذلك شجرة تبعية flat. أنها تحظى بشعبية ولديها الكثير من المساهمين. لذا فإن الإصدار الجديد الخاص بها يأتي دائمًا بميزات مثيرة.

يحتوي Npm على ملف تكوين يسمى package.json. في هذا الملف ، يمكننا الحفاظ على تهيئة Npm مثل أي تبعيات نحتاجها وتفاصيل التراخيص والوصف والاسم وغير ذلك. يوفر Npm التبعيات و DevDependencies. ستقوم التبعيات بتنزيل الملفات الأمامية وحفظها مثل Jquery و Angular وما إلى ذلك. سيقوم DevDependencies بتنزيل أدوات التطوير والمحافظة عليها مثل Grunt و Gulp و JSHint وما إلى ذلك.

ومن الواضح أن هذا لا يعمل بشكل جيد في الواجهة الأمامية ، لأننا بحاجة إلى مسج في مشاريعنا. نحن بحاجة إلى نسخة واحدة فقط من jQuery ، ولكن عندما تتطلب حزمة أخرى jQuery ، فستقوم بتنزيل نسخة أخرى من jQuery مرة أخرى. هذا هو أحد العيوب الرئيسية للـ Npm.

ملاحظة أساسية: السبب وراء استخدام العديد من المشروعات هو استخدام Bower للحزم الأمامية و Npm لأدوات المطورين. إن مضاعفة إدارة الحزم في مشروعك تجعل عملك أكثر صعوبة. Npm 3 مقترن Browserify أو webpack هو الطريق للذهاب الآن.


بالنسبة للعديد من الأشخاص الذين يعملون مع node.js ، فإن الفائدة الرئيسية للكوخ هي إدارة التبعيات غير javascript على الإطلاق. إذا كانوا يعملون مع اللغات التي تتحول إلى javascript ، فيمكن استخدام آلية npm لإدارة بعض تبعياتهم. ومع ذلك ، لن تكون كافة التبعيات الخاصة بهم وحدات node.js. قد يكون لبعض من تلك التي تم تجميعها إلى javascript غموض خاص بلغة المصدر المصدر ، مما يجعل تمريرها حول تجميعها إلى javascript خيارًا غير لائق عندما يتوقع المستخدمون شفرة المصدر.

لا يحتاج كل شيء في حزمة npm إلى javascript مقابل المستخدم ، ولكن بالنسبة لحزم مكتبة npm ، يجب أن يكون بعضها على الأقل.


تم العثور على هذا التفسير المفيد من http://ng-learn.org/2013/11/Bower-vs-npm/

من جهة ، تم إنشاء npm لتثبيت الوحدات النمطية المستخدمة في بيئة node.js ، أو أدوات التطوير التي تم إنشاؤها باستخدام node.js مثل Karma و lint و minifiers وما إلى ذلك. يمكن لـ npm تثبيت وحدات نمطية محليًا في مشروع (افتراضيًا في node_modules) أو عالميًا لاستخدامه بواسطة عدة مشاريع. في المشاريع الكبيرة ، طريقة تحديد التبعيات هي عن طريق إنشاء ملف يسمى package.json يحتوي على قائمة من التبعيات. يتم التعرف على تلك القائمة من قبل npm عند تشغيل تثبيت npm ، والذي يقوم بعد ذلك بتنزيلها وتثبيتها نيابةً عنك.

على الجانب الآخر ، تم إنشاء كوخ Bower لإدارة تبعيات الواجهة الأمامية الخاصة بك. المكتبات مثل jQuery و AngularJS وشرطة سفلية وما إلى ذلك. على غرار npm ، يوجد ملف يمكنك فيه تحديد قائمة من التبعيات تسمى bower.json. في هذه الحالة ، يتم تثبيت تبعيات الواجهة الأمامية الخاصة بك عن طريق تشغيل تثبيت bower الذي يقوم بتثبيتها في مجلد يسمى bower_components.

كما ترون ، على الرغم من قيامهم بأداء مهمة مماثلة ، فإنهم يستهدفون مجموعة مختلفة جدًا من المكتبات.


يحتفظ Bower بنسخة واحدة من الوحدات النمطية ، ولكنه يحاول مساعدتك فقط في اختيار أفضل واحد صحيح.

إدارة التبعية لجافا سكريبت: npm vs bower vs volo؟

NPM هو أفضل لوحدات العقدة لأن هناك نظام وحدة وكنت تعمل محليا. يعتبر Bower جيدًا للمتصفح نظرًا لأنه لا يوجد حاليًا إلا النطاق العالمي ، وتريد أن تكون انتقائيًا للغاية حول الإصدار الذي تعمل به.


npm هو الأكثر استخدامًا لإدارة الوحدات النمطية Node.js ، ولكنه يعمل أيضًا للواجهة الأمامية عند دمجه مع Browserify و / أو $ npm dedupe .

يتم إنشاء Bower فقط للواجهة الأمامية ويتم تحسينه مع وضع ذلك في الاعتبار. الاختلاف الأكبر هو أن npm تقوم بعمل شجرة تبعية متداخلة (حجم ثقيل) بينما يتطلب Bower شجرة تبعية مسطحة (تضع عبء دقة التبعية على المستخدم) .

تعني شجرة التبعية المتداخلة أن التبعيات الخاصة بك يمكن أن يكون لها تبعيات خاصة بها والتي يمكن أن يكون لها تبعية خاصة بها ، وهكذا. هذا رائع حقًا على الخادم حيث لا يتعين عليك الاهتمام كثيرًا بالفضاء والوقت. فهو لا يسمح لك بالاهتمام بصراعات التبعية حيث أن جميع الاعتمادات الخاصة بك تستخدم على سبيل المثال إصدارها الخاص من Underscore. من الواضح أن هذا لا يعمل جيدًا في الواجهة الأمامية. تخيل موقعًا يلزمه تنزيل ثلاث نسخ من jQuery.

السبب وراء استخدام العديد من المشاريع كلاهما هو استخدام Bower للحزم الأمامية و npm لأدوات المطور مثل Yeoman و Grunt و Gulp و JSHint و CoffeeScript وغيرها.

جميع مديري الحزم لديهم العديد من السلبيات. عليك فقط اختيار ما يمكنك العيش معه.

مصادر





bower