تاریخ انتشار: دوشنبه, ۲۲ ارديبهشت ۱۳۹۹، ۱۲:۲۶ ب.ظ نویسنده: محمدیان

تگ های فرم و ورودی ها

توضیحات خواص تگ
تعریف یک فرم html برای قرار دادن ورودی های کاربر enctype - method - novalidate - onreset - onsubmit - target - accept_charset action - autocomplete - name <form>
تعریف یک کنترل ورودی alt - autocomplete - autofocus - dirname - disabled - form - formaction height - list max - maxlength - min - multiple - name - onload - pattern - placeholder - readonly - required - size - src - step - type - value - width <input>
تعریف یک کنترل ورودی چندخطی autofocus - dirname - disabled - form - maxlength - name - placeholder - readonly - required wrap - cols - rows -  <textarea>
تعریف دکمه قابل کلیک autofocus - disabled - form - formaction - name - type - value <button>
تعریف یک لیست افتادنی dropdown autofocus - disabled - form - multiple - name - required - size <select>
تعریف گروهی از گزینه های مرتبط در یک لیست disabled - label <optgroup>
تعریف یک گزینه درون لیست افتادنی disabled - value - label - selected <option>
تعریف یک برچسب یا عنوان برای عناصر فرم form - for <label>
گروه بندی عناصر مربوط به هم درون یک فرم disabled - name <fieldset>
تعریف یک عنوان برای عنصر <fieldset>   <legend>
لیستی از گزینه های از پیش تعریف شده برای کنترل ورودی را مشخص میکند   <datalist>
تعریف نتیجه یک محاسبه form - for <output>

* خاصیت accept فقط برای تگ input از نوع file قابل استفاده است.

* خاصیت checked برای تگ input از نوع radio و checkbox قابل استفاده است.

* خاصیت یا رویداد onsearch مربوط به تگ input از نوع search میباشد برای زمانیکه کاربر فیلد را پر کرده است.

تگ ایحاد فریم

تعریف یک فریم درون خطی یا inline در صفحه height - name - onload - src - width - sandbox - srcdoc <iframe>

 

تاریخ انتشار: دوشنبه, ۲۲ ارديبهشت ۱۳۹۹، ۱۱:۴۷ ق.ظ نویسنده: محمدیان

تگ های قالب بندی متن
توضیحات خواص تگ
کلمه ای که مخفف چند کلمه است   <abbr>
درج اطلاعات تماس نویسنده، صاحب سند یا مقاله   <address>
ضخیم یا شاخص کردن قسمتی از متن   <strong>
جدا کردن بخشی از متن که ممکن است جهتش تغییر کند   <bdi>
جهت فعلی متن را نادیده میگیرد و حروف را برعکس میچیند   <bdo>
تعریف بخشی از متن که از جای دیگری (منبع دیگری) نقل شده است cite <blockquate>
تعریف عنوان یک اثر   <cite>
تکه ای از متن که فونت زبان ماشین (کد کامپیوتر) دارد   <coed>
تعریف متنی که از سند حذف شده است. (متن خط خورده) cite - datetime <del>
نمونه تعیین کننده یک اصطلاح را نشان میدهد (فونت متفاوت)   <dfn>
تعریف یک متن تاکید شده (فونت متفاوت)   <em>
تعریف بخشی از متن با حالت مفهومی مثل آیکن ها   <i>
تعریف متنی که در یک سند درج شده است، (زیر خط دار) بر عکس <del> cite - datetime <ins>
تعریف ورودی صفحه کلید با فونت کامپیوتری   <kbd>
هایلایت کردن قسمتی از متن   <mark>
تعریف یک مقیاس اندازه گیری در یک محدوده مشخص form - high - low - min - max - optimum - value <meter>
تعریف یک متن قالب بندی و پیش فرمت شده   <pre>
تعریف پیشرفت یک کار یا پروسه را نشان میدهد form - high - low - min - max - optimum - value <progress>
تعریف یک نقل قول کوتاه cite <q>
حاشیه نویسی روبی   <rp>
مربوط به زبانهای آسیای شرقی مثل چین و ژاپن   <rt>
حاشیه نویسی روبی   <ruby>
متنی را تعریف میکند که گزاره درستی نیست، اما قبلا درست بوده   <s>
خروجی نمونه از یک برنامه کامپیوتری با فونت مخصوص   <samp>
متن با اندازه کوچک   <small>
متن یا کلمه ای که زیر مجموعه متن یا کلمه دیگری است (پائین متن والد)   <sub>
متن یا کلمه ای که زیر مجموعه متن یا کلمه دیگری است (بالای متن والد)   <sup>
تعریف یک قالب (توسط کلاینت قابل مشاهده نیست)   <template>
تعریف یک عنصر برای نمایش زمان datetime <time>
تعریف یک متن زیرخط دار   <u>
تعریف متنی که نام یک متغیر را نشان میدهد   <var>
تعریف یک شکست خط احتمالی   <wbr>

