Parcel.js, No-Config Veb Tətbiq Bundler-ə Giriş

Bu yazı, özünü elan edən Parcel.js üçün girişinizdir "yanan sürətli, sıfır konfiqurasiya veb tətbiq paketi." Bunun üçün başlamaq üçün bilmək lazım olan hər şey var:


Bir çox cəbhə inkişaf etdiricisi, bu gün veb tətbiqlərinin qurulması ilə əlaqəli bəzi çətinliklərdən əsəbləşdi. Bir növ qurma və ya bağlama vasitəsini ön iş işinə daxil etmək olduqca standart bir təcrübədir, buna görə də bir çox inkişaf etdiricilər veb-paket kimi ön qurğudan istifadə etmək istədilər..

Veb paket ən populyar bağlayıcıdır və Require.js, Rollup və buna bənzər həllər topuqlarında izlənilir. Ancaq veb paket kimi bir vasitə üçün öyrənmə əyri dikdir. Mürəkkəb konfiqurasiyasına görə veb-paketə başlamaq asan deyil. Nəticədə son illərdə başqa bir həll yolu ortaya çıxdı. Bu vasitə mütləq ön cərgəçi deyil, ön cəbhə modulu bağlayıcı mənzərədə daha asan həzm oluna bilən alternativdir. Parcel.js ilə tanışlıq.

Parcel.js ilə tanışlıq

Parcel.js (parceljs.org) bir çoxunun aralıq inkişaf etdiricilərindən istədikləri budur: Sürətlə ayağa qalxa biləcəyiniz sadə, aşağı konfiqurasiya dəstəyi..

Ümid edirəm ki, bu Parsel dərsliyi bu alət üçün asanlıqla izlənilən bir təqdimat təmin edəcəkdir. Mən əsasları əhatə edəcəyəm və sonra Babel və Sass-ı özündə birləşdirən sadə bir veb tətbiqini bağlamaq üçün Parseldən necə istifadə edəcəyinizi sizə göstərəcəyəm.

Contents məzmun cədvəli:

  1. Niyə bir veb tətbiq paketi istifadə edirsiniz? #
  2. Parcel.js quraşdırılması #
  3. Bir fayl giriş nöqtəsi yaratmaq #
  4. Dist / qovluq #
  5. Babel # ilə Parcel.js istifadə
  6. Parsel.js istifadə Sass #
  7. Parsel # ilə birdən çox skript toplamaq
  8. Parcel.js ilə kod ayrılması #
  9. İstehsal Parcel.js ilə qurulur #
  10. Parsel istifadə üçün çatışmazlıqlar var? #

Parcel.js veb saytı

Niyə bir veb tətbiq paketi istifadə edin?

Parcel.js kimi bir tətbiq paketinin istifadəsinin səbəblərini müzakirə etmək üçün çox vaxt sərf etməyəcəyəm, çünki bu mövzu əvvəllər də əhatə olunmuşdu. Ancaq belə bir vasitədən istifadə etmək üçün üstünlüklərin əsas siyahısı:

  • Skriptlər və ya stil cədvəlləri birləşdirildiyi üçün tətbiqinizdə daha az HTTP sorğusu olacaq
  • Skriptlər və tərz cədvəlləri tələbə yüklənə bilər, performansını daha da yaxşılaşdırır
  • Skriptlər və tərz cədvəlləri istifadəçiyə daha az kilobayt çatdırmaq üçün avtomatik olaraq minalana bilər
  • Bağlama və minifikasiya işləri əl işlərini minimuma endirərək alət tərəfindən avtomatik olaraq həyata keçirilir
  • İnkişaf sənədləri modul qaydada təşkil edilir, bu da kodunuzu qorumağı və diskussiyanı asanlaşdırır

Gördüyünüz kimi faydalar çoxdur və əsasən performans və layihə baxımına aiddir. Bir bağlayıcıdan istifadə etmək üçün bir çox səbəb var, əgər bu hələ düşünmədiyiniz bir şeydirsə.

Yeri gəlmişkən, Parcel.js ilə ayağa qalxmaq və işə başlamaq üçün əsaslarla başlayaq. Asanlıqla izləyə biləcəyiniz bəzi sadə nümunələrdən istifadə edərək yavaş-yavaş bu dərslikdəki xüsusiyyətlərə keçəcəyəm.

