Ada tutorial quickstarter di angular.io yang menggunakan skrip & systemjs. Sekarang saya sudah menjalankan miniapp tersebut, bagaimana saya akan membuat sesuatu yang dapat diterapkan? Saya tidak dapat menemukan info apa pun tentang itu sama sekali.
Apakah saya memerlukan alat tambahan, pengaturan tambahan di System.config?
(Saya tahu bahwa saya dapat menggunakan webpack & membuat satu bundle.js, tetapi saya ingin menggunakan systemjs seperti yang digunakan dalam tutorial)
Bisakah seseorang membagikan proses pembuatannya dengan penyiapan ini (Angular 2, TypeScript, systemjs)
typescript
angular
systemjs
Brian G. Bell
sumber
sumber
Jawaban:
Hal utama yang harus dipahami pada level ini adalah bahwa menggunakan konfigurasi berikut, Anda tidak dapat menggabungkan file JS yang dikompilasi secara langsung.
Pada konfigurasi compiler TypeScript:
Di HTML
Faktanya, file JS ini akan berisi modul anonim. Modul anonim adalah file JS yang menggunakan
System.register
tetapi tanpa nama modul sebagai parameter pertama. Ini adalah apa yang dihasilkan kompilator skrip secara default ketika systemjs dikonfigurasi sebagai manajer modul.Jadi agar semua modul Anda menjadi satu file JS, Anda perlu memanfaatkan
outFile
properti dalam konfigurasi compiler TypeScript Anda.Anda dapat menggunakan inside teguk untuk melakukan itu:
Ini dapat digabungkan dengan beberapa pemrosesan lainnya:
app.js
filevendor.js
file untuk perpustakaan pihak ketigaboot.js
file untuk mengimpor modul yang mem-bootstrap aplikasi. File ini harus disertakan di akhir halaman (ketika semua halaman dimuat).index.html
untuk memperhitungkan kedua file iniDependensi berikut digunakan dalam tugas gulp:
Berikut ini contoh agar bisa diadaptasi.
Buat
app.min.js
fileBuat
vendors.min.js
fileBuat
boot.min.js
fileThe
config.prod.js
hanya berisi berikut:Perbarui
index.html
fileThe
index.html
terlihat seperti berikut:Perhatikan bahwa
System.import('boot');
harus dilakukan di akhir bagian isi untuk menunggu semua komponen aplikasi Anda didaftarkan dariapp.min.js
file.Saya tidak menjelaskan di sini cara menangani minifikasi CSS dan HTML.
sumber
Anda dapat menggunakan perintah build angular2-cli
https://github.com/angular/angular-cli/wiki/build#bundling
Memperbarui
Jawaban ini diajukan saat angular2 berada di rc4
Saya telah mencobanya lagi di angular-cli beta21 dan angular2 ^ 2.1.0 dan berfungsi seperti yang diharapkan
Jawaban ini membutuhkan inisialisasi aplikasi dengan angular-cli yang dapat Anda gunakan
Atau yang sudah ada
Perbarui 08/06/2018
Untuk sudut 6 sintaksnya berbeda.
Periksa dokumentasinya
sumber
Anda dapat membangun proyek Angular 2 (2.0.0-rc.1) di Typecript menggunakan SystemJS dengan Gulp dan SystemJS-Builder .
Di bawah ini adalah versi sederhana tentang cara membuat, menggabungkan, dan mengecilkan Tour of Heroes yang menjalankan 2.0.0-rc.1 ( sumber lengkap , contoh langsung ).
gulpfile.js
system.config.js
sumber
gulp <taskname>
mana "nama tugas" adalah nama tugas yang memanggil pembangun SystemJS, dalam contoh saya di atasbundle:app
. Dalam tugas Gulp itu, Anda dapat menggunakan modul npm 'systemjs-builder' untuk menentukan konfigurasi dan file outfile Sistem Anda.Ini boilerplate MEA2N saya untuk Angular 2: https://github.com/simonxca/mean2-boilerplate
Ini adalah boilerplate sederhana yang digunakan
tsc
untuk menyatukan berbagai hal. (Sebenarnya menggunakan grunt-ts , yang intinya hanyatsc
perintah.) Tidak perlu Wekpack, dll.Apakah Anda menggunakan grunt atau tidak, idenya adalah:
ts/
(contoh:public/ts/
:)tsc
untuk mencerminkan struktur direktorits/
folder Anda ke dalamjs/
folder dan hanya file referensi dijs/
folder diindex.html
.Untuk mendapatkan grunt-ts untuk bekerja (harus ada perintah yang setara untuk tsc biasa, Gulp, dll.), Anda memiliki properti di
tsconfig.json
panggil Anda"outDir": "../js"
, dan referensi di Andagruntfile.js
dengan:Kemudian jalankan
grunt ts
, yang akan membawa aplikasi Andapublic/ts/
dan mencerminkannyapublic/js/
.Sana. Sangat mudah dimengerti. Bukan pendekatan terbaik, tapi pendekatan yang bagus untuk memulai.
sumber
Cara termudah yang saya temukan untuk membundel angular rc1 untuk systemJs adalah dengan menggunakan
gulp
dansystemjs-builder
:Seperti yang ditunjukkan dalam komentar, systemJ saat ini memiliki masalah saat menggabungkan komponen menggunakan
moduleId: module.id
https://github.com/angular/angular/issues/6131
Rekomendasi saat ini (sudut 2 rc1) tampaknya menggunakan jalur eksplisit yaitu
moduleId: '/app/path/'
sumber
@Component
dekorator.bundle.js
mencoba untuk menyelesaikan jalur sebagai absolut meskipun mereka relatif, menyebabkan kesalahan 404 (lihat stackoverflow.com/questions/37497635/… ). Bagaimana Anda mengatasinya?moduleId
ke jalur relatif?moduleId: module.id
di@Component
templateUrl
dan mengalahkan tujuan memilikimoduleId
di tempat pertama. Saya mencoba menggunakan jalur relatif seperti yang disarankan ( angular.io/docs/ts/latest/cookbook/… )moduleId: '/app/components/home/'
Saya menggunakan expressjs di backend untuk melayani proyek ng2 saya. Anda dapat memeriksanya dari halaman github saya: https://github.com/echonax/ng2-beta-and-test-framework
sumber
Di bawah situs web Angular.io, di bawah bagian Advanced / Deployment, disarankan bahwa cara paling sederhana untuk menyebarkan adalah 'menyalin lingkungan pengembangan ke server'.
melalui bagian di bawah: Penerapan sesederhana mungkin. File proyek akhir ditampilkan di dalam bagian kode. Perhatikan bahwa itu sudah menyiapkan kode untuk memuat file paket npm dari web (sebagai ganti dari folder npm_modules lokal).
pastikan itu berjalan di komputer lokal Anda (npm start). Kemudian di bawah folder proyek, salin semua yang ada di bawah sub-folder '/ src' ke bucket S3 yang telah Anda siapkan. Anda dapat menggunakan drag-and-drop untuk menyalin, selama proses itu, Anda mendapatkan opsi untuk memilih pengaturan izin untuk file, pastikan untuk membuatnya 'dapat dibaca' oleh 'semua orang'.
di bawah tab 'Properti' keranjang, cari panel 'Hosting situs web statis', centang opsi 'Gunakan keranjang ini untuk menghosting situs web', dan tentukan 'index.html' untuk dokumen Indeks dan dokumen Kesalahan.
klik pada situs web statis Endpoint, proyek Anda berjalan dengan baik!
sumber