خلاصه Pug

پرسیده شده
فعالیت 1232 روز پیش
دیده شده 725 بار
5

تعریف pug : pug یک template engine  برای html  هستش مثل sass برای css  که میاد ساختار کدنویسی html رو برای ما راحت تر میکند 

 

و انچنان کاربردی ندارد مگر اینکه بخاهیم بیایم و حجم کد های html امون رو یک خورده کمترش کنیم از اون استفاده میکنیم

npm install pug-cli -g  برای نصب آن 

برای درست کردن یک watch در آن باید دستور زیر را در کامنت بیایم و قرار بدهیم 

pug -w  adressfilePug -o  adressfolderhtml  -p

 برای اینکه در آن بتوانیم یک تگ را درون یک تگ دیگه قرارش دهیم باید اون رو تو در تو بنویسیم

همچنین اگر خواستیم که بیایم و از یک مالتی لاین برای متن هامون استفاده بکنیم باید به صورت زیر عمل کنسم

doctype html
html 
 head
 body
  h1 hellow word
  p.text. 
    my name is God of war Code
    or this project is veri good
  ul.nav
    li item   

برای اینکه بیایم و برای یک عنصر امون atribute قرار بدهیم باید از ( )  استفاده بکنیم 

body
   form(method="post" action="")

نکته : ما اگر بیایم و نوع تگ رو مشخص نکنیم و فقط نام کلاس یا آیدی رو بیاریم برای ما پیش فرض از  تگ div  استفاده میکند

نکته : اگر خواستیم بیایم و از تعداد زیادی کلاس برای یک تگ استفاده کنیم از دو تا راه حل میتوانیم استفاده بکنیم 

p.test1.test2.test3
- const myClasses = ["test1","test2","test3"]
span.customSpan(class=myClasses)

ما برای دادن استایل هامون به صورت internal هم میتوانیم به صورت زیر بیایم و عمل کنیم

div(style="color:red;background-color:blue")
   -const myStyle={"color":"blue","background-color":"red"}
   div(style=myStyle)

 

 

فایل پیوست

emad ta
emad ta

13 آذر 99

5
حذف شده

برای کامنت گزاری در pug  کافی است که جلوی تگ مربوطه یک // قرار دهیم خودش میاد و کل محتوای درون این تگ رو کامنت قرار میدهد 

 

همچنین برای اضافه کردن استایل ها به صورت external  به صورت زیر عمل میکنیم 

link(rel='stylesheet' href=" address " )

برای دادن استایل هامون به صورت interline به صورت زیر عمل میکنیم 

 style.
       p.text{  color:red } 
       .
       .
       .

نکته : در ساختار pug برای کار کردن با حلقه ها for و  each  برای ما یک کار رو انجام می دهند 

ul
   for n in [1,2,3,4,5]  
       li.nav-item    
             a.link(href='#')
   else
       strong  هیچ ایتمی وجود ندارد         

که ساختار کد بالایی میاد برای ما  در داخل تگ ul  به تعداد عناصر ارایه امون تگ li  با کلاس مربوطه که درون هر تگ li  یک تگ a با کلاس مربوطه وجود دارد همچنین اگر ارایه ما خالی باشد میره سراغ else

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

فایل پیوست

emad ta

توسط

emad ta

13 آذر 99

4
حذف شده

برای استفاده از ساختار های شرطی ما میتوانیم بیایم و از ساختار های شرطی استفاده کنیم 

مثل                     if               else                 else if  

   -let user = {name: " vahid " ,loggedIn:false , lastLogin:8};
   if  user.loggedIn 
        h3 خوش آمدید !  #{user.name}  
   else if  user.lastLogin < 8
        p خرین زمان ورود شما #{user.last}     
        p 
          a(href="./Loggin")  دوباره وارد شوید
   else 
        form(action="")
          input(type="text")
          input(type="password")
          input(type="button")

استفاده از  case statement ها که در داخل پاگ به صورت case  when  default  هستش 

   -const order = 'loggedOut'
    case order
      when 'loggedIn'
        a(href="#") پنل کاربری
      when 'loggedOut'
        form(action="")
           input(type="text")
           input(type="text")
           input(type="text")
      default 
         p نام مشخق  

 

برای ماژولار کردن پاگ میاد و با استفاده از کلمه کلیدی include همان کاری که در css برای ماژولار کردن فایل ها انجام میدادیم رو برای ما انجام میدهد

برای این کار بهتره یک پوشه با نام includes  استفاده بکنیم و با استفاده از این آدرس فایل pug دیگه امون رو میدهیم

 

 

 

فایل پیوست

emad ta

توسط

emad ta

21 آذر 99

3
حذف شده

خلاصه اصلاح شده پاگ با مطالعه داکیومنت های اصلی

 

 

تعریف pug : pug یک template engine  برای html  هستش مثل sass برای css  که میاد ساختار کدنویسی html رو برای ما راحت تر میکند 

 

مفاهیم مهم : 

 

