එන්පීඑම් එදිරිව බෝවර් එදිරිව බ්‍රව්සරිෆයිස් එදිරිව ගුල්ප් එදිරිව ග්‍රන්ට් එදිරිව වෙබ් පැක්


1893

මම වඩාත් ජනප්‍රිය ජාවාස්ක්‍රිප්ට් පැකේජ කළමණාකරුවන්, බණ්ඩලර්ස් සහ කාර්ය ධාවකයන් පිළිබඳ මගේ දැනුම සාරාංශ කිරීමට උත්සාහ කරමි. මම වැරදියි නම් කරුණාකර මාව නිවැරදි කරන්න:

  • npmසහ bowerපැකේජ කළමනාකරුවන් වේ. ඔවුන් යැපීම් බාගත කර තනිවම ව්‍යාපෘති ගොඩනගන්නේ කෙසේදැයි නොදනිති. ඔවුන් දන්නා දෙය නම් සියලු පරායත්තතාවයන් ලබා ගැනීමෙන් පසුව webpack/ gulp/ gruntඇමතීමයි.
  • bowerසමාන ය npm, නමුත් සමතලා වූ යැපුම් ගස් සාදයි ( npmඑය පුනරාවර්තව මෙන් නොව ). අර්ථය npmඑක් එක් පරායත්තතාව සඳහා පරායත්තතාවයන් ලබා ගනී (කිහිප වතාවක්ම එය ලබා ගත හැක), bowerඔබ අතින් උප පරායත්තයන් අතින් ඇතුළත් කිරීම අපේක්ෂා කරයි. සමහර විට bowerසහnpm (එක් එක් megabyte ඉදිරිපස අවසානයේ දී වැදගත් විය හැකි බැවින්) පිළිවෙළින් ඉදිරිපස අවසානය හා නැවත-අවසන් කිරීම සඳහා එක්ව භාවිතා කර ඇත.
  • grunt සහ gulp ස්වයංක්රීය කළ හැකි බව ස්වයංක්රීය සියල්ල කාර්ය අනු (එනම් බැදීමකට CSS / Sass, ප්රශස්ත රූප, මිටියක් කිරීමට හා minify / transpile එය) ය.
  • gruntඑදිරිව gulp( mavenඑදිරිව gradleහෝ වින්‍යාසය එදිරිව කේතය වැනි ය). Grunt පදනම් වී ඇත්තේ වෙනම ස්වාධීන කාර්යයන් වින්‍යාස කිරීම මත ය, සෑම කාර්යයක්ම ගොනුව විවෘත කරයි / හසුරුවයි / වසා දමයි. ගල්ප්ට අඩු කේත ප්‍රමාණයක් අවශ්‍ය වන අතර එය පදනම් වී ඇත්තේ නෝඩ් ප්‍රවාහයන් මත වන අතර එමඟින් නල දාම සෑදීමට ඉඩ සලසයි (එකම ගොනුව නැවත විවෘත කිරීම) සහ එය වේගවත් කරයි.
  • webpack (webpack-dev-server ) - මට නම් එය සියලු ජේඑස් / සීඑස්එස් මුරකරුවන් ගැන අමතක කිරීමට ඉඩ සලසන වෙනස්කම් නැවත රීලෝඩ් කිරීම සහිත කාර්ය ධාවකයෙකි.
  • npm/ bower+ ප්ලගීන මඟින් කාර්ය ධාවකයන් ආදේශ කළ හැකිය. ඔවුන්ගේ හැකියාවන් බොහෝ විට එකිනෙක හා සම්බන්ධ වන බැවින් ඔබට භාවිතා කිරීමට gulp/ gruntඉක්මවා යාමට අවශ්‍ය නම් වෙනස් ඇඟවුම් තිබේnpm + ප්ලගීන ඇත. නමුත් කාර්ය ධාවකයන් අනිවාර්යයෙන්ම සංකීර්ණ කාර්යයන් සඳහා වඩා හොඳය (උදා: “සෑම ගොඩනැගිල්ලකම මිටියක් සාදන්න, ES6 සිට ES5 දක්වා පාරදෘශ්‍ය කරන්න, එය සියලු බ්‍රව්සර් ඉමුලේටරවල ධාවනය කරන්න, තිර දර්ශන සාදා ftp හරහා ඩ්‍රොප්බොක්ස් වෙත යොදවන්න”).
  • browserifyබ්‍රව්සර් සඳහා ඇසුරුම් නෝඩ් මොඩියුල සඳහා ඉඩ ලබා දේ. browserifyඑදිරිව node'S requireසත්ය වන CommonJS එදිරිව AMD .

ප්රශ්නය:

  1. කුමක්ද webpackසහ webpack-dev-server? නිල ලියකියවිලි පවසන්නේ එය මොඩියුල බැඳුම්කරයක් බවයි, නමුත් මට නම් එය කාර්ය සාධක ධාවකයෙකි. මොකක්ද වෙනස?
  2. ඔබ භාවිතා browserifyකරන්නේ කොහේද ? නෝඩ් / ඊඑස් 6 ආනයනයන් සමඟ අපට එයම කළ නොහැකිද?
  3. කරන විට භාවිතා කරන gulp/ gruntපුරාnpm + ප්ලගීන භාවිතා කරන්නේ කවදාද?
  4. ඔබට සංයෝජනයක් භාවිතා කිරීමට අවශ්‍ය විට කරුණාකර උදාහරණ සපයන්න

52
රෝල්අප් එකතු කිරීමට කාලය තිබේද? 😝
gman

168
මෙය ඉතා සාධාරණ ප්‍රශ්නයකි. මා වැනි ව්‍යාජ වෙබ්
ඩෙව්වරු


41
Isher ධීවරයා මම මේ සඳහා මුළුමනින්ම අලුත් ය, එය මුළුමනින්ම නටන බවක් පෙනේ ...
ඩේවිඩ් ස්ටොසික්

13
Isher ධීවරයා මා කියවූ “නිර්දේශිත” ප්‍රකාශය ඊටත් වඩා භයානක විය! ඩී: මට අවශ්‍ය වන්නේ සීඑස්එස් / ජේඑස් ලිබ් කිහිපයක් භාවිතා කරන වේගවත් ස්ථිතික පිටුවක් තැනීමටයි, එය එකට සම්පාදනය කළ හැකි මෙවලමක් තිබීමෙන් ප්‍රයෝජන ලැබෙනු ඇත ... මගේ Ctrl-C වෙත යම් විවේකයක් ලබා දීම සඳහා යම් සැකසුම් එන්ජිමක් තුළට විසි කරන්න. / Ctrl-V ඇඟිලි, එය පරිපූර්ණ වනු ඇත ... එහෙත්, පැය ගණනක් ඇතුළත, තවමත් යාමට මාර්ගයක් සෙවීමට උත්සාහ කරයි ...
ඩේවිඩ් ස්ටොසික්

Answers:


1030

වෙබ් පැක් සහ බ්‍රවුසරකරණය

වෙබ් පැක් සහ බ්‍රව්සරීෆයි එකම කාර්යයක්ම කරයි, එය ඔබේ කේතය ඉලක්කගත පරිසරයක භාවිතා කිරීමට සැකසෙමින් පවතී (ප්‍රධාන වශයෙන් බ්‍රව්සරය, ඔබට නෝඩ් වැනි වෙනත් පරිසරයන් ඉලක්ක කළ හැකි වුවද). එවැනි සැකසීමේ ප්‍රති ult ලය මිටි එකක් හෝ කිහිපයක් වේ - ඉලක්කගත පරිසරයට ගැලපෙන එකලස් කළ ස්ක්‍රිප්ට්.