Parcel.js quraşdırılması

Parcel.js-i iplik və ya npm istifadə edərək terminalınıza quraşdıra bilərsiniz. Bu dərs üçün npm istifadə edərəm. İstənilən layihədə istifadə edə biləcəyiniz üçün qlobal miqyasda quraşdırmaq əmri budur:

npm bağlama-bağlama qurğusu -g

Bu bayraq qlobal miqyasda onu quraşdırır. Yalnız bir layihə üçün quraşdırıb paketin.json-dakı layihənizin bağlantılarına əlavə etmək istəyirsinizsə, -g əvəzinə –save-dev bayraqından istifadə edərək eyni komandanı layihənin kök qovluğunun içərisində işlədə bilərsiniz.

npm bağlama bağlayıcı –save-dev quraşdırın

Qlobal quraşdırma ilə (ən çox istifadə hadisəsi olacaq), təşəbbüs əmrindən istifadə edərək istənilən layihəni həyata keçirə bilərsiniz. Tətbiqinizin kökü kimi istifadə etmək istədiyiniz qovluğa getmək üçün terminaldan istifadə edin:

npm tashabb -y

Theyy bayraq parametrləri üçün parametrləri istifadə edərək, npm-in hər hansı bir sual verməsinə mane olur. Layihəmin parsel-demo adlandırıldığını fərz etsək, bu kökdə pack.json faylı yaradır:

{
"adı": "bağlama-demo",
"versiya": "1.0.0",
"təsviri": "",
"ana": "indeks.js",
"skriptlər": {
"test": "echo \"Xəta: test yoxlanılmadı \" && çıxış 1"
},
"açar sözlər": [],
"müəllif": "",
"lisenziyası": "ISC"
}

Yuxarıda göstərilənlərdən birini npm ilə tanış olmamağınıza görə qarışıq hesab edirsinizsə, mənim hərtərəfli baxa bilərsiniz npm-də dərs. Bu ön cəbhə veb tərtibatçılarına aləti başa düşməyə kömək etməyə yönəlmişdir.

Bir fayl giriş nöqtəsi yaratmaq

Əsas bir layihə qurma üçün, index.js adlı ilk JavaScript sənədinə (pack.json sənədində göstərildiyi kimi) işarə edən bir index.html faylında Parcel.js istifadə edəcəyəm. Bu HTML faylı mənim Parsel giriş nöqtəm kimi xidmət edəcəkdir. HTML sənədim JavaScript sənədimə işarə edən bir skript elementinə sahib olacaq, buna görə də bu kimi bir şey görünəcək:

html>
<html>
<baş>
<başlıq>Parsel Demotitle>
baş>
<bədən>
<script src ="./js/index.js">ssenari>
bədən>
html>

Düzgün HTML faylı və JavaScript faylı tapdıqdan sonra, Layihəmin qovluğundakı terminalda aşağıdakıları işlədərək Parcelin daxili inkişaf serverini işə sala bilərəm:

bağlama indeksi.html

Bu serveri işə salır və giriş nöqtəsi olaraq hansı faylı istifadə edəcəyinizi söyləyir. Nəticədə terminal sessiyasında aşağıdakı mesajı alıram:

Server http: // localhost: 1234-də işləyir
88 887ms-də tikilib.

İndiyə qədər tikdiyimi görmək üçün http: // localhost: 1234 / brauzerimdə aça bilərəm. Canlı server canlı yenidən yükləmə və çağırılmış bir şey istifadə edir isti modulun dəyişdirilməsi. Tamamilə bir səhifə yeniləmədən bir səhifədəki modulları avtomatik olaraq yeniləyəcəkdir. Bu yolla işlədiyim müddətdə inşamın tərəqqisini daha sürətli artımda görə bilərəm.

Parcel.js serverini aktiv işlədikdən sonra bir fayla etdiyim hər hansı bir dəyişiklik, fayl saxlanıldıqda avtomatik olaraq tətbiqimi bərpa edəcəkdir. Bunu hərəkətdə görmək üçün skriptimə sadə bir konsol giriş xətti əlavə edəcəyəm. Bu, terminalımdakı aşağıdakı mesajı işə salacaq:

$ bağlama indeksi.html
Server http: // localhost: 1234-də işləyir
1. 1.08-ci illərdə qurulub.
28 28 dəq.

Hər “Quraşdırılmış …” xətti məzmunun dəyişməsi və qənaət səbəb olduğu bir quruluşu təmsil edir.

Parcel’in daxili inkişaf serverindən daha çox öz serverimi istifadə etmək istəsəm, saat əmrini istifadə edə bilərəm:

bağlama saatı indeksi.html

Mən terminal iclasında eyni nəticəni alıram, Parcel.js tətbiqimi qurduqdan sonra dəyişiklikləri gözləyirəm:

$ bağlama saatı indeksi.html
85 855 m məsafədə inşa edilmişdir.

Dist / qovluq

Parcel.js-i ya izləmə rejimində, ya da quraşdırılmış server vasitəsilə işə saldıqdan sonra, layihəmin qovluğuna baxsam, aşağıdakı kimi bir qovluq və fayl quruluşunu görərəm:

indeks.html
paket.json
js /
└───── index.js
dist /
└───── indeks.html
└───── js.00a46daa.js
└───── js.00a46daa.js.map

Avtomatik olaraq yaradılan dist qovluğuna diqqət yetirin. İstehsal sənədlərimin olduğu yer budur; Bu faylların heç birinə toxunmuram. Parsel qurmağım avtomatik olaraq index.js faylımı unikal önbelleğe uyğun bir versiyaya (yenidən işlənmiş və ya “düzəldilmiş” fayl adı ilə) çevirmişdir. Ayrıca mənbə xəritəsi faylı əlavə edilmişdir (mənbə xəritələri haqqında oxuya bilərsiniz bu postda).

Diz qovluğunun içərisindəki index.html sənədimə baxsam, bunları görərəm:

html>
<html>
<baş>
<başlıq>Parsel Demotitle>
baş>
<bədən>

<script src ="/js.00a46daa.js">ssenari>
bədən>
html>

Mənim index.html faylımın dist versiyasına düzgün və rahat şəkildə mənim .js sənədimin versiyasına diqqət yetirin.

Veb saytımda eyni skriptlərə işarə edən bir çox fayl varsa (məsələn, about.html, contact.html və s.), Aşağıdakı əmrdən istifadə edə bilərəm:

bağlama indeksi.html haqqında.html əlaqə.html

Bu, bağlamadan qurmaq üçün çox giriş nöqtəsindən istifadə etmək istədiyimi bildirir. Parcel.js-a bütün HTML sənədlərimi giriş nöqtəsi kimi istifadə etməyimi söyləmək üçün aşağıdakı əmrdən istifadə edə bilərəm:

bağlama * .html

Babel ilə Parcel.js istifadə

Parcel.js daxil olmaqla fərqli kod ötürücülərinə quraşdırılmış bir dəstək var Babel, müasir yeni nəsil JavaScript-ni bütün brauzerlər tərəfindən başa düşülə bilən ekvivalent koda çevirmək üçün məşhur vasitə. Babel Parcel.js-də qurulduğundan, onu istifadə etmək üçün xüsusi bir plugin lazım deyil, sadəcə işləyir. Bir nümunəyə baxaq.

Aşağıdakı kodu mənim index.js sənədimə əlavə edəcəyəm:

funksiya getInfo (ad, il = 2018, rəng = ‘mavi’) {
konsol.log (ad, il, rəng);
}

getInfo (‘Chevy’, 1957, ‘Yaşıl’);
getInfo (‘Benz’, 1975);
getInfo (‘Honda’);

Bu kod adlı bir ES6 xüsusiyyətindən istifadə edir standart parametrlər, Xüsusi olaraq funksiya başında görə bilərsiniz. Köhnə brauzerlər funksiyalar üçün standart parametrləri dəstəkləmir. Kodun səhv etmədiyinə əmin olmaq üçün kodu bütün brauzerlərdə işləyən ekvivalent koda köçürmək üçün Babel’ə ehtiyacım var. Index.js sənədimi saxladıqdan sonra Parcel.js tətbiqimi yenidən quracaq və yazdığım ES6 kodu yerinə aşağıdakıları çıxaracaq:

funksiyası getInfo (adı) {
var il = arqumentlər.length > 1 && arqumentlər [1]! == naməlum? dəlillər [1]: 2018;
var rəngi = arqumentlər.length > 2 && arqumentlər [2]! == naməlum? arqumentlər [2]: ‘mavi’;
konsol.log (ad, il, rəng);
}

getInfo (‘Chevy’, 1957, ‘Yaşıl’);
getInfo (‘Benz’, 1975);
getInfo (‘Honda’);

Babelin onlayn cavabından istifadə edə bilərsiniz bunu sınayın.

Buradakı ən vacib faktora diqqət yetirin: Babel qurmaq və ya onu konfiqurasiya etmək üçün heç bir iş görmədim – sadəcə Parselin standart parametrlərinin bir hissəsi olaraq qutudan kənarda işləyir! Əlbəttə ki, istədiyinizi etmək üçün Babel-i dəyişdirmək üçün bəzi konfiqurasiya seçimlərini əlavə edə bilərsiniz. Bu halda, konfiqurasiya seçimləriniz daxil olmaqla layihənizin kök qovluğuna .babelrc faylı əlavə edə bilərsiniz. Haqqında daha ətraflı oxuya bilərsiniz .babelrc faylı istifadə edərək Parcel.js saytında.

Parsel.js istifadə Sass ilə

Babelə bənzər, Parsel də avtomatik olaraq mənim SCSS (Sass) sənədlərimi etibarlı CSS üçün tərtib edəcəkdir. Bunu nümayiş etdirmək üçün nümunə layihəmin kökünə “css” adlı bir qovluq əlavə edəcəyəm. Həmin qovluğa aşağıdakı Sass kodu olan bir style.scss faylı əlavə edəcəyəm:

bədən {
rəng: qara;

.modul {
rəng: qırmızı;
}
}

Mən Sass selektor yuva xüsusiyyətindən istifadə edirəm. HTML sənədlərim bölməsinə aşağıdakı sətri əlavə edəcəyəm:

<link rel ="üslub cədvəli" href ="./css/style.scss">

Bütün sənədlərim xilas olunduqdan sonra Parsel mənim SCSS-ni aşağıdakılara çevirən tərtib edilmiş CSS faylı ilə dist / qovluğunda yeni bir quruluş yaradacaqdır:

bədən {
rəng: qara;
}
bədən .module {
rəng: qırmızı;
}

Qlobal miqyasda sistemimdə Sass quraşdırmışam, Parsel bunu avtomatik olaraq edər, heç bir konfiqurasiya lazım deyil. Qlobal bir Sass qurğusu yoxdursa, heç bir problem yoxdur. Sadəcə SCSS-i yaza bilərəm, sonra Parsel-ə başladım və Parsel Sass-ı avtomatik olaraq layihəyə məxsus bir asılılıq olaraq quraşdıracaq. Çox rahatdır! Yenidən bu xüsusilə faydalıdır, çünki heç bir konfiqurasiya tələb etmir.

Və yalnız Babel kimi, mən standart konfiqurasiya seçimləri Sass ilə gəlmək üçün seçim edə bilərəm. Və ya layihəmin kökündə .sassrc faylı yarada və əlavə edə bilərəm öz konfiqurasiyalarım.

Parsel ilə birdən çox skript bağlamaq

Bu günə qədər sizə göstərdiyim nümunələr yalnız Parsel ilə ayağa qalxmaqdır və bunun necə işlədiyinə dair əsas fikir əldə edə bilərsiniz. Əvvəldə qeyd edildiyi kimi, hər hansı bir bağlayıcının gücü avtomatik olaraq birdən çox faylı bir fayla birləşdirmək qabiliyyətidir. Bu HTTP sorğularını azaltmaq və veb saytınızın və ya tətbiqinizin sürətini artırmaqda kömək edir.

İndiyə qədər nümayiş etdirdiyim hər şey ES6 modul xüsusiyyətini istifadə edərək çoxsaylı skriptlərdən istifadə etməklə edilə bilər. Bu, modul şəklində skriptlər yaratmağa və idxal etməyə imkan verir. Kodumu yalnız istehsalda yalnız bir paketli skriptə xidmət edərkən asanlıqla saxlayır.

