Saya cuba memecahkan projek Vue/Vuex ke dalam pakej npm yang dihoskan secara persendirian. Saya rasa saya akan sampai ke sana tetapi saya tidak pasti susun atur semasa saya, setakat ini saya telah:
src/ ├── BrokerProposal │ ├── FormInputs │ ├── index.js │ └── modals └── store ├── index.js └── modules └── proposal ├── actions ├── getters ├── helpers ├── mutations └── states └── validations
Matlamat saya adalah untuk menjadikan direktori BrokerProposal boleh diimport, yang dilakukan melalui fail index.js
pertama:
const BrokerProposal = require('./BrokerCalculator.vue'); function install(Vue) { if (install.installed) return; install.installed = true; Vue.component("v-broker-proposal", BrokerProposal); } const plugin = { install }; let GlobalVue = null; if (typeof window !== "undefined") { GlobalVue = window.Vue; } else if (typeof global !== "undefined") { GlobalVue = global.vue; } if (GlobalVue) { GlobalVue.use(plugin); } BrokerProposal.install = install; export default BrokerProposal;
Projek ini juga menggunakan vuex, jadi saya memecahkan mutator dll untuk keadaan ke dalam pakej ini untuk digunakan dengan BrokerProposal, pengguna akhir boleh mengikat storan ini selepas mengimport, berikut ialah fail index.js: p>
import Vue from 'vue' import Vuex from 'vuex' // Vuex Modules import tabs from './modules/tabs' import proposal from './modules/proposal' Vue.use(Vuex) const store = new Vuex.Store({ modules: { tabs, proposal, }, }) export default store
Saya rasa saya harus memasukkan fail index.js lain pada tahap yang sama dengan /src
kerana terdapat bahagian "utama" dalam fail package.json yang perlu menunjuk kepada sesuatu?
Kesan sampingan seperti
Vue.use(Vuex)
和GlobalVue.use(plugin)
harus dielakkan kerana ia boleh mengganggu projek menggunakan pakej ini. Adalah menjadi tanggungjawab projek untuk menyediakan pemalam dengan contoh Vue yang sesuai.Semua eksport awam boleh dinamakan sebagai eksport di pintu masuk, contohnya
src/index.js
:Ia juga merupakan amalan yang baik untuk mengeksport komponen sekiranya anda perlu mengimportnya secara tempatan, dan bukannya bergantung pada
Vue.component
mendaftarkannya secara global.