උදාහරණයක් ලෙස, ඔබ ඊඑස් 6 කේතය මොඩියුලවලට බෙදා ඇති බවත් එය බ්‍රව්සරයක ක්‍රියාත්මක කිරීමට අවශ්‍ය බවත් කියමු. එම මොඩියුලයන් නෝඩ් මොඩියුල නම්, ඒවා පවතින්නේ නෝඩ් පරිසරයේ පමණක් බැවින් බ්‍රව්සරය ඒවා තේරුම් නොගනී. IE11 වැනි පැරණි බ්‍රව්සර්වල ES6 මොඩියුල ක්‍රියා නොකරනු ඇත. එපමණක් නොව, බ්‍රව්සර් තවමත් ක්‍රියාත්මක නොකරන පරීක්ෂණාත්මක භාෂා විශේෂාංග (ඊඑස් ඊලඟ යෝජනා) ඔබ භාවිතා කර ඇති බැවින් එවැනි ස්ක්‍රිප්ට් ධාවනය කිරීමෙන් දෝෂ ඇතිවේ. වෙබ් පැක් සහ බ්‍රව්සරීෆයි වැනි මෙවලම් බ්‍රවුසරයකට ක්‍රියාත්මක කළ හැකි ආකෘතියකට එවැනි කේත පරිවර්තනය කිරීමෙන් මෙම ගැටලු විසඳයි . ඊට ඉහළින්, ඔවුන් එම මිටි මත විශාල විවිධාකාර ප්‍රශස්තිකරණ යෙදීමට ඉඩ සලසයි.

කෙසේ වෙතත්, වෙබ් පැක් සහ බ්‍රව්සරීෆයි විවිධාකාරයෙන් වෙනස් වන අතර, වෙබ් පැක් පෙරනිමියෙන් බොහෝ මෙවලම් ඉදිරිපත් කරයි (උදා: කේත බෙදීම), බ්‍රව්සරීෆයිට මෙය කළ හැක්කේ ප්ලගීන බාගත කිරීමෙන් පසුව පමණක් වන නමුත් ඒ දෙකම භාවිතා කිරීමෙන් සමාන ප්‍රති .ල ලැබෙනු ඇත. එය පුද්ගලික මනාපයන් වෙතට පැමිණේ (වෙබ් පැක් ප්‍රවණතාවක් ඇත). Btw, වෙබ් පැක් යනු කාර්ය ධාවකයෙකු නොවේ, එය ඔබගේ ලිපිගොනු වල ප්‍රොසෙසරයක් පමණි (එය ඒවා ඊනියා පැටවුම් සහ ප්ලගීන මඟින් සකසයි) සහ එය ක්‍රියාත්මක කරන්නෙකුට (වෙනත් ආකාරවලින්) කාර්ය ධාවකයෙකුට කළ හැකිය.


වෙබ් පැක් දේව් සේවාදායකය

වෙබ් පැක් ඩිව් සර්වර් බ්‍රව්සර්සින්ක් හා සමාන විසඳුමක් සපයයි - ඔබ වැඩ කරන විට ඔබේ යෙදුම වේගයෙන් යෙදවිය හැකි සංවර්ධන සේවාදායකයක් වන අතර ඔබේ සේවාදායකයේ ප්‍රගතිය වහාම තහවුරු කර ගත හැකිය. ඊනියා උණුසුම් මොඩියුල ප්‍රතිස්ථාපනය සමඟ නැවත පූරණය නොකර බ්‍රව්සරයට.


එන්පීඑම් ස්ක්‍රිප්ට් වලට එරෙහිව කාර්ය ධාවකයන්

මම ගුල්ප් එහි සංක්ෂිප්තභාවය සහ පහසු කාර්ය ලිවීම සඳහා භාවිතා කර ඇත, නමුත් පසුව මට ගුල්ප් හෝ ග්‍රන්ට් අවශ්‍ය නොවන බව සොයාගෙන ඇත. තෙවන පාර්ශවීය මෙවලම් ඔවුන්ගේ API හරහා ධාවනය කිරීම සඳහා මට අවශ්‍ය සෑම දෙයක්ම එන්පීඑම් ස්ක්‍රිප්ට් භාවිතයෙන් කළ හැකිය.ගුල්ප්, ග්‍රන්ට් හෝ එන්පීඑම් ස්ක්‍රිප්ට් අතර තේරීම ඔබේ කණ්ඩායමේ රසය හා අත්දැකීම් මත රඳා පවතී.

ගුල්ප් හෝ ග්‍රන්ට් හි කාර්යයන් ජේඑස් ගැන එතරම් හුරු නැති අයට පවා කියවීමට පහසු වන අතර, එය අවශ්‍ය හා ඉගෙන ගත යුතු තවත් මෙවලමක් වන අතර මම පෞද්ගලිකව මගේ පරායත්තතාවයන් අඩු කර දේවල් සරල කිරීමට කැමැත්තෙමි. අනෙක් අතට, මෙම කාර්යයන් එම තෙවන පාර්ශවීය මෙවලම් (උදා: නෝඩ් ස්ක්‍රිප්ට් වින්‍යාස කිරීම සහ පිරිසිදු කිරීමේ අරමුණු සඳහා රිම්රාෆ් ධාවනය කිරීම) ක්‍රියාත්මක කරන එන්පීඑම් ස්ක්‍රිප්ට් සහ (බොහෝ විට ජේඑස්) ස්ක්‍රිප්ට් සමඟ ප්‍රතිස්ථාපනය කිරීම වඩා අභියෝගාත්මක විය හැකිය. නමුත් බොහෝ අවස්ථාවන්හීදී, එම තිදෙනා ඔවුන්ගේ ප්‍රති .ල අනුව සමාන වේ.


උදාහරණ

නිදසුන් සඳහා, මෙම ප්‍රතික්‍රියා ආරම්භක ව්‍යාපෘතිය දෙස බැලීමට මම ඔබට යෝජනා කරමි , එමඟින් සම්පූර්ණ ගොඩනැගීම සහ යෙදවීමේ ක්‍රියාවලිය ආවරණය වන පරිදි එන්පීඑම් සහ ජේඑස් ස්ක්‍රිප්ට් වල හොඳ සංයෝජනයක් පෙන්වයි. ඔබට එම එන්පීඑම් ස්ක්‍රිප්ට් package.jsonමූල ෆෝල්ඩරයේ, නම් කළ දේපලකින් සොයාගත හැකිය scripts. එහිදී ඔබට බොහෝ විට වැනි විධානයන් හමුවනු babel-node tools/run startඇත. බාබෙල්-නෝඩ් යනු සීඑල්අයි මෙවලමකි (නිෂ්පාදන භාවිතය සඳහා අදහස් නොකෙරේ), මුලදී එය ES6 ගොනුව සම්පාදනය කරයි tools/run(run.js ගොනුව මෙවලම්වල පිහිටා ඇත ) - මූලික වශයෙන් ධාවක උපයෝගීතාවයකි. මෙම ධාවකය ශ්‍රිතයක් තර්කයක් ලෙස ගෙන එය ක්‍රියාත්මක කරයි, මේ අවස්ථාවේ දී start- තවත් උපයෝගීතාවයක් (start.js) ප්‍රභව ලිපිගොනු (සේවාදායකයා සහ සේවාදායකය යන දෙකම) එකතු කිරීම සහ යෙදුම සහ සංවර්ධන සේවාදායකය ආරම්භ කිරීම සඳහා වගකිව යුතු වේ (dev සේවාදායකය බොහෝ විට වෙබ් පැක් දේව් සේවාදායකය හෝ බ්‍රව්සර්සින්ක් වනු ඇත).

වඩාත් නිවැරදිව කථා කිරීම, start.jsසේවාදායකයා සහ සේවාදායක පාර්ශවීය මිටි නිර්මාණය කිරීම, සී express ්‍රගාමී සේවාදායකයක් ආරම්භ කිරීම සහ සාර්ථක දියත් කිරීමකින් පසුව බ්‍රව්සර් සමමුහුර්තකරණය ආරම්භ කළ අතර එය ලියන අවස්ථාවේ දී මෙන් පෙනුනි (කරුණාකර නවතම කේතය සඳහා ප්‍රතික්‍රියා ආරම්භක ව්‍යාපෘතිය වෙත යොමු වන්න ).

const bs = Browsersync.create();  
bs.init({
      ...(DEBUG ? {} : { notify: false, ui: false }),

      proxy: {
        target: host,
        middleware: [wpMiddleware, ...hotMiddlewares],
      },

      // no need to watch '*.js' here, webpack will take care of it for us,
      // including full page reloads if HMR won't work
      files: ['build/content/**/*.*'],
}, resolve)