Bunu nümayiş etdirmək üçün, aşağıdakı JavaScript ehtiva edən module.js adlı ayrıca bir fayl əlavə edəcəyəm:

export let color = ‘yaşıl’;

ixrac funksiyası əlavə et (n1, n2) {
qayıt n1 + n2;
}

Bu, iki obyekti ixrac etmək üçün yalnız bir əsas koddur: Dəyişən və bir funksiya. İndex.js faylımda bu mənbələri aşağıdakı kodla idxal edəcəyəm:

‘../js/module.js’ dan {rəng, əlavə etmə ‘idxal;

konsol.log (rəng); // "yaşıl"
konsol.log (əlavə et (20, 40)); // 60

Yenə də bu yalnız əsas ES6 modul sintaksisidir. Bunun necə işlədiyinə dair təfərrüatlara girməyəcəyəm. Bunun gözəl tərəfi, bir HTML modulu istifadə etdiyimi HTML sənədimdə göstərməyə ehtiyac duymamağımdır. Adətən mənim skript etiketim modul təyin olunmuş tip atributu ilə belə görünəcək:

<script src ="./js/index.js" növü ="modul">ssenari>

Lakin bu lazım deyil. Parsel modulun idxal olunduğunu tanıyır və iki skriptimi vahid performansa uyğun bir qaynağa yığır. Bu heç bir xüsusi konfiqurasiya və ya plagin olmadan olur. Əvvəlki nümunələr kimi, kodu Babel istifadə edərək mənə ən çox brauzer dəstəyi verəcək ES5 ekvivalent koduna köçürülür.

Parcel.js ilə kod ayrılması

Heç bir konfiqurasiya olmadan işləyən Parseldəki başqa bir xüsusiyyət kod parçalanması. Bəzi hallarda bütün səhifələrimdəki bütün modullarımın yüklənməsini istəyirəm. Ancaq digər hallarda yalnız müəyyən modulları müəyyən səhifələrdə, müəyyən kontekstlərdə yükləmək istəyə bilərəm. Kod parçalanması mənə bunu etməyə imkan verir.

Daha əvvəl qeyd etdim ki, mənim nümunə layihəm üç səhifədən ibarətdir: index.html, about.html və contact.html. Eyni üç paketi hər üç səhifədə işlətmək istədiyimi söyləyin, amma təxminən.html səhifəsində xüsusi bir şey tetikleyen bir düymə var. Ancaq yalnız bu düymənin basıldığında bu kodun yüklənməsini istəyirəm.

Kodun bölünmə xüsusiyyətindən istifadə edərək bu kodun necə görünə biləcəyi:

əgər (sənəd.querySelector (‘.’ haqqında ‘)) {
sənəd.querySelector (‘. haqqında’). addEventListener (‘klikləyin’, () => {
idxal (‘../ js / about.js’). sonra (
document.body.innerHTML + = ‘Səhifənin Yenilənməsi haqqında’;
);
});
}

Diqqət yetirin, bu yeni bir JavaScript xüsusiyyətini özündə birləşdirir, dinamik idxal import () funksiyasından istifadə etməklə. Bu, müəyyən bir misalda istədiyim kodu dinamik şəkildə yükləməyimə imkan verir. Bu vəziyyətdə, səhifədə bir düymə basıldığında bunu edirəm. İdxal () funksiyası bir söz verir, buna görə idxal olunan skript yükləndikdən sonra işə başlayan .then () bəndində istədiyimi edə bilərəm. About.js skript tələbə yüklənir və bu kod hər yerdə işləməsini təmin etmək üçün Babel tərəfindən brauzer ES5-ə ötürülür. Paketim yarandıqda, bu faylı tələb yüklənməsini təmin etmək üçün dist / qovluq içərisindəki öz faylına yerləşdirilir..

Müzakirə etdiyim digər xüsusiyyətlər kimi, idxal () xüsusiyyəti, Parseldə heç bir konfiqurasiya olmadan işləyir.

İstehsal Parcel.js ilə qurulur

İndiyə qədər Parsel ilə birlikdə gələn və canlı yenidən yükləyən daxili serverdən istifadə edərək bütün Parsellərimi qururam. Layihəmi hər dəfə saxladığım zaman paketim qurulur. Lakin kod həmişə davam edən inkişaf üçün bağlandı. Bu yolla bəzi problem düzəltmək üçün mənbəyə baxa və ya yoxlaya bilərəm.

Layihəm tamamlandıqdan və canlı bir serverə göndərilməyə hazır olduqdan sonra, Parsel’i proyektimi izləməyi dayandıra bilərəm. Terminaldakı CTRL-C bunu bir çox platformada edir. Sonra Parselə son bir tikiş istehsal etməsini söyləmək üçün aşağıdakı əmri işlədəcəyəm:

bağlama qurmaq index.html haqqında.html əlaqə.html

Bu vəziyyətdə, giriş sənədlərimin hər üçü üzərində quruluram. Bu edildikdən sonra Parsel artıq dəyişiklikləri gözləmir; son dəsti qurulub və budur. Yenidən hazırlanan tikiliyə əlavə olaraq kodum Parsel tərəfindən istehsal üçün hazırlanmışdır. HTML, CSS və JavaScript hamısı optimallaşdırılmış performans üçün ən kiçik faylları istehsal etmək üçün minifikasiya edilmişdir.

Parseldən istifadə etmək üçün çatışmazlıqlar?

Parça mütləq qurma vasitələri ilə az və ya heç bir təcrübəsi olmayanlar üçün seçilməlidir. Ancaq öz tədqiqatımda qeyd edə biləcəyim bir neçə şeyi tapdım. Gələcəkdə yaxşılaşdırılmalıdır.

Əvvəla, Parsel həmişə dəstə skriptlərinizi və üslub cədvəllərinizi giriş nöqtəsi HTML sənədləri ilə eyni qovluğa yerləşdirdiyini görəcəksiniz. Ayrı-ayrı qovluqlarda CSS və JavaScript sənədləriniz olsa belə olur. Bunlar istehsal sənədləri olduğundan, çox da fərqlənə bilməz. Ancaq yadda saxlamaq lazım olan bir şeydir. Yaxşı xəbər budur düzəldilmiş kimi görünür qarşıdakı Parsel versiyası 2-də (hələ Alphada). Beləliklə, Parselin həmin versiyası sabit olduqda bu davranışı ləğv etmək üçün bir yol olmalıdır (mövcud sabit versiya 1.12.4).

Digər bir çatışmazlıq, Parsel sənədlərinin fərqli xüsusiyyətlər üçün konfiqurasiya seçimlərini özelleştirmesi haqqında məlumatlara gəldikdə olduqca minimal olduğunu tapdım. Doğrudur, Parsel-in çox böyük faydalarından biri də xaricdən necə yaxşı işləməsidir. Ancaq düşünürəm ki, onu düzəltməyə dair daha geniş sənədlər faydalı olardı. Məsələn, CSS və JavaScript minifikasiyasını davam etdirərkən qurmalarımdakı HTML minifikasiyasını necə aradan qaldırım? Sənədlərdə bunun təsvirini görmürəm. GitHub-da bağlı məsələlərə baxdığım zaman var bir həll yolu (çox rahat deyildi).

Nəticə

Son bir şey deyəcəyəm bir şey deyilən bir vasitədir Tətbiq yaradın, bağça üçün avtomatik olaraq konfiqurasiya sənədləri hazırlamaq üçün istifadə edə bilərsiniz. Bu JavaScript kitabxananızı, transpilerinizi, linerlərinizi və s. Seçməyinizə imkan verir və bunlar hamısı paketlənməyə hazır olan pack.json faylınıza əlavə ediləcəkdir.

Parcel.js-də tətbiq yaradın

Başlayanlar üçün bu Parsel dərsidir. Ümid edirəm bu məlumatı Parsel ilə tez ayağa qalxmaq və gələcək layihələrdə istifadə etmək üçün istifadə edə biləcəksiniz. Tətbiq paketi ilə yeni tanışsınızsa və ya heç bir layihədə sınamamısınızsa, bəlkə bu giriş Parseli sınamağa ruhlandıracaq.

WordPress saytınızı sürətləndirmək üçün qəza kursumuza qoşulmağı unutmayın. Bəzi sadə düzəlişlərlə yükləmə müddətinizi hətta 50-80% azalda bilərsiniz:

Layihə və təqdimat Karol K.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map