Application API
createApp()
একটি অ্যাপ্লিকেশন উদাহরণ তৈরি করে।
প্রকার
tsfunction createApp(rootComponent: Component, rootProps?: object): App
বিস্তারিত
The first argument is the root component. The second optional argument is the props to be passed to the root component.
উদাহরণ
ইনলাইন রুট কম্পোনেন্ট সহ:
jsimport { createApp } from 'vue' const app = createApp({ /* root component options */ })
imported component সহ:
jsimport { createApp } from 'vue' import App from './App.vue' const app = createApp(App)
আরো দেখুন Guide - Creating a Vue Application
createSSRApp()
SSR হাইড্রেশন মোডে একটি অ্যাপ্লিকেশন উদাহরণ তৈরি করে। ব্যবহার ঠিক createApp()
এর মতোই।
app.mount()
একটি ধারক কম্পোনেন্টে অ্যাপ্লিকেশন দৃষ্টান্ত মাউন্ট করে।
প্রকার
tsinterface App { mount(rootContainer: Element | string): ComponentPublicInstance }
বিস্তারিত
যুক্তিটি হয় একটি প্রকৃত DOM কম্পোনেন্ট বা একটি CSS নির্বাচক হতে পারে (প্রথম মিলে যাওয়া কম্পোনেন্টটি ব্যবহার করা হবে)। মূল কম্পোনেন্ট উদাহরণ প্রদান করে।
যদি কম্পোনেন্টটির একটি টেমপ্লেট বা একটি রেন্ডার ফাংশন সংজ্ঞায়িত থাকে, তাহলে এটি কন্টেইনারের ভিতরে বিদ্যমান যেকোনো DOM নোডকে প্রতিস্থাপন করবে। অন্যথায়, রানটাইম কম্পাইলার উপলব্ধ থাকলে, টেমপ্লেট হিসাবে কন্টেইনারের
ইনারএইচটিএমএল
ব্যবহার করা হবে।SSR হাইড্রেশন মোডে, এটি পাত্রের ভিতরে বিদ্যমান DOM নোডগুলিকে হাইড্রেট করবে। যদি অমিল থাকে, বিদ্যমান DOM নোডগুলি প্রত্যাশিত আউটপুটের সাথে মেলে।
প্রতিটি অ্যাপের উদাহরণের জন্য,
মাউন্ট()
শুধুমাত্র একবার কল করা যেতে পারে।উদাহরণ
jsimport { createApp } from 'vue' const app = createApp(/* ... */) app.mount('#app')
Can also mount to an actual DOM element:
jsapp.mount(document.body.firstChild)
app.unmount()
একটি মাউন্ট করা অ্যাপ্লিকেশন দৃষ্টান্ত আনমাউন্ট করে, অ্যাপ্লিকেশনের কম্পোনেন্ট গাছের সমস্ত কম্পোনেন্টস জন্য আনমাউন্ট লাইফসাইকেল হুকগুলিকে ট্রিগার করে৷
প্রকার
tsinterface App { unmount(): void }
app.onUnmount()
Registers a callback to be called when the app is unmounted.
Type
tsinterface App { onUnmount(callback: () => any): void }
app.component()
একটি নাম স্ট্রিং এবং একটি কম্পোনেন্ট সংজ্ঞা উভয় পাস করলে একটি বিশ্বব্যাপী কম্পোনেন্ট নিবন্ধন করে, অথবা শুধুমাত্র নাম পাস হলে ইতিমধ্যে নিবন্ধিত একটি পুনরুদ্ধার করে।
প্রকার
tsinterface App { component(name: string): Component | undefined component(name: string, component: Component): this }
উদাহরণ
jsimport { createApp } from 'vue' const app = createApp({}) // register an options object app.component('my-component', { /* ... */ }) // retrieve a registered component const MyComponent = app.component('my-component')
আরো দেখুন Component Registration
app.directive()
একটি নাম স্ট্রিং এবং একটি নির্দেশিক সংজ্ঞা উভয় পাস করলে একটি বিশ্বব্যাপী কাস্টম নির্দেশিকা নিবন্ধন করে, অথবা শুধুমাত্র নামটি পাস হলে ইতিমধ্যেই নিবন্ধিত একটি পুনরুদ্ধার করে৷
প্রকার
tsinterface App { directive(name: string): Directive | undefined directive(name: string, directive: Directive): this }
উদাহরণ
jsimport { createApp } from 'vue' const app = createApp({ /* ... */ }) // register (object directive) app.directive('my-directive', { /* custom directive hooks */ }) // register (function directive shorthand) app.directive('my-directive', () => { /* ... */ }) // retrieve a registered directive const myDirective = app.directive('my-directive')
আরো দেখুন Custom Directives
app.use()
Installs a plugin.
প্রকার
tsinterface App { use(plugin: Plugin, ...options: any[]): this }
বিস্তারিত
প্রথম আর্গুমেন্ট হিসাবে প্লাগইন এবং দ্বিতীয় আর্গুমেন্ট হিসাবে ঐচ্ছিক প্লাগইন অপশন আশা করে।
প্লাগইনটি হয় একটি
ইনস্টল()
পদ্ধতি সহ একটি অবজেক্ট হতে পারে, অথবা শুধুমাত্র একটি ফাংশন যাইনস্টল()
পদ্ধতি হিসেবে ব্যবহার করা হবে। বিকল্পগুলি (app.use()
এর দ্বিতীয় আর্গুমেন্ট) প্লাগইনেরইনস্টল()
পদ্ধতিতে পাস করা হবে।একই প্লাগইনে যখন
app.use()
একাধিকবার কল করা হয়, প্লাগইনটি একবার ইন্সটল করা হবে।উদাহরণ
jsimport { createApp } from 'vue' import MyPlugin from './plugins/MyPlugin' const app = createApp({ /* ... */ }) app.use(MyPlugin)
আরো দেখুন Plugins
app.mixin()
একটি গ্লোবাল মিক্সিন প্রয়োগ করে (অ্যাপ্লিকেশনের সুযোগ)। একটি গ্লোবাল মিক্সিন অ্যাপ্লিকেশনের প্রতিটি কম্পোনেন্ট উদাহরণে এর অন্তর্ভুক্ত বিকল্পগুলি প্রয়োগ করে।
প্রস্তাবিত নয়
ইকোসিস্টেম লাইব্রেরিতে তাদের ব্যাপক ব্যবহারের কারণে মিক্সিনগুলি মূলত পিছনের দিকের সামঞ্জস্যের জন্য Vue 3-তে সমর্থিত। অ্যাপ্লিকেশান কোডে মিক্সিনের ব্যবহার, বিশেষ করে গ্লোবাল মিক্সিন এড়ানো উচিত।
যুক্তি পুনঃব্যবহারের জন্য, পরিবর্তে কম্পোজেবল পছন্দ করুন।
প্রকার
tsinterface App { mixin(mixin: ComponentOptions): this }
app.provide()
একটি মান প্রদান করুন যা অ্যাপ্লিকেশনের মধ্যে সমস্ত বংশধর কম্পোনেন্টগুলিতে ইনজেকশন করা যেতে পারে।
প্রকার
tsinterface App { provide<T>(key: InjectionKey<T> | symbol | string, value: T): this }
বিস্তারিত
প্রথম আর্গুমেন্ট হিসাবে ইনজেকশন কী এবং দ্বিতীয় হিসাবে প্রদত্ত মান প্রত্যাশা করে। অ্যাপ্লিকেশন উদাহরণ নিজেই প্রদান করে.
উদাহরণ
jsimport { createApp } from 'vue' const app = createApp(/* ... */) app.provide('message', 'hello')
Inside a component in the application:
jsimport { inject } from 'vue' export default { setup() { console.log(inject('message')) // 'hello' } }
আরো দেখুন
app.runWithContext()
- শুধুমাত্র ৩.৩+ এ সমর্থিত
ইনজেকশন প্রসঙ্গ হিসাবে বর্তমান অ্যাপের সাথে একটি কলব্যাক চালান।
প্রকার
tsinterface App { runWithContext<T>(fn: () => T): T }
বিস্তারিত
একটি কলব্যাক ফাংশন আশা করে এবং অবিলম্বে কলব্যাক চালায়। কলব্যাকের সিঙ্ক্রোনাস কল চলাকালীন,
inject()
কলগুলি বর্তমান অ্যাপ দ্বারা প্রদত্ত মানগুলি থেকে ইনজেকশনগুলি সন্ধান করতে সক্ষম হয়, এমনকি কোনো বর্তমান সক্রিয় কম্পোনেন্টস উদাহরণ না থাকলেও৷ কলব্যাকের রিটার্ন মানও ফেরত দেওয়া হবে।উদাহরণ
jsimport { inject } from 'vue' app.provide('id', 1) const injected = app.runWithContext(() => { return inject('id') }) console.log(injected) // 1
app.version
Vue এর সংস্করণ প্রদান করে যেটি দিয়ে অ্যাপ্লিকেশনটি তৈরি করা হয়েছিল। এটি plugins এর ভিতরে দরকারী, যেখানে আপনার বিভিন্ন Vue সংস্করণের উপর ভিত্তি করে শর্তসাপেক্ষ যুক্তির প্রয়োজন হতে পারে।
প্রকার
tsinterface App { version: string }
উদাহরণ
একটি প্লাগইনের ভিতরে একটি সংস্করণ পরীক্ষা করা:
jsexport default { install(app) { const version = Number(app.version.split('.')[0]) if (version < 3) { console.warn('This plugin requires Vue 3') } } }
আরো দেখুন Global API - version
app.config
প্রতিটি অ্যাপ্লিকেশন দৃষ্টান্ত একটি config
অবজেক্টকে প্রকাশ করে যেটিতে সেই অ্যাপ্লিকেশনটির জন্য কনফিগারেশন সেটিংস রয়েছে। আপনি আপনার অ্যাপ্লিকেশন মাউন্ট করার আগে এর বৈশিষ্ট্যগুলি (নীচে নথিভুক্ত) সংশোধন করতে পারেন।
js
import { createApp } from 'vue'
const app = createApp(/* ... */)
console.log(app.config)
app.config.errorHandler
অ্যাপ্লিকেশনের মধ্যে থেকে প্রচারিত অজানা ত্রুটিগুলির জন্য একটি বিশ্বব্যাপী হ্যান্ডলারকে বরাদ্দ করুন৷
প্রকার
tsinterface AppConfig { errorHandler?: ( err: unknown, instance: ComponentPublicInstance | null, // `info` is a Vue-specific error info, // e.g. which lifecycle hook the error was thrown in info: string ) => void }
বিস্তারিত
error handler তিনটি আর্গুমেন্ট পায়: ত্রুটি, কম্পোনেন্ট ইনস্ট্যান্স যা ত্রুটিটি ট্রিগার করে এবং একটি তথ্য স্ট্রিং যা ত্রুটির উৎসের ধরন নির্দিষ্ট করে।
এটি নিম্নলিখিত sources গুলি থেকে ত্রুটিগুলি capture করতে পারে:
- Component renders
- Event handlers
- Lifecycle hooks
setup()
function- Watchers
- Custom directive hooks
- Transition hooks
TIP
উৎপাদনে, 3য় আর্গুমেন্ট (
তথ্য
) সম্পূর্ণ তথ্যের স্ট্রিংয়ের পরিবর্তে একটি সংক্ষিপ্ত কোড হবে। আপনি স্ট্রিং ম্যাপিংয়ের কোডটি উৎপাদন ত্রুটি কোড রেফারেন্স এ খুঁজে পেতে পারেন।Example
jsapp.config.errorHandler = (err, instance, info) => { // handle error, e.g. report to a service }
app.config.warnHandler
Vue থেকে রানটাইম সতর্কতার জন্য একটি কাস্টম হ্যান্ডলার বরাদ্দ করুন।
প্রকার
tsinterface AppConfig { warnHandler?: ( msg: string, instance: ComponentPublicInstance | null, trace: string ) => void }
বিস্তারিত
সতর্কতা হ্যান্ডলার প্রথম আর্গুমেন্ট হিসেবে সতর্কীকরণ বার্তা পায়, দ্বিতীয় আর্গুমেন্ট হিসেবে সোর্স কম্পোনেন্ট ইনস্ট্যান্স এবং তৃতীয় হিসেবে একটি কম্পোনেন্ট ট্রেস স্ট্রিং।
এটি কনসোল ভার্বোসিটি কমাতে নির্দিষ্ট সতর্কতা ফিল্টার করতে ব্যবহার করা যেতে পারে। সমস্ত Vue সতর্কতাগুলি ডেভেলপমেন্টের সময় সম্বোধন করা উচিত, তাই এটি শুধুমাত্র ডিবাগ সেশনের সময় অনেকের মধ্যে নির্দিষ্ট সতর্কতার উপর ফোকাস করার জন্য সুপারিশ করা হয়, এবং ডিবাগিং সম্পন্ন হলে এটি সরানো উচিত।
TIP
সতর্কতাগুলি শুধুমাত্র ডেভেলপমেন্টের সময় কাজ করে, তাই এই কনফিগারেশনটি উত্পাদন মোডে উপেক্ষা করা হয়।
উদাহরণ
jsapp.config.warnHandler = (msg, instance, trace) => { // `trace` is the component hierarchy trace }
app.config.performance
ব্রাউজার ডেভটুল পারফরম্যান্স/টাইমলাইন প্যানেলে কম্পোনেন্ট ইনিট, কম্পাইল, রেন্ডার এবং প্যাচ পারফরম্যান্স ট্রেসিং সক্ষম করতে এটিকে true
তে সেট করুন। শুধুমাত্র ডেভেলপমেন্ট মোডে এবং performance.mark API সমর্থন করে এমন ব্রাউজারে কাজ করে।
প্রকার:
boolean
আরো দেখুন Guide - Performance
app.config.compilerOptions
রানটাইম কম্পাইলার বিকল্পগুলি কনফিগার করুন। এই অবজেক্টে সেট করা মানগুলি ইন-ব্রাউজার টেমপ্লেট কম্পাইলারে পাঠানো হবে এবং কনফিগার করা অ্যাপের প্রতিটি কম্পোনেন্টকে প্রভাবিত করবে। মনে রাখবেন আপনি compilerOptions
বিকল্প ব্যবহার করে প্রতি- কম্পোনেন্ট ভিত্তিতে এই বিকল্পগুলিকে ওভাররাইড করতে পারেন।
গুরুত্বপূর্ণ
এই কনফিগার বিকল্পটি শুধুমাত্র সম্পূর্ণ বিল্ড ব্যবহার করার সময় সম্মান করা হয় (অর্থাৎ স্বতন্ত্র vue.js
যা ব্রাউজারে টেমপ্লেট কম্পাইল করতে পারে)। আপনি যদি বিল্ড সেটআপের সাথে রানটাইম-অনলি বিল্ড ব্যবহার করেন, তাহলে কম্পাইলার বিকল্পগুলি অবশ্যই বিল্ড টুল কনফিগারেশনের মাধ্যমে @vue/compiler-dom
-এ পাস করতে হবে।
vue-loader
এর জন্য:compilerOptions
লোডার বিকল্পের মাধ্যমে পাস করুন। এছাড়াও কিভাবে এটিকেvue-cli
এ কনফিগার করবেন দেখুন।vite
-এর জন্য:@vitejs/plugin-vue
বিকল্পের মাধ্যমে পাস।
app.config.compilerOptions.isCustomElement
নেটিভ কাস্টম কম্পোনেন্ট চিনতে একটি চেক পদ্ধতি নির্দিষ্ট করে।
প্রকার:
(tag: string) => boolean
বিস্তারিত
ট্যাগটিকে একটি নেটিভ কাস্টম কম্পোনেন্ট হিসাবে বিবেচনা করা হলে
true
ফেরত দেওয়া উচিত। একটি মিলে যাওয়া ট্যাগের জন্য, Vue এটিকে একটি Vue কম্পোনেন্ট হিসাবে সমাধান করার চেষ্টা করার পরিবর্তে একটি নেটিভ কম্পোনেন্ট হিসাবে রেন্ডার করবে।এই ফাংশনে নেটিভ এইচটিএমএল এবং এসভিজি ট্যাগগুলির সাথে মিলিত হওয়ার প্রয়োজন নেই - Vue-এর পার্সার স্বয়ংক্রিয়ভাবে সেগুলিকে চিনতে পারে৷
উদাহরণ
js// treat all tags starting with 'ion-' as custom elements app.config.compilerOptions.isCustomElement = (tag) => { return tag.startsWith('ion-') }
আরো দেখুন Vue and Web Components
app.config.compilerOptions.whitespace
টেমপ্লেট হোয়াইটস্পেস হ্যান্ডলিং আচরণ সামঞ্জস্য করে।
প্রকার:
'condense' | 'preserve'
Default:
'condense'
বিস্তারিত
Vue আরও দক্ষ কম্পাইল আউটপুট তৈরি করতে টেমপ্লেটগুলিতে হোয়াইটস্পেস অক্ষরগুলি সরিয়ে / ঘনীভূত করে। ডিফল্ট কৌশল হল "কনডেন্স", নিম্নলিখিত আচরণ সহ:
- একটি কম্পোনেন্টস অভ্যন্তরে অগ্রণী / শেষ হোয়াইটস্পেস অক্ষরগুলিকে একক স্থানে ঘনীভূত করা হয়।
- নতুন লাইন ধারণকারী কম্পোনেন্টগুলির মধ্যে হোয়াইটস্পেস অক্ষরগুলি সরানো হয়।
- টেক্সট নোডের ক্রমাগত হোয়াইটস্পেস অক্ষরগুলিকে একক স্থানে ঘনীভূত করা হয়।
এই বিকল্পটিকে `'preserve'-এ সেট করলে (2) এবং (3) নিষ্ক্রিয় হবে।
উদাহরণ
jsapp.config.compilerOptions.whitespace = 'preserve'
app.config.compilerOptions.delimiters
টেমপ্লেটের মধ্যে টেক্সট ইন্টারপোলেশনের জন্য ব্যবহৃত ডিলিমিটারগুলিকে সামঞ্জস্য করে।
প্রকার:
[string, string]
Default:
['{{', '}}']
বিস্তারিত
এটি সাধারণত সার্ভার-সাইড ফ্রেমওয়ার্কের সাথে বিরোধ এড়াতে ব্যবহৃত হয় যা গোঁফের সিনট্যাক্স ব্যবহার করে।
উদাহরণ
js// Delimiters changed to ES6 template string style app.config.compilerOptions.delimiters = ['${', '}']
app.config.compilerOptions.comments
টেমপ্লেটে এইচটিএমএল মন্তব্যের চিকিৎসা সামঞ্জস্য করে।
প্রকার:
boolean
Default:
false
বিস্তারিত
ডিফল্টরূপে, Vue প্রোডাকশনে মন্তব্যগুলি সরিয়ে দিবে। এই বিকল্পটিকে
true
তে সেট করা Vue কে এমনকি উৎপাদনেও মন্তব্য সংরক্ষণ করতে বাধ্য করবে। মন্তব্য সবসময় উন্নয়নের সময় সংরক্ষিত হয়. এই বিকল্পটি সাধারণত ব্যবহৃত হয় যখন Vue অন্যান্য লাইব্রেরির সাথে ব্যবহার করা হয় যা HTML মন্তব্যের উপর নির্ভর করে।উদাহরণ
jsapp.config.compilerOptions.comments = true
app.config.globalProperties
একটি অবজেক্ট যা বিশ্বব্যাপী বৈশিষ্ট্য নিবন্ধন করতে ব্যবহার করা যেতে পারে যা অ্যাপ্লিকেশনের ভিতরে যেকোন কম্পোনেন্টস উদাহরণে অ্যাক্সেস করা যেতে পারে।
প্রকার
tsinterface AppConfig { globalProperties: Record<string, any> }
বিস্তারিত
এটি Vue 2 এর
Vue.prototype
এর একটি প্রতিস্থাপন যা এখন আর Vue 3 তে নেই। বৈশ্বিক যেকোনো কিছুর মতো, এটিকে অল্প ব্যবহার করা উচিত।যদি একটি বৈশ্বিক কম্পিউটেড প্রপার্টি একটি কম্পোনেন্টস নিজস্ব কম্পিউটেড প্রপার্টির সাথে দ্বন্দ্ব করে, তবে কম্পোনেন্টটির নিজস্ব কম্পিউটেড প্রপার্টির অগ্রাধিকার থাকবে।
ব্যবহার
jsapp.config.globalProperties.msg = 'hello'
এটি অ্যাপ্লিকেশানের যেকোনো কম্পোনেন্ট টেমপ্লেটের ভিতরে
msg
উপলব্ধ করে, এবং কোনো কম্পোনেন্ট উদাহরণেরএ
তেও:jsexport default { mounted() { console.log(this.msg) // 'hello' } }
আরো দেখুন Guide - Augmenting Global Properties
app.config.optionMergeStrategies
কাস্টম কম্পোনেন্ট বিকল্পগুলির জন্য মার্জিং কৌশল নির্ধারণের জন্য একটি অবজেক্ট।
প্রকার
tsinterface AppConfig { optionMergeStrategies: Record<string, OptionMergeFunction> } type OptionMergeFunction = (to: unknown, from: unknown) => any
বিস্তারিত
কিছু প্লাগইন/লাইব্রেরি কাস্টম কম্পোনেন্ট বিকল্পের জন্য সমর্থন যোগ করে (গ্লোবাল মিক্সিন ইনজেকশনের মাধ্যমে)। এই বিকল্পগুলির জন্য বিশেষ মার্জিং যুক্তির প্রয়োজন হতে পারে যখন একই বিকল্পটিকে একাধিক উত্স থেকে "একত্রীকরণ" করতে হবে (যেমন মিক্সিন বা কম্পোনেন্ট উত্তরাধিকার)।
app.config.optionMergeStrategies
অবজেক্টে কী হিসাবে বিকল্পের নাম ব্যবহার করে একটি কাস্টম বিকল্পের জন্য একটি মার্জ কৌশল ফাংশন নিবন্ধিত করা যেতে পারে।মার্জ স্ট্র্যাটেজি ফাংশন যথাক্রমে প্রথম এবং দ্বিতীয় আর্গুমেন্ট হিসাবে অভিভাবক এবং সন্তানের দৃষ্টান্তগুলিতে সংজ্ঞায়িত বিকল্পটির মান গ্রহণ করে।
উদাহরণ
jsconst app = createApp({ // option from self msg: 'Vue', // option from a mixin mixins: [ { msg: 'Hello ' } ], mounted() { // merged options exposed on this.$options console.log(this.$options.msg) } }) // define a custom merge strategy for `msg` app.config.optionMergeStrategies.msg = (parent, child) => { return (parent || '') + (child || '') } app.mount('#app') // logs 'Hello Vue'
See also Component Instance -
$options
app.config.idPrefix
Configure a prefix for all IDs generated via useId() inside this application.
Type:
string
Default:
undefined
Example
jsapp.config.idPrefix = 'my-app'
js// in a component: const id1 = useId() // 'my-app:0' const id2 = useId() // 'my-app:1'
app.config.throwUnhandledErrorInProduction
Force unhandled errors to be thrown in production mode.
Type:
boolean
Default:
false
Details
By default, errors thrown inside a Vue application but not explicitly handled have different behavior between development and production modes:
In development, the error is thrown and can possibly crash the application. This is to make the error more prominent so that it can be noticed and fixed during development.
In production, the error will only be logged to the console to minimize the impact to end users. However, this may prevent errors that only happen in production from being caught by error monitoring services.
By setting
app.config.throwUnhandledErrorInProduction
totrue
, unhandled errors will be thrown even in production mode.