වැදගත් කොටස නම් proxy.target, ඔවුන් ප්‍රොක්සි කිරීමට අවශ්‍ය සේවාදායක ලිපිනය සකසන තැන, එය http: // localhost: 3000 විය හැකි අතර , බ්‍රව්සර්සින්ක් http: // localhost: 3001 හි සේවාදායකයක් සවන්දීම ආරම්භ කරයි , එහිදී ජනනය කරන ලද වත්කම් ස්වයංක්‍රීය වෙනසකින් සේවය කරයි හඳුනාගැනීම සහ උණුසුම් මොඩියුලය ප්‍රතිස්ථාපනය කිරීම. ඔබට පෙනෙන පරිදි, filesඑක් එක් ලිපිගොනු හෝ රටා සහිත තවත් වින්‍යාස කිරීමේ දේපලක් තිබේ, බ්‍රවුසරය සමමුහුර්ත කිරීම සඳහා ඔරලෝසු සහ සමහරක් සිදුවුවහොත් බ්‍රව්සරය නැවත පූරණය කරයි, නමුත් විවරණය පවසන පරිදි, වෙබ් පැක් විසින් ජේඑම් ප්‍රභවයන් එච්එම්ආර් සමඟ තනිවම නැරඹීමට වගබලා ගනී, එබැවින් ඔවුන් සහයෝගයෙන් කටයුතු කරයි එතන.

දැන් මට එවැනි ග්‍රන්ට් හෝ ගල්ප් වින්‍යාසය පිළිබඳ සමාන උදාහරණයක් නොමැත, නමුත් ගුල්ප් සමඟ (හා තරමක් සමානව ග්‍රන්ට් සමඟ) ඔබ තනි කාර්යයන් gulpfile.js හි ලියනු ඇත.

gulp.task('bundle', function() {
  // bundling source files with some gulp plugins like gulp-webpack maybe
});

gulp.task('start', function() {
  // starting server and stuff
});

එහිදී ඔබ ආරම්භක කට්ටලයේ මෙන් බොහෝ දුරට සමාන දේ කරනු ඇත, මේ වතාවේ කාර්ය ධාවකය සමඟ, එය ඔබට යම් යම් ගැටලු විසඳයි, නමුත් එහි ගැටළු සහ භාවිතය ඉගෙන ගැනීමේදී යම් යම් දුෂ්කරතා ඉදිරිපත් කරයි, සහ මා පවසන පරිදි, ඔබට වැඩි පරායත්තතා ඇති විට, තවත් බොහෝ දේ වැරදියි. එවැනි මෙවලම් ඉවත් කිරීමට මා කැමති හේතුව එයයි.


3
නියම පිළිතුර! කරුණාකර බ්‍රව්සරයේ නැවත භාවිතා කිරීමේ නෝඩ් මොඩියුල කළමනාකරණය කිරීමට වෙබ් පැක් / බ්‍රව්සරයිෆයිස් ඔබට විස්තර කළ හැකිද?
VB_