توضیح تگ meterr : اگر مقدار از low کمتر باشد و optimum از high بیشتر باشد (رنگ قرمز میشود). اگر مقدار از high بیشتر باشد و optimum از low کمترباشد (رنگ قرمز میشود). بقیه مقادیر با رنگ زرد و سبز نمایش داده میشوند. موارد کاربردی : مثلاً مصرف دیسک و نمرات.

میتوان با طول و عرض و سایه به آن استایل و انیمیشن داد.

تاریخ انتشار: دوشنبه, ۲۲ ارديبهشت ۱۳۹۹، ۰۹:۴۱ ق.ظ نویسنده: محمدیان

چطور میتوانیم از دستورات خط فرمان آرگومان دریافت کنیم؟ اگر دستور زیر را اجرا کنیم چه اتفاقی می افتد؟

node app.js print

با اجرای این دستور، فایل شما اجرا میشود و هیچ اتفاق دیگری نمیفتد، اما شما میتوانید کلمه print را به صورت آرگومان دریافت کنید و تصمیم بگیرید که مثلا اگر کاربر این دستور را وارد کرد چه اتفاقی بیفتد.

چطور به آرگومان های دستور دسترسی پیدا کنیم؟ به صورت زیر:

process.argv
console.log(process.argv)

ابتدا این دستور را بررسی کنید تا ببینید که argv یک آرایه است و عضو اول آن آدرس فایل اجرایی nodejs در سیستم عامل را برمیگرداند و عضو دوم آن آدرس فایل اجرایی برنامه شما را در خود نگه میدارد. عضو سوم به بعد از کاربر قابل دریافت است. مثلا در اولین مثال: کلمه print عضو سوم آرایه argv میشود. میتوانید دستور زیر را در فایل app.js قرار دهید و این مورد را امتحان کنید.

console.log(process.argv[2])

و حالا دستور زیر را در cmd وارد کنید:

node app.js print

مورد زیر را هم با مواردی که تا کنون آموختید بررسی کنید.

node app.js print --title="your name for example"

میتوانید از آرایه argv، یک لاگ بگیرید و نتایج را مشاهده کنید.

 

حالا که موارد فوق رو متوجه شدید، یه ماژول حرفه ای بهتون معرفی میکنم که خیلی راحت تر با آرگومان ها کار کنید. ماژول yargs رو به صورت زیر در پروژه خودتون قرار بدید و اون رو فراخوانی کنید.

npm install yargs --save
const yargs = require('yargs');
بررسی کنید
console.log(yargs);
console.log(yargs.argv);

و حالا دوباره دستور زیر رو بررسی کنید

node app.js print --title="your name for example"

متوجه تفاوت ها شدید؟ 

yargs به ما آبجکت تحویل میده، آرایه دستورات ارسال شده از خط فرمان با _ در آبجکت yargs در دسترس خواهد بود مثلا:

let firstCommand = yargs._[0];
console.log(firstCommand);
  نتیجه در مثال ما => print

