Saya menggunakan Highcharts dan Highstocks dengan Angular di aplikasi saya. Fungsionalitasnya bagus, namun tidak mungkin untuk mengoptimalkan ukuran bundel Highcharts:
Lihatlah tangkapan layar ini dari informasi bundel aplikasi saya:
Anda dapat melihat bahwa Highcharts memakan hingga hampir 500kb (garis biru tua), bahkan lebih besar dari kerangka chunky seperti Angular (garis merah). Bahkan jika seseorang hanya menggunakan satu bagan di Highcharts, mereka harus menjalankan semua kode Highcharts, yang tidak dapat diterima secara optimal.
Solusi yang saya tahu di sini adalah memodulasi Highcharts sehingga seseorang hanya dapat mengimpor apa yang mereka butuhkan. Juga dengan Webpack Tree Shaking baru, ukuran bundel akan sangat berkurang.
Saya tahu ini tidak dapat segera diperbaiki, tetapi apakah Anda memikirkannya?
Hai @envil ,
Pada awalnya saya menyarankan Anda untuk memuat hanya highstock.js
yang mencakup semua fitur Highcharts. Anda juga dapat membuat file khusus dengan alat kami di sini:
Highcharts lib sudah termodulasi: https://www.highcharts.com/docs/getting-started/how-to-create-custom-highcharts-files
Terima kasih atas tanggapan Anda.
Saya sedang melihat fitur pembuatan khusus. Ini memberi saya highchart-custom.src.js
yang sama sekali tidak nyaman digunakan karena ini bukan node_modules, jadi saya tidak dapat mengimpornya ke aplikasi Angular saya secara biasa. Dan semua definisi tipe untuk TypeScript hilang.
Juga yang saya maksud adalah modul ES, sepenuhnya independen dan dapat diimpor ke modul ES lainnya. Lihat bagaimana lodash
dan date-fns
telah mengalahkan underscore
dan momentjs
, salah satu faktor terpenting adalah kemampuan modularisasi seperti ini.
@jon-a-nygaard FYI
Saya mengalami ini juga.
Saya mencoba berkeliling dengan import * as Highstock from 'highcharts/highstock';
tetapi tidak berpengaruh apa pun.
Hai, beberapa waktu lalu kami mulai menerbitkan file bagian kami sebagai modul ES yang berarti Anda dapat melakukan import Highcharts from 'highcharts/es-modules/masters/highcharts.src.js'
. Ini dapat membantu beberapa orang dalam masalah ini.
Kami juga sedang bekerja untuk membuat file bagian ini lebih mandiri, yang akan meningkatkan kemampuan pengocokan pohon. Agak sulit saat ini untuk memberikan ETA yang baik kapan ini akan diterbitkan, tetapi saya akan terus memberi Anda informasi terbaru segera setelah saya tahu lebih banyak.
Hai,
saya hanya menggunakan tipe 'stockChart' dan mengalami masalah yang sama, tetapi menemukan solusi yang dijelaskan di sini:
https://github.com/highcharts/highcharts-angular#core
import * as Highcharts from 'highcharts';
import Stock from 'highcharts/modules/stock';
Stock(Highcharts);
dari pada :
import * as Highcharts from 'highcharts/highstock';
sekarang dalam bundel, tampilannya seperti ini:
Saya menggunakan highcharts-react yang menggunakan sintaks import *. Saya belum menyerah tetapi sejauh ini saya tidak bisa membuat pohon gemetar bekerja untuk itu.
Solusi saya saat ini: modul Alias Highcharts ke modul Highstock.
Anda dapat menggunakan kedua jenis grafik (Highcharts/Highstock) dan ukuran bundel yang lebih rendah .
Ini dapat dilakukan dengan Webpack (periksa "resolve.alias" di dokumentasi Webpack untuk informasi lebih lanjut):
alias: {
highcharts$: 'highcharts/highstock.js',
}
Anda dapat melakukan aliasing dengan Babel to (babel-plugin-module-resolver).
Akan lebih baik jika kita dapat memodulasi seluruh lib.
Perhatikan bahwa Highstock dapat dimuat sebagai modul ke Highcharts, menggunakan modul modules/stock.js
. Seperti yang disebutkan di atas:
import * as Highcharts from 'highcharts';
import Stock from 'highcharts/modules/stock';
Stock(Highcharts);
@pawelfus Entah bagaimana gagal dalam pengujian saya dengan: TypeError: Highcharts.stockChart is not a function
Tidak ada masalah tipe dan aplikasi itu sendiri juga berfungsi. Saya menggunakan lelucon. Ada ide?
MEMPERBARUI
Menemukan bahwa menyelesaikan modul secara berbeda di jest.config.js
berfungsi:
moduleNameMapper: {
'^highcharts$': '<rootDir>/node_modules/highcharts/highstock'
},
Ada pembaruan tentang ini? Mempertimbangkan menjatuhkan Highcharts karena ini benar-benar perpustakaan BESAR untuk diimpor ke proyek saya :(
Hai @Yohandah! Kami hampir setengah jalan, seperti yang Anda lihat di https://github.com/highcharts/highcharts/issues/12738.
Anda dapat menggunakan sebagian besar modul ES untuk menggoyang pohon. Meskipun ini untuk saat ini tidak didukung secara resmi (hanya master), karena kami sedang memindahkan dan membagi file sekarang. Jadi dengan rilis berikutnya, jalur dalam contoh akan berbeda.
import Chart from 'https://code.highcharts.com/es-modules/parts/Chart.js'
import SVGRenderer from 'https://code.highcharts.com/es-modules/parts/SVGRenderer.js'
new Chart('container', { /* ...options... */ });
Komentar yang paling membantu
Hai, beberapa waktu lalu kami mulai menerbitkan file bagian kami sebagai modul ES yang berarti Anda dapat melakukan
import Highcharts from 'highcharts/es-modules/masters/highcharts.src.js'
. Ini dapat membantu beberapa orang dalam masalah ini.Kami juga sedang bekerja untuk membuat file bagian ini lebih mandiri, yang akan meningkatkan kemampuan pengocokan pohon. Agak sulit saat ini untuk memberikan ETA yang baik kapan ini akan diterbitkan, tetapi saya akan terus memberi Anda informasi terbaru segera setelah saya tahu lebih banyak.