4
වෙබ් පැක් මඟින් පරායත්තයන් (අපනයනය කරන ලද මොඩියුල අගයන්) වස්තුවට (ස්ථාපිත මොඩියුල) එකලස් කරයි. එබැවින් සෑම මොඩියුලයක්ම එම වස්තුවේ දේපළ වන අතර එම දේපලවල නම එහි හැඳුනුම්පත නියෝජනය කරයි (උදා: 1, 2, 3 ... ආදිය). ඔබේ මූලාශ්‍රයේ එවැනි මොඩියුලයක් අවශ්‍ය සෑම අවස්ථාවකම, වෙබ් පැක් මඟින් අගය මොඩියුල හැඳුනුම්පත සමඟ ක්‍රියාකාරී ඇමතුමක් බවට පරිවර්තනය කරයි (උදා. මට විශ්වාස නෑ, බ්‍රව්සරීෆ් එය හසුරුවන්නේ කෙසේද.
ඩෑන් මැකක්

An ඩෑන් ස්කොඩොපොල් ඔබට තවත් විස්තර කළ හැකිද?
අසීම් ​​කේටී

1
ගුල්ප් හෝ කෙඳිරිගෑමේ මූලික භාවිතය ඉදිරිපත් කිරීමට මම එකඟ නොවෙමි, මේ දෙක ගූගල් භාවිතා කිරීම සැසඳීම පහසුය, වෙබ් පැක්-ඩිව්-සේවාදායකයට පළමුව වෙබ් පැක් තේරුම් ගත යුතු අතර එය මෙම ප්‍රශ්නයේ / පිළිතුරේ විෂය පථයෙන් බැහැර ය, නමුත් මම ඉදිරිපත් කර ඇත්තෙමි සමහර බ්‍රව්සර්සින්ක් වින්‍යාසය. ඔබ ආරම්භක කට්ටලය සමඟ නිවැරදියි, මම ඒ ගැන වැඩි විස්තරයක් කළෙමි.
ඩෑන් මැකක්

5
සෑම නව පැකේජයක්ම භාවිතා කළ යුතුය යන ජනප්‍රිය මතය (වඩා) අනුගමනය කරනවාට වඩා දේවල් සරල ලෙස තබා ගැනීම සඳහා පරායත්තතා අඩු කිරීම සඳහා +1!
madannes

678

යාවත්කාලීන කිරීම 2018 ඔක්තෝබර්

ෆ්‍රන්ට් එන්ඩ් ඩිව් ගැන ඔබ තවමත් අවිනිශ්චිත නම්, ඔබට මෙහි ඇති විශිෂ්ට සම්පතක් පිළිබඳව ඉක්මණින් සොයා බැලිය හැකිය.

https://github.com/kamranahmedse/developer-roadmap

යාවත්කාලීන කිරීම 2018 ජුනි

ඔබ ආරම්භයේ සිටම නොසිටියේ නම් නවීන ජාවාස්ක්‍රිප්ට් ඉගෙනීම දුෂ්කර ය. ඔබ නවකයා නම්, වඩා හොඳ දළ විශ්ලේෂණයක් ලබා ගැනීම සඳහා මෙම විශිෂ්ට ලිවීම පරීක්ෂා කිරීමට මතක තබා ගන්න.

https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70

යාවත්කාලීන කිරීම 2017 ජූලි

2017 දී ඉදිරිපස සංවර්ධනයට ප්‍රවේශ වන්නේ කෙසේද යන්න පිළිබඳව ග්‍රාබ් කණ්ඩායමේ පුළුල් මඟ පෙන්වීමක් මෑතකදී මට හමු විය. ඔබට එය පහත පරිදි පරීක්ෂා කළ හැකිය.

https://github.com/grab/front-end-guide


මමත් සෑහෙන කාලයක් තිස්සේ මේ ගැන සෙව්වා, එහි මෙවලම් විශාල ප්‍රමාණයක් තිබෙන අතර ඒ සෑම එකක්ම අපට වෙනස් අංශයකින් ප්‍රතිලාභ ලබා දෙයි. වැනි මෙවලම් හරහා ප්‍රජාව බෙදී යයි Browserify, Webpack, jspm, Grunt and Gulp. ඔබටත් ඒ ගැන අහන්න පුළුවන් Yeoman or Slush. එය ගැටළුවක් නොවේ, පැහැදිලි මාවතක් තේරුම් ගැනීමට උත්සාහ කරන සෑම කෙනෙකුටම එය ව්‍යාකූල වේ.

කෙසේ හෝ මම යමක් දායක කිරීමට කැමතියි.

අන්තර්ගත වගුව

  • අන්තර්ගත වගුව
  • 1. පැකේජ කළමනාකරු
    • එන්පීඑම්
    • බෝවර්
    • අතර වෙනස BowerසහNPM
    • නූල්
    • jspm
  • 2. මොඩියුලය පූරණය / බන්ධනය
    • RequireJS
    • බ්‍රව්සර කරන්න
    • වෙබ් පැක්
    • SystemJS
  • 3. කාර්ය ධාවකය
    • මැසිවිලි නඟයි
    • ගුල්ප්
  • 4. පලංචියේ මෙවලම්
    • ස්ලෂ් සහ යේමන්

1. පැකේජ කළමනාකරු

පැකේජ කළමණාකරුවන් පුස්තකාල වැනි ව්‍යාපෘති පරායත්තයන් ස්ථාපනය කිරීම සහ යාවත්කාලීන කිරීම සරල කරයි: jQuery, Bootstrap ආදිය - ඔබේ වෙබ් අඩවියේ භාවිතා වන සහ ඔබ විසින් ලියන ලද සියල්ල නොවේ.

සියලුම පුස්තකාල වෙබ් අඩවි ගවේෂණය කිරීම, ලේඛනාගාරය බාගත කිරීම සහ ඉවත් කිරීම, ව්‍යාපෘති වෙත ලිපිගොනු පිටපත් කිරීම - මේ සියල්ල පර්යන්තයේ විධාන කිහිපයක් සමඟ ප්‍රතිස්ථාපනය වේ.

එන්පීඑම්

එය නියෝජනය කරන්නේ: Node JS package managerඔබේ මෘදුකාංගය රඳා පවතින සියලුම පුස්තකාල කළමනාකරණය කිරීමට ඔබට උපකාරී වේ. ඔබ ඔබේ අවශ්‍යතා විධාන රේඛාව තුළ package.jsonක්‍රියාත්මක npm installකර ක්‍රියාත්මක කරනු ඇත ... ඉන්පසු BANG, ඔබේ පැකේජ බාගත කර භාවිතා කිරීමට සූදානම්ය. එය front-end and back-endපුස්තකාල සඳහා දෙකම භාවිතා කළ හැකිය .

බෝවර්

ඉදිරිපස ඇසුරුම් කළමනාකරණය සඳහා, සංකල්පය එන්පීඑම් සමඟ සමාන වේ. ඔබගේ සියලු පුස්තකාල නම් ගොනුව තුල ගබඩා කර bower.jsonගියත් පසුව bower installඑම විධාන රේඛාවේ.

බෝවර් ඔවුන්ගේ පරිශීලකයාට එන්පීඑම් හෝ නූල් වෙත සංක්‍රමණය වීමට නිර්දේශ කරයි. කරුණාකර ප්‍රවේශම් වන්න

Bowerසහ අතර වෙනසNPM

Bowerසහ අතර ඇති විශාලතම වෙනසNPM NPM පිලිතුරු කැදැලි පරායත්ත වෘක්ෂය බව බවර් පහත ලෙස පැතලි පරායත්ත ගසක් අවශ්ය අතර වේ.

උපුටා ගැනීම Bower සහ npm අතර වෙනස කුමක්ද?

එන්පීඑම්

project root
[node_modules] // default directory for dependencies
 -> dependency A
 -> dependency B
    [node_modules]
    -> dependency A

 -> dependency C
    [node_modules]
    -> dependency B
      [node_modules]
       -> dependency A
    -> dependency D

බෝවර්

project root
[bower_components] // default directory for dependencies
 -> dependency A
 -> dependency B // needs A
 -> dependency C // needs B and D
 -> dependency D

යාවත්කාලීන කිරීම් කිහිපයක් තිබේ npm 3 Duplication and Deduplication, කරුණාකර වැඩි විස්තර සඳහා ලේඛනය විවෘත කරන්න.

නූල්

සසඳන විට තවත් වාසි කිහිපයක් සමඟ මෑතකදී JavaScript ප්‍රකාශයට පත් කරන ලද නව පැකේජ කළමනාකරුවෙක් . නූල් සමඟ, ඔබට තවමත් පැකේජය ලබා ගැනීම සඳහා දෙකම සහ රෙජිස්ට්රි භාවිතා කළ හැකිය . ඔබ මීට පෙර පැකේජයක් ස්ථාපනය කර ඇත්නම්, හැඹිලි පිටපතක් සාදයි .FacebookNPMNPMBoweryarnoffline package installs

jspm

JSPM යනු SystemJSවිශ්වීය මොඩියුල පැටවුම සඳහා වන පැකේජ කළමණාකරුවෙකි , එය ගතික ES6මොඩියුල පැටවුමට ඉහළින් ඉදිකර ඇත . එය සම්පූර්ණයෙන්ම නව පැකේජ කළමණාකරුවෙකු නොවන අතර එය තමන්ගේම නීති මාලාවක් ඇත, ඒ වෙනුවට එය දැනට පවතින පැකේජ ප්‍රභවයන් මත ක්‍රියාත්මක වේ. කොටුවෙන් පිටත, එය සමඟ GitHubසහ npm. බොහෝ Bowerපදනම් වූ පැකේජ පදනම් වී ඇති හෙයින් GitHub, අපට එම පැකේජ ද භාවිතා jspmකර ස්ථාපනය කළ හැකිය . පහසු ස්ථාපනය සඳහා බහුලව භාවිතා වන ඉදිරිපස පැකේජ ලැයිස්තුගත කරන ලේඛනයක් එහි ඇත.

Bowerසහ අතර ඇති වෙනස බලන්න jspm: පැකේජ කළමනාකරු: බෝවර් එදිරිව jspm


2. මොඩියුලය පූරණය / බන්ධනය

ඕනෑම පරිමාණයක බොහෝ ව්‍යාපෘති වල කේත කිහිපයක් ගොනු අතර බෙදී යයි. ඔබට එක් එක් ගොනුව තනි <script>ටැගයක් සමඟ ඇතුළත් කළ හැකිය , කෙසේ වෙතත්, <script>නව HTTP සම්බන්ධතාවයක් ස්ථාපනය කරයි, සහ කුඩා ලිපිගොනු සඳහා - මොඩියුලරිටියේ ඉලක්කයක් - සම්බන්ධතාවය සැකසීමට කාලය දත්ත මාරු කිරීමට වඩා සැලකිය යුතු කාලයක් ගතවනු ඇත. ස්ක්‍රිප්ට් බාගත කරන අතරතුර, පිටුවේ කිසිදු අන්තර්ගතයක් වෙනස් කළ නොහැක.

  • බාගත කිරීමේ වේලාව පිළිබඳ ගැටළුව බොහෝ දුරට විසඳිය හැක්කේ සරල මොඩියුල සමූහයක් තනි ගොනුවකට සම්බන්ධ කර එය අවම කිරීමෙනි.

උදා

<head>
    <title>Wagon</title>
    <script src=“build/wagon-bundle.js”></script>
</head>
  • කාර්ය සාධනය පැමිණෙන්නේ නම්යශීලීභාවයේ වියදමෙනි. ඔබේ මොඩියුලයන් අතර අන්තර් පරායත්තතාවයක් තිබේ නම්, මෙම නම්යශීලීභාවය නොමැතිකම ප්‍රදර්ශනාගාරයක් විය හැකිය.

උදා

<head>
    <title>Skateboard</title>
    <script src=“connectors/axle.js”></script>
    <script src=“frames/board.js”></script>
    <!-- skateboard-wheel and ball-bearing both depend on abstract-rolling-thing -->
    <script src=“rolling-things/abstract-rolling-thing.js”></script>
    <script src=“rolling-things/wheels/skateboard-wheel.js”></script>
    <!-- but if skateboard-wheel also depends on ball-bearing -->
    <!-- then having this script tag here could cause a problem -->
    <script src=“rolling-things/ball-bearing.js”></script>
    <!-- connect wheels to axle and axle to frame -->
    <script src=“vehicles/skateboard/our-sk8bd-init.js”></script>
</head>

පරිගණකවලට එය ඔබට කළ හැකි ප්‍රමාණයට වඩා හොඳින් කළ හැකි අතර, ඒ නිසා ඔබ සෑම දෙයක්ම තනි ගොනුවකට ස්වයංක්‍රීයව එකතු කිරීමට මෙවලමක් භාවිතා කළ යුතුය.

ඉන් පසුව අපි ගැන අසා RequireJS, Browserify, WebpackහාSystemJS

RequireJS

එය JavaScriptගොනුවක් සහ මොඩියුල පැටවුමකි. එය බ්‍රව්සරයේ භාවිතය සඳහා ප්‍රශස්තිකරණය කර ඇත, නමුත් එය වෙනත් ජාවාස්ක්‍රිප්ට් පරිසරවල භාවිතා කළ හැකියNode .

උදා: myModule.js

// package/lib is a dependency we require
define(["package/lib"], function (lib) {
  // behavior for our module
  function foo() {
    lib.log("hello world!");
  }

  // export (expose) foo to other modules as foobar
  return {
    foobar: foo,
  };
});

තුළ main.js, අපට myModule.jsයැපීමක් ලෙස ආනයනය කර එය භාවිතා කළ හැකිය.

require(["package/myModule"], function(myModule) {
    myModule.foobar();
});

එවිට අපගේ HTML, අපට භාවිතා කිරීමට යොමු විය හැකිය RequireJS.

<script src=“app/require.js data-main=“main.js ></script>

ගැන වැඩිදුර කියවන්න CommonJSසහ AMDපහසුවෙන් අවබෝධය ලබා ගන්න. CommonJS, AMD සහ RequireJS අතර සම්බන්ධතාවය?

බ්‍රව්සර කරන්න

CommonJSබ්‍රව්සරයේ ආකෘතිගත මොඩියුල භාවිතා කිරීමට ඉඩ දීම සඳහා පිටත්ව යන්න . එහි Browserifyප්‍රති, ලයක් වශයෙන්, මොඩියුල බණ්ඩලයක් තරම් මොඩියුල පැටවුමක් නොවේ:Browserify මුළුමනින්ම ගොඩනංවන කාල මෙවලමක් වන අතර එමඟින් කේත මිටියක් නිපදවන අතර එමඟින් සේවාදායකයාගේ පැත්තට පැටවිය හැකිය.

නෝඩ් සහ එන්පීඑම් ස්ථාපනය කර ඇති බිල්ඩ් මැෂින් එකකින් ආරම්භ කර පැකේජය ලබා ගන්න:

npm install -g save-dev browserify

ඔබේ මොඩියුලයන් CommonJSආකෘතියෙන් ලියන්න

//entry-point.js
var foo = require("../foo.js");
console.log(foo(4));

සතුටින් සිටින විට, බැඳීමට විධානය නිකුත් කරන්න:

browserify entry-point.js -o bundle-name.js

බ්‍රව්සරීෆ් පුනරාවර්තන ලෙස පිවිසුම් ලක්ෂ්‍යයේ සියලු පරායත්තයන් සොයාගෙන ඒවා තනි ගොනුවකට එක්රැස් කරයි:

<script src="”bundle-name.js”"></script>

වෙබ් පැක්

එය ඔබගේ සියලු ස්ථිතික වත්කම්, JavaScriptරූප, CSS සහ තවත් දේ එක් ගොනුවකට එක් කරයි. විවිධ වර්ගයේ පැටවුම් හරහා ගොනු සැකසීමටද එය ඔබට හැකියාව ලබා දෙයි. ඔබ ඔබේ ලිවීමට හැකි JavaScriptසමග CommonJSහෝ AMDමොඩියුල කාරක රීති. එය ගොඩනැගීමේ ගැටලුවට මූලික වශයෙන් වඩා ඒකාබද්ධ හා මතවාදී ආකාරයකින් පහර දෙයි. දී Browserifyඔබ භාවිතා Gulp/Gruntසහ අදාළ කටයුත්ත ඉටු කිරීමට වනාහී සහ Plugins දිගු ලැයිස්තුවක්. Webpackඔබට සාමාන්‍යයෙන් අවශ්‍ය නොවන Gruntහෝ කිසිසේත් ප්‍රමාණවත් නොවන බලයක් ලබා දෙයි Gulp.

මූලික භාවිතය සරල නැත. Browserify වැනි වෙබ් පැක් ස්ථාපනය කරන්න:

npm install -g save-dev webpack

තවද විධානයට පිවිසුම් ස්ථානයක් සහ ප්‍රතිදාන ගොනුවක් ලබා දෙන්න:

webpack ./entry-point.js bundle-name.js

SystemJS

එය අද ( ) භාවිතා කරන ඕනෑම ජනප්‍රිය ආකෘතියක ධාවන වේලාවේදී මොඩියුල ආනයනය කළ හැකි මොඩියුල පැටවුමකිCommonJS, UMD, AMD, ES6 . එය ES6මොඩියුල ලෝඩර් පොලිෆිල් මුදුනේ ඉදිකර ඇති අතර එය භාවිතා කරන ආකෘතිය හඳුනාගෙන නිසි ලෙස හැසිරවීමට තරම් බුද්ධිමත් ය. SystemJSද ES6 කේතය transpile හැක (සමග Babelහෝ Traceur) හෝ වැනි වෙනත් භාෂා TypeScriptහා CoffeeScriptප්ලගින භාවිතා කිරීම.

කුමක්ද node moduleසහ එය බ්‍රව්සරයට හොඳින් අනුගත නොවන්නේ ඇයිද යන්න දැන ගැනීමට අවශ්‍යය .

වඩාත් ප්‍රයෝජනවත් ලිපිය:


ඇයි jspmසහ SystemJS?

ප්රධාන ඉලක්ක එකක් ES6හී (අන්තර්ජාලයේ ඕනෑම තැනක සිට ඕනෑම ජාවාස්ක්රිප්ට් පුස්තකාල ස්ථාපනය සහ භාවිතා කිරීමට එය ඇත්තටම සරල බවට පත් කිරීම Github, npmආදිය). අවශ්‍ය වන්නේ කරුණු දෙකක් පමණි:

  • පුස්තකාලය ස්ථාපනය කිරීම සඳහා තනි විධානයක්
  • පුස්තකාලය ආනයනය කර එය භාවිතා කිරීම සඳහා එක් කේත පේළියක්

ඉතින් jspm, ඔබට එය කළ හැකිය.

  1. විධානයක් සමඟ පුස්තකාලය ස්ථාපනය කරන්න: jspm install jquery
  2. තනි කේත පේළියකින් පුස්තකාලය ආයාත කරන්න, ඔබේ HTML ගොනුව තුළ බාහිර යොමු කිරීමක් අවශ්‍ය නොවේ.

display.js

var $ = require('jquery');

$('body').append("I've imported jQuery!");
  1. System.config({ ... })ඔබේ මොඩියුලය ආයාත කිරීමට පෙර ඔබ මේවා වින්‍යාස කරයි. සාමාන්‍යයෙන් ක්‍රියාත්මක jspm initවන විට , මේ සඳහා නම් කරන ලද ගොනුවක් config.jsඇත.

  2. මෙම ස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට නම්, අප පූරණය කළ යුතුය system.js හා config.jsHTML වලින් පිටුවේ. ඊට පසු, අපි මොඩියුලය පැටවුම display.jsභාවිතයෙන් ගොනුව SystemJSපටවන්නෙමු.

index.html

<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
  System.import("scripts/display.js");
</script>

මෙසේ විස්තර කරයි: ද භාවිතා කළ හැක npmසමග Webpackෙකෝණික 2 ඉල්ලුම් කර තිබේ. jspmසමඟ ඒකාබද්ධ කිරීම සඳහා සංවර්ධනය කරන ලද බැවින්SystemJS එය පවතින මත වැඩ npmමූලාශ්රය, එසේ ඔබේ පිළිතුර ඔබට භාරයි.


3. කාර්ය ධාවකය

කාර්ය ධාවකයන් සහ ගොඩනැගීමේ මෙවලම් මූලික වශයෙන් විධාන රේඛා මෙවලම් වේ. අප ඒවා භාවිතා කළ යුත්තේ ඇයි: එක වචනයකින්: ස්වයංක්‍රීයකරණය . වැනි පුනරාවර්තන කාර්යයන් සිදු කිරීමේදී ඔබ කළ යුතු අඩු කාර්යය , සම්පාදනය කිරීම, ඒකක පරීක්ෂා කිරීම, ලින්ටින් , මීට පෙර විධාන රේඛාව සමඟ හෝ අතින් කිරීමට අපට බොහෝ වාර ගණනක් වැය විය.

මැසිවිලි නඟයි

කේත පූර්ව සැකසීමට හෝ වින්‍යාස ගොනුවක් සමඟ බිල්ඩ් ස්ක්‍රිප්ට් සෑදීමට ඔබේ සංවර්ධන පරිසරය සඳහා ඔබට ස්වයංක්‍රීයකරණය නිර්මාණය කළ හැකි අතර සංකීර්ණ කාර්යයක් හැසිරවීම ඉතා අපහසු බව පෙනේ. පසුගිය වසර කිහිපය තුළ ජනප්‍රියයි.

සෑම කාර්යයක්ම Gruntඑකිනෙකට වෙනස් ප්ලගීන වින්‍යාසයන්ගෙන් සමන්විත වන අතර, ඒවා එකින් එක ක්‍රියාත්මක වන්නේ දැඩි ස්වාධීන හා අනුක්‍රමික ආකාරයකට ය.

grunt.initConfig({
    clean: {
    src: ['build/app.js', 'build/vendor.js']
    },

    copy: {
    files: [{
        src: 'build/app.js',
        dest: 'build/dist/app.js'
    }]
    }

    concat: {
    'build/app.js': ['build/vendors.js', 'build/app.js']
    }

    // ... other task configurations ...

});

grunt.registerTask('build', ['clean', 'bower', 'browserify', 'concat', 'copy']);

ගුල්ප්

ස්වයංක්‍රීයකරණය හරියට Gruntවින්‍යාසයන් වෙනුවට, ඔබට JavaScriptඑය නෝඩ් යෙදුමක් මෙන් ධාරාවන් සමඟ ලිවිය හැකිය . මේ දිනවල කැමති වන්න.

මෙය Gulpනියැදි කාර්ය ප්‍රකාශනයකි.

//import the necessary gulp plugins
var gulp = require("gulp");
var sass = require("gulp-sass");
var minifyCss = require("gulp-minify-css");
var rename = require("gulp-rename");

//declare the task
gulp.task("sass", function (done) {
  gulp
    .src("./scss/ionic.app.scss")
    .pipe(sass())
    .pipe(gulp.dest("./www/css/"))
    .pipe(
      minifyCss({
        keepSpecialComments: 0,
      })
    )
    .pipe(rename({ extname: ".min.css" }))
    .pipe(gulp.dest("./www/css/"))
    .on("end", done);
});

තවත් බලන්න: https://medium.com/@preslavrachev/gulp-vs-grunt-why-one-why-the-other-f5d3b398edc4#.fte0nahri


4. පලංචියේ මෙවලම්

ස්ලෂ් සහ යේමන්

ඔබට ඔවුන් සමඟ ආරම්භක ව්‍යාපෘති නිර්මාණය කළ හැකිය. උදාහරණයක් ලෙස, ඔබ HTML සහ SCSS සමඟ මූලාකෘතියක් තැනීමට සැලසුම් කර ඇත, පසුව scss, css, img, fonts වැනි ෆෝල්ඩරයක් අතින් සාදන්න. ඔබට ස්ථාපනය කළ හැකියyeoman සරල ස්ක්‍රිප්ටයක් කර ධාවනය . එහෙනම් මෙතන හැම දෙයක්ම ඔබ වෙනුවෙන්.

වැඩි විස්තර මෙතැනින් සොයා ගන්න .

npm install -g yo
npm install --global generator-h5bp
yo h5bp

තවත් බලන්න: https://www.quora.com/What-are-the-differences-between-NPM-Bower-Grunt-Gulp-Webpack-Browserify-Slush-Yeoman-and-Express


මගේ පිළිතුර ප්‍රශ්නයේ අන්තර්ගතයට නොගැලපෙන නමුත් මම ගූගල්හි මෙම දැනුම සොයන විට, මම සෑම විටම ඉහළින්ම දකින ප්‍රශ්නය නිසා සාරාංශයක් ලෙස පිළිතුරු දීමට මම තීරණය කළෙමි. මම හිතනවා ඔයාලට ඒක ප්‍රයෝජනවත් වෙයි කියලා.

ඔබ මෙම ලිපියට කැමති නම්, ඔබට මගේ බ්ලොග් අඩවියේ trungk18.com හි වැඩිදුර කියවිය හැකිය . පිවිසීමට ස්තූතියි :)


