অনেক এইচটিএমএল টেমপ্লেট ফাইল সহ একটি বৃহত্তর উল্কা অ্যাপ্লিকেশন গঠনের সেরা অনুশীলনগুলি কী কী? [বন্ধ]


165

সমস্ত উদাহরণে (লিডারবোর্ড, ওয়ার্ডপ্লে ইত্যাদি) তাদের একটি একক এইচটিএমএল টেম্পলেট ফাইল রয়েছে। আমরা একটি সর্বোত্তম অনুশীলনের উদাহরণ হিসাবে ব্যবহার করতে পারি এমন অনেকগুলি এইচটিএমএল টেমপ্লেট ফাইল সহ কোনও বৃহত ওপেন সোর্স মেটিয়র প্রকল্প রয়েছে? একটি বড় অ্যাপ্লিকেশনটির যা দরকার তা সমস্ত একটি টেম্পলেট ফাইলে রাখার জন্য ব্যবহারিক বলে মনে হচ্ছে না।


উল্কা নতুন কাপড়, আমি havenot কিছু সম্পর্কিত সেরা অনুশীলনের এটি এই .আমি এছাড়াও সম্পর্কে এই কিছু guildline আশা সম্পর্কে
newlife

10
আপনি ম্যানুয়ালটিতে আপনার অ্যাপ্লিকেশন স্ট্রাকচারিংয়ের অংশটি পড়েছেন ? এইচটিএমএল ফাইলগুলির স্ক্যান এবং কনটেনটিং সম্পর্কে কিছু ব্যাখ্যা রয়েছে।
জুইপ্পি

1
উল্কা অফিসিয়াল গাইড একটি খুব শীতল ফাইল কাঠামো পরামর্শ দেয়। এখানে চেক করুন: গাইড.meteor.com
ওয়াকাস

উত্তর:


16

সব একসাথে! ডক্স থেকে:

> HTML files in a Meteor application are treated quite a bit differently
> from a server-side framework. Meteor scans all the HTML files in your
> directory for three top-level elements: <head>, <body>, and
> <template>. The head and body sections are seperately concatenated
> into a single head and body, which are transmitted to the client on
> initial page load.
> 
> Template sections, on the other hand, are converted into JavaScript
> functions, available under the Template namespace. It's a really
> convenient way to ship HTML templates to the client. See the templates
> section for more.

29
যদিও এটি পোস্টারের উদ্বেগ। লম্পিং ঠিক আছে তবে আসনের সাথে কী ঘটে তা আপনি দেখতে পারেন - এটি ক্লায়েন্ট কোডটি> 1 এমবি ডাউনলোড করার সময় একটি লোড স্ক্রিনের প্রয়োজন। এটি অনেক সাইটের জন্য গ্রহণযোগ্য নয়। আমরা দেখতে যাচ্ছি যে আমরা সম্ভবত প্রধান পর্দার লোডের পরে কিছু লোডিং টুকরোয়াল করতে পারি না তবে আমি এখনই সন্দেহবাদী। আমি মনে করি জিনিসগুলি কিছুটা ভাঙার জন্য এটির বৈশিষ্ট্য হওয়া দরকার।
ডেভ স্যান্ডার্স

36
এই উত্তরটি গুগলে # 1 ফলাফল তবে এটি বিশ্বাসযোগ্যভাবে পুরানো। আমার মতো ভবিষ্যতের অন্যান্য দর্শক; নীচে দেখো!
ক্লোয়ার

১.১.০.২.২০১৮ পর্যন্ত, আপনি যখন ব্রাউজারের ক্যাশে মুছে ফেলা হয় তখন হার্ড টু অ্যাপ্লিকেশনটি 1.7MB ফাইল স্থানান্তর করে। এটি সেখানে প্রচুর ব্যবহারের ক্ষেত্রে অগ্রহণযোগ্য। : / সম্পদগুলি ক্যাশে হয়ে গেলে বিষয়গুলিতে অনেক উন্নতি হয় তবে প্রথম বারে এটি বেশ নিষ্ঠুর।
জেসন কিম

আইডিয়া: ওয়েবপ্যাক ব্যবহার করুন, জিনিসগুলির জন্য বান্ডিল তৈরি করুন, প্রয়োজন হলে অলস লোড করুন।
trusktr

হ্যাঁ আসনা লোড হতে কিছুটা সময় নেয়। আসানাও একটি অবিশ্বাস্যরূপে সম্পন্ন, প্রতিক্রিয়াশীল অ্যাপ্লিকেশন যা ব্যবহারকারীরা ২০১৪ সালে ১5৫ মিলিয়ন কাজ তৈরি করেছিলেন faster আপনার ফোনেও অ্যাপ্লিকেশন শুরু হতে এক মুহুর্ত লাগে। মানুষ এতে অভ্যস্ত হয়ে যাবে।
ম্যাক্স হজস

