সমস্ত সূচকগুলি কীসের জন্য ব্যবহৃত হয়?


132

আমি কয়েকটি বীজ প্রকল্পের দিকে নজর রেখেছি এবং সমস্ত উপাদানগুলির কাছে এমন একটি সূচক রয়েছে বলে মনে হচ্ছে যা সেই উপাদান থেকে * রফতানি করে। এটি আসলে ব্যবহারের জন্য আমি কোথাও খুঁজে পাচ্ছি না?

যেমন https://github.com/mgechev/angular2-seed/tree/master/src/client/app/%2Bhome

ধন্যবাদ


1
এই আলোচনার সাথে সম্পর্কিত গিথুব সম্পর্কিত এই বিষয় । আপনার
কৌনিক

উত্তর:


227

থেকে Angular.io v2 এর সংরক্ষণাগার শব্দকোষ জন্য এন্ট্রি Barrel* :

একটি ব্যারেল হ'ল একক সুবিধা মডিউলে বেশ কয়েকটি মডিউল থেকে রফতানি রোলআপ করার উপায়। ব্যারেল নিজেই একটি মডিউল ফাইল যা অন্য মডিউলগুলির নির্বাচিত রফতানি পুনরায় রফতানি করে।

একটি বীর ফোল্ডারে তিনটি মডিউল কল্পনা করুন:

// heroes/hero.component.ts
export class HeroComponent {}

// heroes/hero.model.ts
export class Hero {}

// heroes/hero.service.ts
export class HeroService {}

ব্যারেল ব্যতীত গ্রাহকের জন্য তিনটি আমদানির বিবৃতি প্রয়োজন:

import { HeroComponent } from '../heroes/hero.component.ts';
import { Hero }          from '../heroes/hero.model.ts';
import { HeroService }   from '../heroes/hero.service.ts';

আমরা হিরো ফোল্ডারে একটি ব্যারেল যুক্ত করতে পারি (কনভেনশন দ্বারা সূচক বলা হয়) যা এই সমস্ত আইটেম রফতানি করে:

export * from './hero.model.ts';   // re-export all of its exports
export * from './hero.service.ts'; // re-export all of its exports
export { HeroComponent } from './hero.component.ts'; // re-export the named thing

এখন কোনও ভোক্তা ব্যারেল থেকে যা প্রয়োজন তা আমদানি করতে পারে।

import { Hero, HeroService } from '../heroes'; // index is implied

কৌণিক স্কোপযুক্ত প্যাকেজগুলির প্রতিটি সূচক নামের ব্যারেল থাকে।

ছাড়ও দেখুন : সমস্ত পরামিতিগুলি সমাধান করতে পারে না


* দ্রষ্টব্য: কৌনিক শব্দকোষের আরও সাম্প্রতিক সংস্করণগুলিBarrel থেকে সরানো হয়েছে ।

আপডেট করুন কৌনিকের সর্বশেষ সংস্করণ সহ, ব্যারেল ফাইলটি নীচের মতো সম্পাদনা করা উচিত,

export { HeroModel } from './hero.model';  
export { HeroService } from './hero.service'; 
export { HeroComponent } from './hero.component';

5
যখন আমি এর সমতুল্য export * from './hero.model.ts'করি, আমি "" এর মতো একটি আমদানি পথ '.ts' 'দিয়ে শেষ হতে পারে না এমন বার্তাটি পাই "সুতরাং আমি কেবল পরিবর্তিত হয়েছি export * from './hero.model'অ্যাঙ্গুলার
দ্য রেড মটর

1
এই ইঙ্গিতটির জন্য ধন্যবাদ। আমি এটি পরিবর্তন করতে চাই না কারণ এটি লিঙ্কযুক্ত পৃষ্ঠাটির (পূর্ববর্তী সংস্করণটির) একটি উদ্ধৃতি
Günter Zöchbauer

আপনি কি জানেন কোন সূচী স্বয়ংক্রিয়ভাবে জেনারেট করার জন্য কোনও সহায়ক গ্রন্থাগার বা আদেশ আছে?
tom10271

1
@ আলেকজান্দারআকাকোমভ যেহেতু কোনও উপাদান, নির্দেশিকা বা পাইপ অবশ্যই একটি এবং কেবল একটি মডিউলের অন্তর্গত, তারপরে উপরের যে কোনওটিকে একটি মডিউল হিসাবে ঘোষণা করার পরে আপনি যখন মডিউলটি আমদানি করেন তখন আপনি মূলত একই জিনিসটি অর্জন করেন ... ধরে নিও যে আপনি সেগুলি থেকে রফতানিও করেছেন মডিউল।
রিজম

2
@ কিওয়ারটি আমি নিশ্চিত যে এটি বৃক্ষ কাঁপানো নিয়ে কাজ করে, তবে ব্যারেল ব্যবহারের প্রস্তাব দেওয়া অনুশীলনগুলি থেকে অনেক আগে সরিয়ে দেওয়া হয়েছিল, আমি মনে করি যখন মডিউলগুলি যেখানে 1.0 এর আগে প্রবর্তিত হয়েছিল।
গন্টার জ্যাচবাউয়ার

29

index.tsindex.jsনোডজেজে একই বা index.htmlওয়েব সাইট হোস্টিং।

সুতরাং আপনি যখন বলবেন import {} from 'directory_name'এটি index.tsনির্দিষ্ট ডিরেক্টরিটির ভিতরে সন্ধান করবে এবং সেখানে যা রফতানি হবে আমদানি করবে।

উদাহরণস্বরূপ যদি আপনার calculator/index.tsমতো হয়

export function add() {...}
export function multiply() {...}

আপনি করতে পারেন

import { add, multiply } from './calculator';

3
@ ফ্লোয়ারস্কেপ রেকর্ডিং সূচকের মাধ্যমে রপ্তানি বিশেষত দরকারী যখন গ্রন্থাগার বা মডিউল স্তরের কোড তৈরি করার সময়, যাতে শেষ ব্যবহারকারীদের কম ভার্বোস আমদানি হয়। এটি আমদানিকৃত কোডের যে কোনও অপ্রয়োজনীয় / বিভ্রান্তিকর প্রয়োগের বিবরণও গোপন করে।
কুইন টার্নার

Refactoring। আপনি কোড পরিবর্তন করতে পারেন, প্রাক্তন। ফাইলগুলির পুনরায় নামকরণ করুন, যতক্ষণ আপনি রফতানিকে একই সূচকে রাখবেন।
ব্যবহারকারী 77115

3

index.ts সমস্ত সম্পর্কিত জিনিস একসাথে রাখতে আমাদের সহায়তা করুন এবং উত্স ফাইলের নাম সম্পর্কে আমাদের চিন্তা করার দরকার নেই।

উত্স ফোল্ডার নাম ব্যবহার করে আমরা সমস্ত জিনিস আমদানি করতে পারি।

import { getName, getAnyThing } from './util';

এখানে ব্যবহারটি হ'ল ফোল্ডারের নাম নয় ফাইলের নাম যা এতে index.tsচারটি ফাইলই পুনরায় রফতানি করে।

export * from './util1';
export * from './util2';
export * from './util3';
export * from './util4';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.