64

හරි, ඔවුන් සියල්ලන්ටම යම් සමානකම් තිබේ, ඔවුන් ඔබ වෙනුවෙන් එකම දේ වෙනස් හා සමාන ආකාරයකින් කරයි, මම ඒවා ප්‍රධාන කණ්ඩායම් 3 කට බෙදා දෙමි පහත පරිදි :


1) මොඩියුල මිටි

වෙබ් පැක් සහ ජනප්‍රිය ඒවා ලෙස බ්‍රවුසරකරණය කරන්න, කාර්ය ධාවකයන් මෙන් වැඩ කරන්න, නමුත් වඩාත් නම්‍යශීලී බවක් ඇතුව, එය ඔබගේ සැකසුම ලෙස සියල්ල එකට එකතු කරනු ඇත, එබැවින් ඔබට ප්‍රති result ලය bundle.js ලෙස පෙන්වා දිය හැකිය, උදාහරණයක් ලෙස CSS සහ Javascript ඇතුළු තනි ගොනුවක, එක් එක් වැඩි විස්තර, පහත විස්තර බලන්න:

වෙබ් පැක්

වෙබ් පැක් යනු නූතන ජාවාස්ක්‍රිප්ට් යෙදුම් සඳහා මොඩියුල බණ්ඩලයකි. වෙබ් පැක් මඟින් ඔබේ යෙදුම ක්‍රියාවට නංවන විට, එය ඔබේ යෙදුමට අවශ්‍ය සෑම මොඩියුලයක්ම ඇතුළත් වන පරායත්ත ප්‍රස්ථාරයක් පුනරාවර්තනය කරයි, ඉන්පසු එම මොඩියුල සියල්ලම මිටි කුඩා ගණනකට ඇසුරුම් කරයි - බොහෝ විට එකක් පමණක් - බ්‍රව්සරය විසින් පටවනු ලැබේ.