274

অনানুষ্ঠানিক উল্কা প্রশ্নাবলীর মতোই, আমি মনে করি এটি একটি বড় অ্যাপ্লিকেশনটি কীভাবে গঠন করবেন তা বেশ ব্যাখ্যা করেছে:

আমার ফাইলগুলি কোথায় রাখা উচিত?

উল্কার উদাহরণস্বরূপ অ্যাপ্লিকেশনগুলি খুব সহজ, এবং খুব বেশি অন্তর্দৃষ্টি দেয় না। এটি করার সর্বোত্তম উপায়ে আমার বর্তমান চিন্তাভাবনাটি এখানে রয়েছে: (কোনও পরামর্শ / উন্নতি খুব স্বাগত!)

lib/                       # <- any common code for client/server.
lib/environment.js         # <- general configuration
lib/methods.js             # <- Meteor.method definitions
lib/external               # <- common code from someone else
## Note that js files in lib folders are loaded before other js files.

collections/               # <- definitions of collections and methods on them (could be models/)

client/lib                 # <- client specific libraries (also loaded first)
client/lib/environment.js  # <- configuration of any client side packages
client/lib/helpers         # <- any helpers (handlebars or otherwise) that are used often in view files

client/application.js      # <- subscriptions, basic Meteor.startup code.
client/index.html          # <- toplevel html
client/index.js            # <- and its JS
client/views/<page>.html   # <- the templates specific to a single page
client/views/<page>.js     # <- and the JS to hook it up
client/views/<type>/       # <- if you find you have a lot of views of the same object type
client/stylesheets/        # <- css / styl / less files

server/publications.js     # <- Meteor.publish definitions
server/lib/environment.js  # <- configuration of server side packages

public/                    # <- static files, such as images, that are served directly.

tests/                     # <- unit test files (won't be loaded on client or server)

বৃহত্তর অ্যাপ্লিকেশনগুলির জন্য, পৃথক কার্যকারিতা উপ-ডিরেক্টরিগুলিতে বিভক্ত হতে পারে যা এগুলি একই প্যাটার্ন ব্যবহার করে সংগঠিত হয়। এখানে ধারণাটি হ'ল শেষ পর্যন্ত কার্যকারিতাটির মডিউলটি একটি পৃথক স্মার্ট প্যাকেজ হিসাবে চিহ্নিত করা যেতে পারে এবং আদর্শভাবে এটি প্রায় ভাগ করা যায়।

feature-foo/               # <- all functionality related to feature 'foo'
feature-foo/lib/           # <- common code
feature-foo/models/        # <- model definitions
feature-foo/client/        # <- files only sent to the client
feature-foo/server/        # <- files only available on the server

আরও অনুসন্ধান করুন: আনুষ্ঠানিক উল্কা প্রশ্নাবলী


12
আইএমএইচও এটি গৃহীত উত্তরের চেয়ে ভাল। আমি এখন এটি চেষ্টা করব।
হাকান

17
০..6.০ থেকে, আপনি সেই জগাখিচুড়ি এড়ানো এবং স্মার্ট প্যাকেজগুলির বাইরে আপনার অ্যাপ্লিকেশনটি পুরোপুরি চালানো থেকে অনেক ভাল। আমি এই ব্লগ পোস্টে আরও কিছুটা বিশদে যেতে চাই: matb33.me/2013/09/05/meteor-project-st
संरचना.

1
কারও কাছে কোথায় একটা ক্লু লাগবে mobile-config.js?
ডুড

1
উত্তর এবং অফিশিয়াল-ফ্যাক্সের লিঙ্কের জন্য ধন্যবাদ (আমি উল্কার জগতে নতুন), "অন্য কারও কাছ থেকে প্রচলিত কোড" বলতে কী বোঝায়? ধন্যবাদ!
কোহার্স

3
উল্কা 1.3 হিসাবে, আমি বলব এটি ES6 মডিউল আমদানির কারণে পুরানো। অ্যাপ্লিকেশন কাঠামোর বিষয়ে উল্কা গাইড নিবন্ধটি দেখুন: গাইড. meteor.com
স্যামুয়েল

36

আমি ইয়াগুয়ারের সাথে একমত, তবে পরিবর্তে:

ক্লায়েন্ট / application.js

ব্যবহার করুন:

ক্লায়েন্ট / main.js

প্রধান। * ফাইলগুলি সর্বশেষে লোড হয়। এটি আপনার কোনও লোড অর্ডার সংক্রান্ত সমস্যা না রয়েছে তা নিশ্চিত করতে সহায়তা করবে। আরও তথ্যের জন্য মেটিয়র ডকুমেন্টেশন, http://docs.meteor.com/#structuringyourapp দেখুন।


26