نکته : اگر دستور به صورت زیر وارد شود، yargs چه واکنشی به آن نشان میدهد؟

node app.js print --title "mokhtar"
علامت = وارد نشده

yargs تشخیص میدهد که print یک دستور است و title به عنوان یک ورودی متغیر ارسال شده.

 

با همین اطلاعات میتوانیم برنامه های قابل اجرا با command line بنویسیم. فقط کافیست لیست دستورات مورد نظر خودمان را تعریف کنیم و اگر کاربر دستورات مورد نظر ما را وارد کرد، عملیات خاصی را اجرا کنیم و اگر مثلا داده ای وارد نشده بود یا نوع داده وارد شده با داده مورد نظر ما تناسب نداشت، یک پیغام خطا برای کاربر ارسال کنیم.

 

پکیج yargs محدود به توابع فوق نمی شود و کتابخانه ای غنی است . با مراجعه به مستندات آن میتوانید اطلاعات مفیدی بدست بیاورید. یکی از توابع دیگر yargs تابع commands است که میتوانیم توسط آن یک دستور کامند لاین بسازیم.

yargs
  .command('get', 'make a get HTTP request', {
    url: {
      alias: 'u',
      default: 'http://yargs.js.org/'
    }
  })
  .help()
  .argv

اگر در کنسول دستور زیر را تایپ کنیم:

node index.js --help

//---------------- نتیجه ------------------
index.js [command]

Commands:
  index.js get  make a get HTTP request

Options:
  --version  Show version number                                       [boolean]
  --help     Show help                                                 [boolean]

برای آرگومانهایی هم که میخوایم دریافت کنیم، خواص مختلفی وجود داره که باعث میشه بتونیم مثل فیلد باهاشون برخورد کنیم.مثلاً:

yargs
  .command('print', 'this is my test', {
    body:{
        describe:'i am descripttion of print bode',
        demand:true,
        alias:'p'
    }
  })
  .help()
  .argv

describe : توضیحات مربوط به فیلد body هست.

demand : آیا پر کردن این فیلد برای اجرای دستور الزامی است؟

alias : میتونیم یه مخفف هم برای دستورمون در نظر بگیریم در مثال ما مثلا print-- میتونه p-- هم باشه.

تاریخ انتشار: دوشنبه, ۲۲ ارديبهشت ۱۳۹۹، ۰۹:۰۶ ق.ظ نویسنده: محمدیان

در فایل جاوااسکریپت خود، متغیر سراسری module را با دستور 

console.log(module)

بررسی نمائید. اگر دقت کنیدمی بینید که با یک آبجکت روبرو هستید و این آبجکت دارای آبجکت دیگری با نام exports است.

حالا میتوانید دستورات زیر را به شرط آشنایی با آبجکت های جاوااسکریپت به راحتی درک کنید.

module.exports.name = "Mokhtar Mohammadiyan";
module.exports = {
name : "Mokhtar Mohammadiyan"
}
var name = function(){
    return "Mokhtar Mohammadian";
}

module.exports = {
    name
}

میتوانید مثال های بیشتری در ذهن خود بسازید، مخصوصاً با استفاده از کلاس های es5 و یا typescript و یا همان آبجت خالص js.

 

درک module.exports برای من سخت بود، واسه همین چیزی که خودم فهمیدم رو با شما به اشتراک میزارم.

درک module.exports : 

module.exports یا exports یک شی خاص است که به طور پیش فرض در هر پرونده JS در برنامه Node.js گنجانده شده است. module یک متغیر است که ماژول فعلی را نشان می دهد و exports آبجکتی است که به عنوان ماژول در معرض دید برنامه قرار می گیرد. بنابراین ، هر آنچه را که به وسیله module.exports صادر یا  export کنید، به عنوان یک ماژول توسط برنامه اصلی دیده خواهد شد. امیدوارم که متوجه شده باشید.

 

موفق و پیروز باشید