එය ඇදහිය නොහැකි තරම් වින්‍යාසගත කළ හැකි නමුත් ආරම්භ කිරීම සඳහා ඔබ තේරුම් ගත යුත්තේ මූලික සංකල්ප හතරක් පමණි: ප්‍රවේශය, ප්‍රතිදානය, පැටවුම් සහ ප්ලගීන.

සවිස්තරාත්මක සංකල්ප විශේෂිත භාවිත අවස්ථා සඳහා සබැඳි සපයන අතරම මෙම සංකල්ප පිළිබඳ ඉහළ මට්ටමේ දළ විශ්ලේෂණයක් ලබා දීමට මෙම ලේඛනය අදහස් කෙරේ.

තවත් මෙහි

බ්‍රවුසර කරන්න

බ්‍රව්සරීෆයි යනු සංවර්ධන මෙවලමක් වන අතර එය බ්‍රවුසරයේ භාවිතය සඳහා සම්පාදනය කරන node.js විලාසිතාවේ මොඩියුල ලිවීමට අපට ඉඩ සලසයි. Node එක වගේම, අපි මොඩියුල වෙනම ලිපිගොනු වල ලියන්නෙමු, මොඩියුලය භාවිතා කරමින් බාහිර ක්‍රම සහ ගුණාංග අපනයනය කරන්නෙමු. අවශ්‍ය ශ්‍රිතය භාවිතයෙන් අපට වෙනත් මොඩියුලයන් පවා අවශ්‍ය විය හැකි අතර, අපි සාපේක්ෂ මාර්ගය මඟ හැරියහොත් එය node_modules නාමාවලියෙහි ඇති මොඩියුලයට විසඳනු ඇත.

තවත් මෙහි


2) කාර්ය ධාවකයන්

gulp සහ grunt යනු කාර්ය ධාවකයන් වන අතර, මූලික වශයෙන් ඔවුන් කරන්නේ කුමක්ද, කාර්යයන් නිර්මාණය කිරීම සහ ඔබට අවශ්‍ය විටෙක ඒවා ක්‍රියාත්මක කිරීම, නිදසුනක් ලෙස ඔබ ඔබේ CSS අවම කිරීම සඳහා ප්ලගිනයක් ස්ථාපනය කර පසුව අවම කිරීම සඳහා සෑම අවස්ථාවකදීම එය ක්‍රියාත්මක කරන්න, එක් එක් ගැන වැඩි විස්තර:

ගල්ප්