উল্কাটি এমনভাবে নকশা করা হয়েছিল যাতে আপনি আপনার অ্যাপ্লিকেশনটিকে কোনওভাবেই কাঠামো করে তৈরি করতে পারেন। সুতরাং আপনি যদি আপনার কাঠামো পছন্দ করেন না, আপনি কেবল একটি ফাইলকে একটি নতুন ডিরেক্টরিতে স্থানান্তর করতে পারেন, বা এমনকি একটি ফাইলকে অনেক টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো বিভক্ত করা যায়। মূল ডকুমেন্টেশন পৃষ্ঠাতে উল্লিখিত ক্লায়েন্ট, সার্ভার এবং পাবলিক ডিরেক্টরিগুলির বিশেষ চিকিত্সাটি কেবল নোট করুন: http://docs.meteor.com/

একটি HTML ভরাটকে কেবল সমস্ত কিছু একসাথে করানো অবশ্যই সেরা অনুশীলন হিসাবে আবির্ভূত হবে না।

এখানে একটি সম্ভাব্য কাঠামোর উদাহরণ রয়েছে: আমার অ্যাপ্লিকেশনগুলির একটিতে, একটি আলোচনার ফোরাম, আমি মডিউল বা "পৃষ্ঠার ধরণ" (হোম, ফোরাম, বিষয়, মন্তব্য) দ্বারা সাজিয়ে থাকি, প্রত্যেকটির জন্য .css, .html এবং .js ফাইল স্থাপন করি একটি ডিরেক্টরি একসাথে পৃষ্ঠা টাইপ। আমার কাছে একটি "বেস" মডিউলও রয়েছে, যার মধ্যে সাধারণ .css এবং .js কোড এবং মাস্টার টেম্পলেট রয়েছে, যা রাউটারের উপর নির্ভর করে অন্য একটি মডিউল রেন্ডার করতে {{রেন্ডারপেজ} uses ব্যবহার করে।

my_app/
    lib/
        router.js
    client/
        base/
            base.html
            base.js
            base.css
        home/
            home.html
            home.js
            home.css
        forum/
            forum.html
            forum.js
            forum.css
        topic/
            topic.html
            topic.js
            topic.css
        comment/
            comment.html
            comment.js
            comment.css

আপনি ফাংশন দ্বারা সংগঠিত করতে পারে

my_app/
    lib/
        router.js
    templates/
        base.html
        home.html
        forum.html
        topic.html
        comment.html
    js/
        base.js
        home.js
        forum.js
        topic.js
        comment.js
    css/
        base.css
        home.css
        forum.css
        topic.css
        comment.css

আমি আশা করি যদিও আরও কিছু সুনির্দিষ্ট সেরা অনুশীলন কাঠামো এবং নামকরণের কনভেনশনগুলি উত্থিত হয়।


2
এটি আমার প্রিয় উত্তর। উল্কা সম্পর্কে আমার প্রিয় জিনিসগুলির মধ্যে একটি হ'ল আপনি আপনার ফাইলগুলিকে এমনভাবে গঠন করতে পারেন যা আপনার পক্ষে কাজ করে।
ক্যাপ্টসাল্টিজ্যাক

আমি এই উত্তর পছন্দ। আমি এটি প্রথম উপায়ে করছি
সু চো

সম্পর্কিত বিষয়গুলির একে অপরের নিকটবর্তী হওয়া উচিত। আমার উত্তরটি আপনার মত তবে পিছনের দিকে।
ম্যাক্স হজস


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

14

যারা এই বিষয়টিতে গুগল করছেন তাদের জন্য:

emকমান্ড লাইন টুল (EventedMind দ্বারা, আয়রন রাউটার পিছনে বলছি) খুব সহায়ক যখন একটি নতুন উল্কা অ্যাপ জাহাজের পাল প্রভৃতি রদড়াদড়ি হয়। এটি একটি দুর্দান্ত ফাইল / ফোল্ডার কাঠামো তৈরি করবে। আপনি যদি ইতিমধ্যে কোনও অ্যাপ্লিকেশনটিতে কাজ করেন এবং এটিকে পুনরায় সংগঠিত করতে চান তবে স্রেফ একটি নতুন প্রকল্প সেটআপ করুন emএবং আপনি এটি অনুপ্রেরণার জন্য ব্যবহার করতে পারেন।

দেখুন: https://github.com/EventedMind/em

এবং এখানে: https://stackoverflow.com


4
দ্রষ্টব্য: এটি আয়রন-ক্লাই (একই লেখক) দিয়ে প্রতিস্থাপন করা হয়েছে। দেখুন: github.com/iron-meteor/iron-cli
j0e

হ্যাঁ, 'em' এর নাম বদলে দেওয়া হয়েছে আয়রন-ক্লাই, একই সরঞ্জাম।
মিকেল লিরব্যাঙ্ক

11

আমি মনে করি ডিস্কভার মেটিয়র বুক থেকে ফাইলের কাঠামোটি সত্যিই ভাল এবং একটি শক্ত শুরু।

/app: 
 /client
   main.html
   main.js
 /server 
 /public
 /lib
 /collections
  • / সার্ভার ডিরেক্টরিতে কোড কেবল সার্ভারে চলে।
  • / ক্লায়েন্ট ডিরেক্টরিতে কোড কেবল ক্লায়েন্টের উপর চলে।
  • বাকি সমস্ত কিছুই ক্লায়েন্ট এবং সার্ভার উভয়তেই চলে।
  • / Lib এ থাকা ফাইলগুলি অন্য কোনও কিছুর আগে লোড হয়।
  • যে কোনও প্রধান। * ফাইলটি সমস্ত কিছুর পরে লোড হয়।
  • আপনার স্থিতিশীল সম্পদ (হরফ, ইমেজ, ইত্যাদি) / সর্বজনীন ডিরেক্টরিতে যান।

10

প্যাকেজ তৈরি করুন

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

আপনি কীভাবে আপনার ফাইলগুলি লোড করবেন (লোডিং অর্ডার, যেখানে: ক্লায়েন্ট / সার্ভার / উভয়) এবং প্যাকেজটি কী রফতানি করে তার উপরে উল্কাপ্রত্রে একটি সূক্ষ্ম নিয়ন্ত্রণের অনুমতি দেয়।

আমি বিশেষত সম্পর্কিত ফাইলগুলির মধ্যে যুক্তি ভাগ করার খুব সহজ উপায় খুঁজে পাই। বলুন, উদাহরণস্বরূপ, আপনি কিছু ব্যবহারের ফাংশন করতে চান এবং বিভিন্ন ফাইলগুলিতে ব্যবহার করতে চান। আপনি কেবল এটিকে "গ্লোবাল" করে varতুলুন (ছাড়াই ) এবং উল্কা এটি প্যাকেজের নামস্থানে আবদ্ধ করবে, সুতরাং এটি বিশ্বব্যাপী নেমস্পেসকে দূষিত করবে না

এখানে সরকারী ডক


6

আবহাওয়া কোডিং থেকে কিছুক্ষণ বেরিয়ে যাওয়ার পরে, আমি মোটামুটি জটিল অনলাইন অনলাইন গেমটি তৈরি করতে কিছুটা অতিরিক্ত সময় ব্যয় করে খুশি to অ্যাপ স্ট্রাকচারটি আমার প্রথম উদ্বেগগুলির মধ্যে একটি হয়ে দাঁড়িয়েছে এবং দেখে মনে হচ্ছে বেশ কয়েকটি খুব ভাল প্রোগ্রামাররা কোনও অ্যাপ্লিকেশন গঠনের প্যাকেজ-কেবল পদ্ধতিটিকেই চ্যাম্পিয়ন করেছে, যা আপনাকে কার্যত স্বতন্ত্র প্যাকেজগুলি দু'তিনত করতে দেয়। পদ্ধতির অন্যান্য সুবিধাগুলি রয়েছে, এবং পদ্ধতির ব্যাখ্যা দিয়ে দেওয়া খুব ভাল 2 টি নিবন্ধ এখানে পাওয়া যাবে:

http://www.matb33.me/2013/09/05/meteor-project-st संरचना. html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-st संरचना- with-mediator -pattern


6

আমাদের একটি বৃহত প্রকল্প রয়েছে (সম্ভবত 1.5 বছরের মধ্যে এটি পূর্ণ-সময়ের বিকাশ হিসাবে আজ অবধি কেউ তৈরি করেছে সবচেয়ে বড় উল্কা প্রকল্প)। আমরা প্রতিটি ভিউতে ফাইলের একই সেট ব্যবহার করি। এটি খুব সামঞ্জস্যপূর্ণ এবং দ্রুত আমরা যা খুঁজছি ঠিক তা দ্রুত যেতে সাহায্য করে:

  • events.js
  • helpers.js
  • templates.html
  • routes.js
  • styles.less
  • প্রভৃতি

কোনও প্রকল্পে এটির মতো দেখাচ্ছে:

       Ol একীকরণের অনুরোধ
       । ├── ইভেন্ট.js
       । ├── helpers.js
       Ters ├── রাউটার.জেএস
       । Lates টেম্পলেটগুলি html ml
       ├── গ্রাহকস্পুফ
       Ters └── রাউটার.জেএস
       । ড্যাশবোর্ড
       । ├── ইভেন্ট.js
       । ├── helpers.js
       Est DDestroyed.js
       End RRendered.js
       Ters ├── রাউটার.জেএস
       । Lates টেম্পলেটগুলি html ml
       ├── ইমেলবিজ্ঞাপন
       । ├── ইভেন্ট.js
       । ├── helpers.js
       Ters ├── রাউটার.জেএস
       । Lates টেম্পলেটগুলি html ml
       ├── লোডিং
       Les les স্টাইলস সিএসএস
       । Lates টেম্পলেটগুলি html ml
       ├── মেলবক্স
       Of of অটোফর্ম.জেএস
       ├── ol একীকরণের চাহিদা কনফার্মেশন
       । │ ├── ইভেন্ট.js
       Ers │ ├── helpers.js
       C │ ├── onCreated.js
       R │ ├── onRendered.js
       । │ └── টেম্পলেটগুলি html
       । ├── ইভেন্ট.js
       । ├── helpers.js

সম্পর্কিত টেম্পলেটগুলি একই ফাইলে একসাথে সঞ্চিত থাকে। view/order/checkout/templates.htmlদেখানো সামগ্রীগুলি এখানে ধসে পড়েছে:

<template name="orderCheckout"></template>

<template name="paymentPanel"></template>

<template name="orderCheckoutSummary"></template>

<template name="paypalReturnOrderCheckout"></template>

ভিউগুলি প্রচুর অংশের সাথে জটিল হয়ে উঠলে আমরা সাবফোল্ডার ব্যবহার করি:

       ├── কার্ট
       ├── ├── অ্যাড আইটেম
       Of │ ├── অটোফর্ম.জেএস
       । │ ├── ইভেন্ট.js
       Ers │ ├── helpers.js
       R │ ├── onRendered.js
       Ters │ ├── routers.js
       । │ ├── শৈলী.বিহীন
       । │ └── টেম্পলেটগুলি html
       ├── ├── চেকআউট
       Of │ ├── অটোফর্ম.জেএস
       । │ ├── ইভেন্ট.js
       Ers │ ├── helpers.js
       R │ ├── onRendered.js
       Ters │ ├── routers.js
       । │ └── টেম্পলেটগুলি html
       ।। দর্শন
       Of of অটোফর্ম.জেএস
       ├── ├── মুছে ফেলুন আইটেম
       । │ ├── ইভেন্ট.js
       Ers │ ├── helpers.js
       । │ └── টেম্পলেটগুলি html
       ├── ├── editItem
       Of │ ├── অটোফর্ম.জেএস
       । │ ├── ইভেন্ট.js
       Ers │ ├── helpers.js
       । │ └── টেম্পলেটগুলি html
       । ├── ইভেন্ট.js
       । ├── helpers.js
       Est DDestroyed.js
       End RRendered.js
       Ters ├── রাউটার.জেএস
       Les ├── শৈলী.হীন
       । Lates টেম্পলেটগুলি html ml

আমরা ওয়েবস্টোরমের সাথেও বিকাশ করি, যা উল্কা বিকাশের জন্য অত্যন্ত শক্তিশালী এবং নমনীয় সম্পাদক। আমাদের কোড অনুসন্ধান এবং সংগঠিত করার সময় এবং উত্পাদনশীলভাবে কাজ করার সময় আমরা এটি অত্যন্ত সহায়ক বলে মনে করি। ওয়েবস্টর্ম ভিউ

অনুরোধে বিশদ শেয়ার করে খুশি।


3
এই উত্তরটি উন্নত করা যেতে পারে বলে মনে করেন দয়া করে একটি মন্তব্য যুক্ত করুন।
ম্যাক্স হেজস

দুর্দান্ত পোস্ট। প্রশ্ন: এতক্ষণ উল্কার সাথে থাকার পরেও, আপনি কি এখনও এটি ইকমার্সের মতো বড় প্রকল্পগুলির জন্য সুপারিশ করেন? অথবা এমন একটি কাঠামো ব্যবহার করে বিবেচনা করুন যা আপনাকে লুপব্যাক বা হাপ্পির মতো আরও "স্বায়ত্তশাসন" দিতে পারে।
লিকো

আমরা উল্কা পছন্দ করি এবং এর মধ্যে সমস্ত নতুন বিকাশ করি। দুর্ভাগ্যক্রমে আমি মতামত জানাতে লুপব্যাক বা হ্যাপির সাথে যথেষ্ট পরিচিত নই।
ম্যাক্স হজস

1
লুপব্যাকস এন্ড-টু-এন্ড রেস্ট এপিআইগুলিতে ফোকাস এটিকে একটি traditionalতিহ্যবাহী ওয়েব বিকাশ কাঠামোর মতো সাউন্ড করে তোলে (যেমন আরআর)। আরআরআরইএসইএসটি ঠিক এআইপিআই পেয়েছে, তবে আমরা অনুভব করি যে উল্কাটি রিয়েলটাইমটি ঠিক পেয়েছে।
ম্যাক্স হজস

সাহায্য করার জন্য ধন্যবাদ. আপনি বৈশিষ্ট্যগুলির জন্যও সার্ভার সাইডটি সাজিয়েছেন?
লাইকো

5

আয়রন-ক্লাইভ স্ক্যাফোল্ডিং সিএলআই ব্যবহার করুন জিনিসগুলি খুব সহজ করে তোলে।

https://github.com/iron-meteor/iron-cli

একবার ইনস্টল করা। iron create my-appএকটি নতুন প্রকল্প তৈরি করতে ব্যবহার করুন । এটি আপনার জন্য নিম্নলিখিত কাঠামো তৈরি করবে। আপনি বিদ্যমান প্রকল্পগুলিতে এটি ব্যবহার করতে পারেন। iron migrateপ্রকল্প ডিরেক্টরিতে ব্যবহার করুন ।

my-app/    
 .iron/    
   config.json    
 bin/    
 build/    
 config/    
   development/    
     env.sh    
     settings.json    
 app/    
   client/    
     collections/    
     lib/    
     stylesheets/    
     templates/    
     head.html    
   lib/    
     collections/    
     controllers/    
     methods.js    
     routes.js    
   packages/    
   private/    
   public/    
   server/    
     collections/    
     controllers/    
     lib/    
     methods.js    
     publish.js    
     bootstrap.js

যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
ব্যবহারকারী 2314737

@ ব্যবহারকারী 2314737 চিৎকার করে বলতে হবে যে উত্তরদাতা তার পোস্টটি সম্পাদনা করেছেন। এটি এখন ইস্যুটি হাতে হাতে প্রয়োজনীয় প্রয়োজনীয় তথ্য অন্তর্ভুক্ত করে।
কিয়েল

4

আমি ম্যাটডিওম বয়লারপ্লেট ফর্ম্যাটটি অনুসরণ করছি, যার মধ্যে ইতিমধ্যে আয়রন রাউটার এবং মডেল (সংগ্রহ 2) অন্তর্ভুক্ত রয়েছে। নিচে দেখ :

client/                 # Client folder
    compatibility/      # Libraries which create a global variable
    config/             # Configuration files (on the client)
    lib/                # Library files that get executed first
    startup/            # Javascript files on Meteor.startup()
    stylesheets         # LESS files
    modules/            # Meant for components, such as form and more(*)
    views/              # Contains all views(*)
        common/         # General purpose html templates
model/                  # Model files, for each Meteor.Collection(*)
private/                # Private files
public/                 # Public files
routes/                 # All routes(*)
server/                 # Server folder
    fixtures/           # Meteor.Collection fixtures defined
    lib/                # Server side library folder
    publications/       # Collection publications(*)
    startup/            # On server startup
meteor-boilerplate      # Command line tool

3

আপনার অ্যাপ্লিকেশন স্ট্রাকচার করার জন্য বিভিন্ন পদ্ধতি রয়েছে। উদাহরণস্বরূপ আপনার যদি রাউটার এবং বিভিন্ন পৃষ্ঠার টেম্পলেট থাকে এবং প্রতিটি পৃষ্ঠার টেমপ্লেটের অভ্যন্তরে আপনার পৃষ্ঠার অনেকগুলি অংশ এবং এই জাতীয় থাকে তবে আমি এটি উচ্চতর> নিম্ন স্তর থেকে শব্দার্থবিজ্ঞানের উপর নির্ভর করে কাঠামো করব ..

উদাহরণ স্বরূপ:

client
  views
    common
      header
        header.html
        header.js
        header.css
      footer
        footer.html
        footer.js
        footer.css
    pages
      mainPage
        mainPage.html
        mainPage.js
        mainPage.css
        articles
          articles.html
          articles.js
          articles.css
        news
          news.html
          news.js
          news.css
     ...

অবশ্যই, আপনি আপনার নিউজ টেমপ্লেটগুলি সাধারণ ফোল্ডারে রেখে দিতে পারেন, যেহেতু আপনি বিভিন্ন পৃষ্ঠায় আপনার নিউজ টেমপ্লেট ব্যবহার করতে পারেন।

আমি মনে করি আপনি যেভাবে আরামদায়ক হন সেভাবে আপনার অ্যাপ্লিকেশনটি সবচেয়ে ভাল গঠন করা।

আমি এখানে একটি ছোট অ্যাপটি লিখেছি: http://gold.meteor.com এবং এটি খুব ছোট, আমি কেবল একটি HTML টি ফাইল এবং কেবল একটি টেম্পলেট.জেএস ফাইল ব্যবহার করি .. :)

আমি আশা করি এটি কিছুটা সাহায্য করবে


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

3

ইভটিড মাইন্ডে একটি নতুন ক্লাস রয়েছে যার নাম সেট আপ মেটিয়র প্রজেক্ট যে ঠিকানাগুলি এই বরং প্রকল্পের কনফিগারেশন এবং আপনার উন্নয়ন পরিবেশ স্থাপন করা সম্পর্কে আলোচনা।

থেকে অ্যাপ্লিকেশন গঠন ক্লাসে ভিডিও: উল্কা কিভাবে আপনার আবেদন গঠিত হবে কিন্তু এখানে কিছু নিয়ম আছে সম্পর্কে একটি খুব শক্তিশালী মতামত নেই:

1) লোড ক্রম - উল্কাটি প্রথমে ফাইল ডিরেক্টরিতে গভীরতম স্থানে যায় এবং ফাইলগুলিকে বর্ণানুক্রমিক ক্রমে প্রক্রিয়া করে