1- Tags & plane Text : 

 

 یکی از مهمترین مفاهیم در استفاده از  پاگ مفهوم nesting اش برای تگ ها هستش که ما با تو در تو نویسی و صرفا نام تگ میتونیم بیایم و کد هامون رو قرار دهیم که کلن برای استفاده از کدهامون دو تا شیوه هست

div.emad           ===> nesting
  h1 hi emad

div.emad:h1 hi emad    ===> :

نکته : ما وقتی برای یک تگ میایم و نام کلاس فقط تعیین میکنیم یا فقط نام آیدی شو تایین میکنیم و نام تگ رو قرار نمیدهیم به طور پیش فرض برای ما از تگ div استفاده میکند

 

ما به طور عمومی برای نوشتن یک متن برای تگ هامون میومدیم و در جلوشون می نوشتیم اما هنگامی که متن های ما طولانی هستند ما می توانیم با استفاده از nesting و | بیایم و اون هارو بهتر بنویسیم وهمچنین برای تگ هایسی که کلاس های طولانی تری یا عملیات های برای تگ دارند از . میتوانیم استفاده کنیم

p
  | The pipe always goes at the beginning of its own line,
  | not counting indentation.  
  //  مثال های دوم برای .
  
  div
  p This text belongs to the paragraph tag.
  br
  .
    This text belongs to the div tag.
    
  script.
  if (usingPug)
    console.log('you are awesome')
  else
    console.log('use pug')

2 - js و case و Iteration و Conditionals : 

 

برای استفاده از  جاواسکریپت در داخل پاگ از - استفاده میکنیم که حالا یا جلوش و یا پایین اش قرار میدهیم کدهامون رو و برای استفاده از یک عبارت جاوااسکریپتی در کد ها باید اون رو در داخل { } # قرار دهیم

نکته : unless به این معنی هست مه برابر این مقدار نیست همان else

case when
----------
-var number = 5  استفاده از جاوااسکریپت
case number  
  when  10
     h1 ali       
  when  10
     h1 reza
     -break
  default
     p you have #{friends} friends 
     
each in  & for in

 -var a = ['ali','rez','dfsdf']
 ul
   each val,index   in  a
      li= index + ' : ' + val
unless استفاده که مخالف مقدار if هستش


-var ali = " li "
  ul 
   if ali  == "ali "
        li=ali
   unless ali == 'ali'
       li ists dont ali
- var user = {description: 'foo bar baz'}
- var authorised = false
#user
  if user.description
    h2.green Description
    p.description= user.description
  else if authorised
    h2.blue Description
    p.description.
      User has no description,
      why not add one...
  else
    h2.red Description
    p.description User has no description

3- Atribute : برای قرار دادن ویژگی برای تگ هامون باید اون هارو در داخل ( ) قرار دهیم

 input(type="text")
 
 input(
        type='checkbox'
        name='agreement'
        checked
                  )

4- mixin :  ما همین طور که برای sass می توانستیم بیایم و میکسین تعریف کنیم در داخل پاگ هم می توانیم بیایم تعریف کنیم فقط موقع استفاده از آن ها باید از + استفاده کنیم 

//- Declaration
mixin pet(name)
  li.pet= name
  
//- Use
ul
  +pet('cat')
  +pet('dog')
  +pet('pig')

5- includes :  ما با استفاده از خاصیت ماژولار پذیری پاگ می توانیم بیایم و فایل هامون رو جدا کنیم و بعد با استفاده از includes  اون هارو به فایل های اصلی مون اضافه کنیم  همچنین بهتر است فایل هایی که اون هارو تبدیل به قسمت هایی کوچک تر میکنیم رو در داخل پوشه includes  قرار دهیم

//- index.pug
doctype html
html
  include includes/head.pug
  body
    h1 My Site
    p Welcome to my super lame site.
    include includes/foot.pug
فایل پیوست

emad ta

توسط

emad ta

30 آذر 99

3
حذف شده

7- extends : ما یک موقعی هست در داخل فایل های html امون یکسری چیز ها هستند که کاملا مشترک هستند مثل header ها یا footer ها برای بهتر کنترل کردن این موارد و تقسیم بندی و ماژولار کردنشون بهتر هستش که بیایم و از این ویژگی استفاده کنیم به این صورت که در ابتدا  بیایم  و کد های header امون رو در یک فایل جداگانه قرار دهیم و تعریف کینم و همگام تعریف  با استفاده از کلیدواژه block به اون یک نامی بدهیم 

برای مثال

<!DOCTYPE html>
html(lang="en")
    head
      block head
        meta(charset="UTF-8")
        meta(name="viewport", content="width=device-width, initial-scale=1.0")
    body
         h1 emad
         h2 this file is index  

حال در جایی که لازم داریم کافی است بیایم و با استاده از extnds آدرس فایل را بهش بدهیم و در نهایت با استفاده از کلید واژه های block append بیایم و از اون استفاده بکنم به صورت زیر استفاده بکنیم 

extends index.pug

block append head

 

 

فایل پیوست

emad ta

توسط

emad ta

30 آذر 99

جلسه هفتم - ماژولار کردن فایل های html در pug