gulp.js යනු ෆ්‍රැක්ටල් නවෝත්පාදන සහ GitHub හි විවෘත මූලාශ්‍ර ප්‍රජාව විසින් විවෘත කරන ලද ජාවාස්ක්‍රිප්ට් මෙවලම් කට්ටලයක් වන අතර එය ඉදිරිපස අන්තයේ වෙබ් සංවර්ධනයේදී ප්‍රවාහය ගොඩනැගීමේ පද්ධතියක් ලෙස භාවිතා කරයි. එය Node.js සහ Node පැකේජ කළමණාකරු (npm) මත ගොඩනගා ඇති අතර එය අවම කිරීම, සංක්ෂිප්ත කිරීම, හැඹිලි කඩාවැටීම, ඒකක පරීක්ෂාව, ලින්ටින් කිරීම, ප්‍රශස්තිකරණය වැනි වෙබ් සංවර්ධනයට සම්බන්ධ වන කාලය නාස්ති කරන හා පුනරාවර්තන කාර්යයන් ස්වයංක්‍රීය කිරීම සඳහා භාවිතා කරයි. එහි කාර්යයන් නිර්වචනය කිරීම සඳහා කේත ඉක්මවා වින්‍යාස කිරීමේ ප්‍රවේශයක් වන අතර ඒවා ක්‍රියාත්මක කිරීම සඳහා එහි කුඩා තනි අරමුණු සහිත ප්ලගීන මත රඳා පවතී. gulp පරිසර පද්ධතියට එවැනි ප්ලගීන 1000+ ක් ඇත.

තවත් මෙහි

මැසිවිලි නඟයි

ග්‍රන්ට් යනු ජාවාස්ක්‍රිප්ට් කාර්ය ධාවකයෙකි, අවම කිරීම, සම්පාදනය, ඒකක පරීක්ෂාව, ලින්ටින් වැනි නිතර භාවිතා කරන කාර්යයන් ස්වයංක්‍රීයව ඉටු කිරීමට භාවිතා කරන මෙවලමකි. එය ගොනුවක අර්ථ දක්වා ඇති අභිරුචි කාර්යයන් ක්‍රියාත්මක කිරීම සඳහා විධාන රේඛා අතුරු මුහුණතක් භාවිතා කරයි (ග්‍රන්ට්ෆයිල් ලෙස හැඳින්වේ) . ග්‍රන්ට් බෙන් අල්මන් විසින් නිර්මාණය කරන ලද අතර එය ලියා ඇත්තේ Node.js හි ය. එය npm හරහා බෙදා හරිනු ලැබේ. වර්තමානයේ, ග්‍රන්ට් පරිසර පද්ධතියේ ප්ලගීන පන්දහසකට වඩා තිබේ.

තවත් මෙහි


3) පැකේජ කළමනාකරුවන්

පැකේජ කළමණාකරුවන්, ඔවුන් කරන්නේ ඔබේ යෙදුමට අවශ්‍ය ප්ලගීන කළමනාකරණය කිරීම සහ පැකේජ.ජේසන් භාවිතයෙන් ඒවා ඔබ වෙනුවෙන් ස්ථාපනය කිරීමයි. ඔබට මොඩියුල යාවත්කාලීන කිරීමට, ඒවා ස්ථාපනය කිරීමට සහ ඔබේ යෙදුම හරහා බෙදා ගැනීමට ඉතා පහසුය, එක් එක් සඳහා වැඩි විස්තර:

npm

npm යනු ජාවාස්ක්‍රිප්ට් ක්‍රමලේඛන භාෂාව සඳහා ඇසුරුම් කළමණාකරුවෙකි. එය ජාවාස්ක්‍රිප්ට් ධාවන කාල පරිසරය සඳහා වන පෙරනිමි පැකේජ කළමනාකරු වේ. Node.js. එය විධාන රේඛා සේවාදායකයකුගෙන් සමන්විත වන අතර එය npm ලෙසද හැඳින්වේ, සහ පොදු පැකේජවල මාර්ගගත දත්ත ගබඩාවක් වන npm රෙජිස්ට්‍රි ලෙසද හැඳින්වේ. රෙජිස්ට්රි සේවාදායකයා හරහා ප්රවේශ වන අතර, පවතින පැකේජ එන්පීඑම් වෙබ් අඩවිය හරහා ගවේෂණය කර සෙවිය හැකිය.

තවත් මෙහි

bower

බෝවර්ට HTML, CSS, JavaScript, අකුරු හෝ රූප ගොනු අඩංගු සංරචක කළමනාකරණය කළ හැකිය. බෝවර් කේතය සංයුක්ත කිරීම හෝ අවම කිරීම හෝ වෙනත් කිසිවක් නොකරයි - එය ඔබට අවශ්‍ය පැකේජවල නිවැරදි අනුවාදයන් සහ ඒවායේ පරායත්තතාවයන් ස්ථාපනය කරයි. ආරම්භ කිරීම සඳහා, බෝවර් වැඩ කරන්නේ සෑම තැනකින්ම පැකේජ ලබා ගැනීම සහ ස්ථාපනය කිරීම, දඩයම් කිරීම, සොයා ගැනීම, බාගත කිරීම සහ ඔබ සොයන දේවල් සුරැකීමෙනි. බෝවර් මෙම පැකේජයන් මැනිෆෙස්ට් ගොනුවක් වන bower.json හි සටහන් කරයි.

තවත් මෙහි

සහ අතපසු නොකළ යුතු නවතම පැකේජ කළමණාකරු, එය තරුණ හා වේගවත් සැබෑ වැඩ පරිසරයේ මා කලින් භාවිතා කළ npm හා සසඳන විට, මොඩියුල නැවත ස්ථාපනය කිරීම සඳහා, මොඩියුලයේ පැවැත්ම පරීක්ෂා කිරීම සඳහා එය node_modules ෆෝල්ඩරය දෙවරක් පරීක්ෂා කරයි, මොඩියුල ස්ථාපනය කිරීමට අඩු කාලයක් ගත වන බව පෙනේ:

නූල්

නූල් යනු ඔබේ කේතය සඳහා ඇසුරුම් කළමණාකරුවෙකි. ලොව පුරා සිටින අනෙකුත් සංවර්ධකයින් සමඟ කේත භාවිතා කිරීමට සහ බෙදා ගැනීමට එය ඔබට ඉඩ දෙයි. නූල් මෙය ඉක්මණින්, ආරක්ෂිතව සහ විශ්වසනීයව සිදු කරයි, එබැවින් ඔබ කිසි විටෙකත් කරදර විය යුතු නැත.

විවිධ ගැටලු සඳහා වෙනත් සංවර්ධකයින්ගේ විසඳුම් භාවිතා කිරීමට නූල් ඔබට ඉඩ සලසයි, එමඟින් ඔබේ මෘදුකාංගය සංවර්ධනය කිරීම පහසු කරයි. ඔබට ගැටළු තිබේ නම්, ඔබට ගැටළු වාර්තා කිරීමට හෝ නැවත දායක වීමට හැකි අතර, ගැටළුව නිරාකරණය වූ විට, ඒ සියල්ල යාවත්කාලීනව තබා ගැනීමට ඔබට නූල් භාවිතා කළ හැකිය.

කේතය බෙදාගනු ලබන්නේ පැකේජයක් ලෙසිනි (සමහර විට මොඩියුලයක් ලෙස හැඳින්වේ). පැකේජයක සියලුම කේත බෙදාගෙන ඇති අතර පැකේජය විස්තර කරන package.json ගොනුවක් ද අඩංගු වේ.

තවත් මෙහි



ගල්ප් ප්ලගීන ලැයිස්තුවක් තිබේද? ඇත්තටම 1000+ ක් තිබේද? npm ආපසු එන්නේ 20 ක් ද?
flurbius

1
විශිෂ්ට සාරාංශයක්. නවීන වෙබ් සංවර්ධනයක් පිළිබඳ ඕනෑම සාකච්ඡාවක් සඳහා ප්‍රවේශ ස්ථානයක් විය යුතුය.
ඇඩම් බුබෙලා

1
lflurbius ඔව්, මෙන්න: gulpjs.com/plugins . දැනට ගල්ප් ප්ලගීන 3,465 ක් ඇති බව පෙනේ.
mts knn

52

ඔබට npmcompare හි තාක්ෂණික සංසන්දනයක් සොයාගත හැකිය

බ්‍රව්සරයිෆයිස් එදිරිව ග්‍රන්ට් එදිරිව

ඔබට පෙනෙන පරිදි සාමාන්‍යයෙන් සෑම දින 4 කට වරක්ම නව සංස්කරණයක් එළියට එන විට වෙබ් පැක් ඉතා හොඳින් නඩත්තු වේ. නමුත් ගුල්ප් ඔවුන් සියල්ලන්ගේම විශාලතම ප්‍රජාව ඇති බව පෙනේ (ගිතුබ්හි තරු 20K ට වඩා වැඩි) ග්‍රන්ට් තරමක් නොසලකා හැර ඇති බවක් පෙනේ (අනෙක් අය සමඟ සසඳන විට)