2) ক্লায়েন্ট এবং সার্ভারটি এমন বিশেষ ফোল্ডার যা মেটিয়ার স্বীকৃতি দেয়

আমাদের কাঠামোটি এমন দেখাচ্ছে:

both/
    collections/
        todos.js
    controllers/
        todos_controller.js
    views/
        todos.css
        todos.html
        todos.js
    app.js - includes routes
client/
    collections/
    views/
        app.js
server/
    collections/
    views/
        app.js
packages/
public/

টোডস_কন্ট্রোলার রুটকন্ট্রোলারকে প্রসারিত করে, যা আয়রন রাউটারের সাথে আসে।

emউপরে উল্লিখিত টুল এছাড়াও ডান এখন একটি বড় আপডেটের হচ্ছে এবং অনেক ভাল এবং এ উপলব্ধ হওয়া উচিত: https://github.com/EventedMind/em


/ সার্ভার / ভিউজ / এর ভিতরে কী দেখেছে?
স্টিফকড

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

1

আমি একটি ভাল কল্পনা করা আর্কিটেকচারের মাধ্যমে আমার অ্যাপ্লিকেশনগুলিকে উন্নত করতে এবং স্কেল করার জন্য সর্বোত্তম অনুশীলনগুলির সন্ধান করছি। উপরে উল্লিখিত সমস্ত অনুশীলনগুলি ছোট থেকে মাঝারি আকারের অ্যাপ্লিকেশানের জন্য কাজ করে তবে আপনি যখন বড় দলে কাজ করবেন তখন ব্যর্থ হবে। আমি চেষ্টা করেছি বিভিন্ন উপায়:

1) আমি এই কৌশলটি অনুসরণ করেছি: টেমপ্লেটগুলি স্কেল এবং পুনঃব্যবহার করতে https://github.com/aldeed/meteor-autoform । উপাদান এবং ক্ষেত্রের নকশা সম্পর্কে লেখকের খুব ভাল ধারণা রয়েছে। আমি বর্তমানে এটি বাস্তবায়ন করছি কারণ সম্প্রদায়টি প্রায় প্রতিটি ক্ষেত্রে কভার করে 36 টি প্যাকেজ তৈরি করেছে এবং আমি বিকাশের পর্যায়ে টাইপসক্রিপটি টাইপ সুরক্ষিত রাখতে ব্যবহার করতে পারি ।

<template name="autoForm">
  {{#unless afDestroyUpdateForm this.id}}
  {{! afDestroyUpdateForm is a workaround for sticky input attributes}}
  {{! See https://github.com/meteor/meteor/issues/2431 }}
  <form {{atts}}>
    {{> Template.contentBlock ..}}
  </form>
  {{/unless}}
</template>

এটি কীভাবে করা যায় সে সম্পর্কে এখানে একটি ভাল ব্লগ পোস্ট: http://blog.east5th.co/2015/01/13/custom- block-helpers-and-meteor-composability/ পাশাপাশি এখানে: http: // meteorpedia .com / পড়া / Blaze_Notes

2) এটি দেখতে খুব আশাবাদী তবে ইদানীং আপডেট করা হয়নি। এটি কফি স্ক্রিপ্ট লিখিত একটি প্যাকেজ বলা হয়। উল্কাপুলির জন্য ব্লেজ উপাদান ( https://github.com/peerlibrary/meteor-blaze-comp घटक) জটিল UI উপাদানগুলি সহজে বিকাশের জন্য একটি সিস্টেম যা আপনার উল্কা অ্যাপের চারপাশে পুনরায় ব্যবহার করা প্রয়োজন। আপনি এগুলি কফিস্ক্রিপ্ট, ভ্যানিলা জাভাস্ক্রিপ্ট এবং ইএস 6 এ ব্যবহার করতে পারেন। সেরা জিনিসটি হল, উপাদানগুলি ওওপি। এখানে তাদের উদাহরণগুলির মধ্যে একটি:

class ExampleComponent extends BlazeComponent {
  onCreated() {
    this.counter = new ReactiveVar(0);
  }

  events() {
    return [{
      'click .increment': this.onClick
    }];
  }

  onClick(event) {
    this.counter.set(this.counter.get() + 1);
  }

  customHelper() {
    if (this.counter.get() > 10) {
      return "Too many times";
    }
    else if (this.counter.get() === 10) {
      return "Just enough";
    }
    else {
      return "Click more";
    }
  }
}

ExampleComponent.register('ExampleComponent');

{{> ExampleComponent }}

3) আমি টাইপ এবং ট্রান্সপোর্টার পছন্দ করি যা আমাকে কখন এবং কখন কোনটি ভুল হয়ে যাবে তা বলে। আমি উল্কাটির সাথে কাজ করতে টাইপস্ক্রিপ্ট ব্যবহার করছি এবং নিম্নলিখিত সংগ্রহস্থলগুলি পেয়েছি: https://github.com/dataflows/meteor-typescript-utils দেখে মনে হচ্ছে স্রষ্টা এমভিসি পদ্ধতির সাফল্যের চেষ্টা করেছেন।

class MainTemplateContext extends MainTemplateData {
    @MeteorTemplate.event("click #heybutton")
    buttonClick(event: Meteor.Event, template: Blaze.Template): void {
        // ...
    }

    @MeteorTemplate.helper
    clicksCount(): number {
        // ...
    }
}

class MainTemplate extends MeteorTemplate.Base<MainTemplateData> {
    constructor() {
        super("MainTemplate", new MainTemplateContext());
    }

    rendered(): void {
        // ...
    }
}

MeteorTemplate.register(new MainTemplate());

<template name="MainTemplate">
    <p>
        <input type="text" placeholder="Say your name..." id="name">
        <input type="button" value="Hey!" id="heybutton">
    </p>
    <p>
        Clicks count: {{ clicksCount }}
    </p>

    <p>
        <ul>
            {{#each clicks }}
                <li> {{ name }} at <a href="{{pathFor 'SingleClick' clickId=_id}}">{{ time }}</a></li>
            {{/each}}
        </ul>
    </p>
</template>

দুর্ভাগ্যক্রমে, এই প্রকল্পটি রক্ষণাবেক্ষণ বা সক্রিয়ভাবে বিকাশযুক্ত নয়।

4) এবং আমি মনে করি এটি ইতিমধ্যে উল্লিখিত ছিল, আপনি প্যাকেজ ব্যবহার করে স্কেল করতে পারেন। এর জন্য ভাবনার একটি ভাল বিমূর্ত পদ্ধতি প্রয়োজন। এটি টেলিস্কোপের পক্ষে কাজ করছে বলে মনে হচ্ছে: https://github.com/TelescopeJS/Telescope

5) উল্কা-টেমপ্লেট-এক্সটেনশন - সহায়তা, ইভেন্ট হ্যান্ডলার এবং টেমপ্লেটগুলির মধ্যে হুকগুলি অনুলিপি করার বিভিন্ন উপায় সরবরাহ করে যা কোড পুনরায় ব্যবহারের অনুমতি দেয়; একটি খারাপ দিক হ'ল সমস্ত অনুলিপিটি একজন বিকাশকারীকে যত্ন নিতে হয়, প্রায়শই বারবার যা কোডবেস বাড়ার সাথে সাথে সমস্যা হয়ে ওঠে; তদ্ব্যতীত, একটি স্পষ্টভাবে সংজ্ঞায়িত এপিআই সম্প্রদায় ছাড়াই উপাদানগুলি তৈরি করতে এবং ভাগ করতে পারে না

)) ফ্লো উপাদানসমূহ - ফ্লো উপাদানগুলি এপিআই নকশায় প্রতিক্রিয়া ঘনিষ্ঠ হয় যখন ব্লেজ উপাদানগুলি তথ্য প্রসঙ্গে এবং টেমপ্লেট সহায়কগুলির মতো পরিচিত ধারণাগুলি রাখছে; অন্যদিকে ফ্লো উপাদানগুলি এখনও টেমপ্লেট-ভিত্তিক ইভেন্ট হ্যান্ডলারগুলি ব্যবহার করে যখন ব্লেজ উপাদানগুলি তাদের শ্রেণিবদ্ধ করে তোলে যাতে উত্তরাধিকারের মাধ্যমে তাদের প্রসারিত বা ওভাররাইড করা সহজ হয়; সাধারণভাবে ব্লেজ উপাদানগুলি আরও OOP ভিত্তিক বলে মনে হয়; ফ্লো উপাদান এখনো আনুষ্ঠানিকভাবে মুক্তি না হয় ( জন্য # 5 ও 6 নম্বর টেক্সট ক্রেডিট https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )

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

উল্কার সাথে কাজ করার সঠিক উপায় খুঁজে পাওয়া এখনও শক্ত। আপনার নিজের এটি নির্ধারণ করা দরকার, অন্যথায় আপনি একটি সুন্দর সাজানো ফোল্ডার কাঠামো শেষ করেন, তবে যেখানে সবকিছু সেখানে আপনার কোনও ধারণা নেই। শুভ কোডিং।

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