එබැවින් එකක් තෝරා ගැනීමට අවශ්‍ය නම් මම ගුල්ප් සමඟ යන්නෙමි


6
වෙබ් පැක් දැන් 26k ආරම්භ වන්නේ ගිතුබ් සහ ගල්ප් 25.7k සමඟ ය. තවදුරටත් තීරණය කිරීමට ජනප්‍රිය සාධකය භාවිතා කළ නොහැක ...
රේයි රොඩ්ඩ්


15

වෙබ් පැක් සහ වෙබ් පැක්-ඩිව්-සර්වර් යනු කුමක්ද? නිල ලියකියවිලි පවසන්නේ එය මොඩියුල බැඳුම්කරයක් බවයි, නමුත් මට නම් එය කාර්ය සාධක ධාවකයෙකි. මොකක්ද වෙනස?

webpack-dev-server යනු වෙබ් පැක් වන සජීවී නැවත පූරණය වන වෙබ් සේවාදායකයකි සංවර්ධකයින් ඔවුන් කරන දේ වහාම ප්‍රතිපෝෂණය ලබා ගැනීමට භාවිතා කරයි. එය භාවිතා කළ යුත්තේ සංවර්ධනයේදී පමණි.

මෙම ව්යාපෘතිය nof5 මගින් දැඩි ලෙස දේවානුභාවයෙන් ඒකක පරීක්ෂණ .

Webpack නම ලෙස නිර්මාණය කරනු ඇත ගම්ය තනි ඇසුරුම සඳහා වයස අවුරුදු වෙබ් . පැකේජය අවම කර තනි ගොනුවකට ඒකාබද්ධ කරනු ඇත (අපි තවමත් HTTP 1.1 වයස්වල ජීවත් වෙමු). වෙබ් පැක් මඟින් සම්පත් (ජාවාස්ක්‍රිප්ට්, සීඑස්එස්, රූප) ඒකාබද්ධ කර ඒවා එන්නත් කිරීමේ මැජික් කරයි : <script src="assets/bundle.js"></script>.

එය ද හැඳින්විය හැක මොඩියුලය bundler එය මොඩියුලය පරායත්තයන් තේරුම් ගත යුතු නිසා, සහ පරායත්තයන් පැහැරගැනීමට හා එකට ඒවා තලා ආකාරය.

ඔබ බ්‍රවුසරකරණය භාවිතා කරන්නේ කොතැනින්ද? නෝඩ් / ඊඑස් 6 ආනයනයන් සමඟ අපට එයම කළ නොහැකිද?

ඔබ වෙබ් පැක් භාවිතා කරන එකම කාර්යයන් සඳහා බ්‍රව්සරීෆයි භාවිතා කළ හැකිය . - වෙබ් පැක් වඩාත් සංයුක්ත වේ.

බව සටහන ES6 මොඩියුලය කාරකය විශේෂාංග දී Webpack2 භාවිතා System.import natively වන එකදු බ්රවුසරය ආධාරක,.

ඔබ npm + ප්ලගීන වලට වඩා gulp / grunt භාවිතා කරන්නේ කවදාද?

ඔබට ගුල්ප්, ග්‍රන්ට්, බ්‍රොකෝලි, බ්‍රන්ච් සහ බෝවර් අමතක කළ හැකිය . ඒ වෙනුවට npm විධාන රේඛා ස්ක්‍රිප්ට් කෙලින්ම භාවිතා කරන්න, ඔබට ගුල්ප් සඳහා මෙවැනි අමතර පැකේජ ඉවත් කළ හැකිය :

var gulp        = require('gulp'),
  minifyCSS     = require('gulp-minify-css'),
  sass          = require('gulp-sass'),
  browserify    = require('gulp-browserify'),
  uglify        = require('gulp-uglify'),
  rename        = require('gulp-rename'),
  jshint        = require('gulp-jshint'),
  jshintStyle   = require('jshint-stylish'),
  replace       = require('gulp-replace'),
  notify        = require('gulp-notify'),

ඔබේ ව්‍යාපෘතිය සඳහා වින්‍යාස ගොනු සෑදීමේදී ඔබට බොහෝ විට ගුල්ප් සහ ග්‍රන්ට් වින්‍යාස ගොනු උත්පාදක යන්ත්‍ර භාවිතා කළ හැකිය . මේ ආකාරයෙන් ඔබට යේමන් හෝ ඒ හා සමාන මෙවලම් ස්ථාපනය කිරීමට අවශ්‍ය නොවේ .


14

නූල් යනු මෑතකදී සඳහන් කළ යුතු පැකේජ කළමණාකරුවෙකි.
ඉතින්, මෙන්න එයයි: https://yarnpkg.com/

මා දන්නා තරමින් එයට එන්පීඑම් සහ බෝවර් පරායත්තතාවයන් ලබා ගත හැකි අතර අනෙකුත් අගය කළ හැකිය.


13

Webpackමිටියක්. වැනි Browserfyඑය මොඩියුලය ඉල්ලීම් (සඳහා codebase පිරික්සූ requireහෝ import) සහ ඇත්තෙන් වෙනසට භාජනය ඔවුන් ෙමම පාර්ලිෙම්න්තුව ෙයෝජනා කරයි. Webpackඑපමණක්ද නොව, ඔබට ජාවාස්ක්‍රිප්ට් වැනි මොඩියුල පමණක් නොව CSS, රූප, HTML, වචනාර්ථයෙන් සියල්ල විසඳීමට වින්‍යාසගත කළ හැකිය . මා විශේෂයෙන් උද්දීපනය කරන්නේ කුමක් ද Webpack, ඔබට එකම යෙදුමක සම්පාදනය කළ හා ගතිකව පටවන ලද මොඩියුල දෙකම ඒකාබද්ධ කළ හැකිය. මේ අනුව යමෙකුට සැබෑ කාර්ය සාධනය ඉහළ නංවයි, විශේෂයෙන් HTTP / 1.x ට වඩා. ඔබ එය හරියටම කරන්නේ කෙසේද යන්න මම මෙහි උදාහරණ සමඟ විස්තර කළෙමි http://dsheiko.com/weblog/state-of-javascript-modules-2017/ බණ්ඩලර් සඳහා විකල්පයක් ලෙස කෙනෙකුට සිතිය හැකිය Rollup.js( https://rollupjs.org/ ) , එය සම්පාදනය කිරීමේදී කේතය ප්‍රශස්ත කරයි, නමුත් භාවිතයට නොගත් කුට්ටි ඉවත් කරයි.

මක්නිසාද යත් AMD, RequireJSඑක් අයෙකු වෙනුවට ස්වදේශිකයා සමඟ යා හැකි ES2016 module systemනමුත් System.js( https://github.com/systemjs/systemjs ) පටවා ඇත.

ඊට අමතරව, npmඑය බොහෝ විට gruntහෝ වැනි ස්වයංක්‍රීය මෙවලමක් ලෙස භාවිතා කරන බව මම පෙන්වා දෙමි gulp. Https://docs.npmjs.com/misc/scripts බලන්න . මම පෞද්ගලිකව දැන් යන්නේ එන්පීඑම් ස්ක්‍රිප්ට් සමඟ වෙනත් ස්වයංක්‍රීය මෙවලම් මග හැරීම පමණි grunt. වෙනත් මෙවලම් සමඟ ඔබ පැකේජ සඳහා ගණන් කළ නොහැකි ප්ලගීන මත විශ්වාසය තැබිය යුතුය, ඒවා බොහෝ විට හොඳ ලිඛිත නොවන අතර ක්‍රියාශීලීව නඩත්තු නොකෙරේ. npmඑහි පැකේජ දනී, එබැවින් ඔබ දේශීයව ස්ථාපනය කර ඇති ඕනෑම පැකේජයකට නමින් අමතන්න:

{
  "scripts": {
    "start": "npm http-server"
  },
  "devDependencies": {
    "http-server": "^0.10.0"
  }
}

ඇත්ත වශයෙන්ම ඔබට රීතියක් ලෙස පැකේජය CLI සඳහා සහය දක්වන්නේ නම් කිසිදු ප්ලගිනයක් අවශ්‍ය නොවේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.