با سلام. توی این پست قصد دارم به جاوااسکریپت بپردازم و در مورد شرایط و نحوه آموزش خصوصی زبان برنامه نویسی javascript براتون بگم. حتما میدونید که JS یک زبان برنامه نویسی پرکاربرد مخصوصا در برنامه نویسی وب و موبایل هست و تقریبا همه ی سایت هایی که امروزه در حال فعالیت هستن از جاوااسکریپت استفاده میکنن. ابتدا میخوام یکم در مورد جاوااسکریپت صحبت کنم و بعد شرایط و نحوه آموزش اون بصورت خصوصی رو مینویسم.
دسته: جاوااسکریپت
-
آشنایی با ماژول ها در انگولار
برنامه های انگولار ماژولار هستند و انگولار سیستم ماژولاریتی خودش رو داره که اسمش هست
NgModules
. ماژول ها کانتینرهایی هستند که بخش هایی که یکار مرتبط و نزدیک به هم میکنن رو بهم میچسبونن. ماژول ها میتونن شامل کامپوننت ها و سرویس ها و حتی ماژول های دیگه باشن و هر ماژول میتونه توسط یه ماژول دیگه اکسپورت بشه حتی.هر برنامه انگولار حداقل یدونه ماژول داره که بای دیفالت اسمش هست
AppModule
و توی فایلapp.module.ts
تعریف شده. یه برنامه کوچک ممکنه همین یدونه ماژول رو داشته باشه ولی برنامه های بزرگ ماژول های متنوعی دارن که هر کدوم کار خودشون رو میکنن.یه ماژول رو با یه دکوریتور
@NgModule()
برای کلاس تعریف می کنیم که یه آبجکت رو بعنوان ورودی میگیره.import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; @NgModule({ imports: [ BrowserModule ], providers: [ Logger ], declarations: [ AppComponent ], exports: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }
-
نحوه ی استفاده از بوت استرپ در انگولار
همونطور که انگولار یه فریمورک خوب برای جاوا اسکریپت حساب میشه، بوت استرپ ها یه فریمورک خوب و کار آمد هست که هم کار
CSS
و هم کار جاوا اسکریپت رو تا حدودی راحت کنه، ولی استفاده از ویژگی هایJQuery
در انگولار اصلا توصیه نمیشه، چون که انگولار کارایی کهJQuery
انجام میده رو به روش بهتر هندل میکنه پس ما تمام حرف هامون در رابطه با مواردCSS
در بوت استرپ هست نهjs
. همچنین برای زیبایی کارfontawesome
هم به کار خواهیم برد. برای نصب بوت استرپ وfontawesome
از دستور زیر استفاده کنید:npm install bootstrap font-awesome
اگه مراحل نصب به خوبی پیش رفتند میتونیم الان ازشون استفاده کنیم. در فایل
src/styles.css
میتونیم استایل های سراسری رو ایمپورت کنیم، چون ما به این دو تا بصورت سراسری میخایم دسترسی داشته باشیم اونها رو توی این فایل ایمپورت میکنیم:@import "~bootstrap/dist/css/bootstrap.css"; @import "~font-awesome/css/font-awesome.css";
به همین راحتی تونستیم بوت استرپ و فونت آوسام رو به پروژه انگولارمون اضافه کنیم…
ساخت طرح کلی برنامه انگولار با بوت استرپ
خب حالا میخایم یه طرح کلی برای صفحه هامون در انگولار طراحی کنیم، یک ماژول بصورت زیر ایجاد میکنیم:
ng generate module ui --module app.module
بعد میتونیم کامپوننت هایی که لازم داریم رو اضافه کنیم، فرض کنید به سه کامپوننت هدر فوتر و دربرگیرنده نیاز داریم :
ng generate component ui/layout ng generate component ui/header ng generate component ui/footer
فایل
src/app/ui/layout/layout.component.html
رو به صورت زیر ادیت کنید که دو تا کامپوننت هدر و فوتر توی اون باشه:<app-header></app-header> <div class="container"> <ng-content></ng-content> </div> <app-footer></app-footer>
و ماژولی که ساختیم رو بصورت زیر اصلاح کنید:
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { LayoutComponent } from './layout/layout.component'; import { HeaderComponent } from './header/header.component'; import { FooterComponent } from './footer/footer.component'; @NgModule({ imports: [ CommonModule ], declarations: [LayoutComponent, HeaderComponent, FooterComponent], exports: [LayoutComponent] }) export class UiModule { }
حالا میتونید فایل
src/app/app.component.html
رو اصلاح کرده و در واقع قسمت اصلی که بدنه صفحه هست رو بهش اضافه کنید.<app-layout> <div class="jumbotron"> <h1>Angular CLI v6 + Bootstrap & FontAwesome</h1> <p> In this tutorial you learn how to use Angular CLI v6 with Bootstrap and FontAwesome! </p> </div> </app-layout>
و فایل
src/app/ui/header/header.component.html
رو بصورت زیر اصلاح کنید:<nav class="navbar navbar-dark bg-dark mb-5"> <a class="navbar-brand" href="/">Angular & Bootstrap</a> <div class="navbar-expand mr-auto"> <div class="navbar-nav"> <a class="nav-item nav-link active" href="#">Home</a> <a class="nav-item nav-link" href="#">About</a> <a class="nav-item nav-link" href="#">Contact</a> </div> </div> <div class="navbar-expand ml-auto navbar-nav"> <div class="navbar-nav"> <a class="nav-item nav-link" href="https://github.com/tuytoosh" target="_blank"> <i class="fa fa-github"></i> </a> <a class="nav-item nav-link" href="https://twitter.com/tuytoosh" target="_blank"> <i class="fa fa-twitter"></i> </a> </div> </div> </nav>
و نهایتا
src/app/ui/header/header.component.html
رو بصورت زیر اصلاح کنید:<nav class="navbar navbar-dark bg-dark mt-5 fixed-bottom"> <div class="navbar-expand m-auto navbar-text"> Made with <i class="fa fa-heart"></i> by <a href="http://haamid.ir">Hamid</a> </div> </nav>
حالا اگه پروژه رو سرو کنید باید یچیزی مثل اسکرین شات بالا رو ببینید، موفق باشید
-
ارسال داده از کامپوننت به قالب در انگولار – Data Binding
در ادامه پست های انگولار، امروز میخوام به انتقال مقادیر از logic به view بپردازم. یعنی میخام یه داده رو از کامپوننت به قالب بفرستم. برای این کار از دو روش
string interpolation
وproperty binding
میتونیم استفاده کنیم که جداگانه در ادامه به اونها خواهم پرداخت.ارسال داده از
class
بهtemplate
با استفاده ازstring interpolation
در انگولار به این صورت هست که شما مقدارproperty
موجود در کلاس رو میتونید بصورت رشته درون قالب نمایش بدید. مثلا اگه کلاس کامپوننت بصورت زیر تعریف شده باشه وmy_name
یک پراپرتی از این کامپوننت باشه،import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { my_name = 'Hamid Haghdoost'; }
شما میتونید مثلا بصورت زیر به این پراپرتی درون قالب دسترسی داشته باشید
<p>my name is {{ my_name }}</p>
که اگه
ng serve
کنید خروجی بصورت زیر خواهد بودmy name is Hamid Haghdoost
property binding
در انگولارstring interpolation
در واقع نوع خاصی ازproperty binding
است که در آن نوع پراپرتیstring
است. یعنی شما نمیتونید مثلا مقدارboolean
رو از این طریق به قالب ارسال کنید. برای این کار ازproperty binding
استفاده میکنیم. یعنی میتونیم مقدار پراپرتی رو بهattribute
هایhtml
و… بچسبونیم.برای اینکه بیشتر متوجه موضوع بشید با مثال پیش میریم.
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { isDisabled: boolean = false; }
در کامپوننت بالا یک پراپرتی از نوع بولین تعریف شده که در قالب به
html
بایند شده است<button [disabled]="isDisabled">Try Me</button>
توجه کنید که برای بایند کردن مقدار بولین نمیتونستیم بصورت زیر عمل کنیم و حتما باید از روش دوم استفاده کنیم
<button disabled="{{ isDisabled }}">Try Me</button>
امیدوارم حرفام به دردتون خورده باشه 🙂
-
کامپوننت ها در انگولار و نحوه ساخت آنها
کامپوننت ها در انگولار در واقع یک کلاس تایپ اسکریپت هستند که توسط اون ها ما میتونیم منطق برنامه رو کنترل کنیم. بخش های مختلف یک برنامه انگولار از کامپوننت تشکیل میشه و شما میتونید هر بخش رو در کامپوننت های جدا قرار بدید، مثلا میتونید در ساده ترین حالت هدر، فوتر و یا سایدبار رو در کامپوننت خودش بذارید.
کامپوننت ها بخش های تقریبا مستقل از هم هستند و میتونن با ارسال داده به همدیگه با هم تعامل داشته باشن که حالا در پست های بعدی در مورد نحوه این تعامل بیشتر صحبت خواهیم کرد. برنامه انگولار شما بصورت پیشفرض دارای یک کامپوننت به نام
app
هست که در ابتدای ران شدن برنامه این کامپوننت لود میشه که البته میتونید به انگولار بگید که کامپوننت دیگه ای رو لود کنه. با قرار دادن انتخابگر کامپوننت های دیگه توی این کامپوننت کامپوننت های دیگه توی این کامپوننت لود میشن.ساخت کامپوننت در angular
برای ساخت اولین کامپوننت خودتون میتونید از cli کمک بگیرید و دستور زیر رو اجرا کنید.
ng generate component MyFirstComponent
با اجرای این دستور در دایرکتوری
src/app
یک دایرکتوری جدید با اسمmy-first-component
مربوط به این کامپوننت ساخته میشه که چهار تا فایل داخل اون وجود داره.my-first-component.component.css
: استایل های مربوط به کامپوننت درون این فایل نوشته میشه.my-first-component.component.html
: قالبhtml
کامپوننت هستmy-first-component.component.spec.ts
: فایل مربوط به تست برنامه هست که در ادامه بحث هامون بهش خواهیم پرداخت بیشترmy-first-component.component.ts
: فایل اصلی کامپوننت که درون اون کلاس تایپ اسکریپت مربوطه نوشته میشه
محتوای کلاس کامپوننت رو در زیر میبینید
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-my-first-component', templateUrl: './my-first-component.component.html', styleUrls: ['./my-first-component.component.css'] }) export class MyFirstComponentComponent implements OnInit { constructor() { } ngOnInit() { } }
خط ۳ تا ۷ مربوط یه
decorator
کلاس هست که اولا میگه این کلاس یک کلاس معمولی نیست و یک کامپوننته و ثانیا مشخص میکنه که تگ انتخاب کننده، آدرس قالب و استایل این کامپوننت چی هست. کلاس های تایپ اسکریپت مثل همه زبون ها میتوننproperty
وmethod
های خودشونو داشته باشن. مثلا شما با تعریف یک پراپرتی در کلاس میتونید توی قالب که همون فایلhtml
بود بهش دسترسی داشته باشید.مثلا خط زیر رو توی کلاس بنویسید
test = 'my test is here';
و محتوای فایل
my-first-component.component.html
رو پاک کنید و این رو بنویسید{{ test }}
. میبینید که این مقدار درون قالب نمایش داده میشه. البته به شرطی که سلکتور اونو توی فایلapp.component.html
قرار داده باشید.<app-my-first-component></app-my-first-component>
همونطور که میبینید ما تونستیم یک داده رو از منطق برنامه به قالب برنامه ارسال کنیم. روش هایی برای ارسال و دریافت داده در کامپوننت وجود داره که در بخش های بعدی به اونها خواهیم پرداخت.
موفق باشید 🙂
-
اولین برنامه با انگولار
در نوشته قبلی در مورد انگولار و خوبی و بدی هاش صحبت کردیم. الان میخایم در واقع محیط برنامه نویسی انگولار رو برای این فریمورک آماده کنیم و شروع کنیم کار با این فریمورک رو.
برای شروع کار با انگولار باید از ابزار خط فرمان انگولار استفاده کنید و برای نصب اون باید node روی سیستمتون نصب باشه. برای نصب node آخرین ورژن نود رو از لینک زیر دانلود کنید و نصب کنید : https://nodejs.org/en/download/
شما با ابزار خط فرمان انگولار میتونید برنامه های انگولار رو توی محیط خط فرمان تولید کنید و مدیریت و بیلد کنید، کد زیر رو توی cmd یا terminal یا هر چیز دیگه ای تایپ کنید تا Angular Cli نصب بشه
npm install -g @angular/cli
الان شما ابزار لازم برای شروع کار با انگولار رو دارید. برای نصب انگولار دستور زیر رو ران کنید
ng new my-app
بعد از اتمام کار دستور انگولار برای شما نصب شده و میتونید کارتون رو انجام بدید. برای اینکه مطمئن بشید cd کنید توی دایرکتوری و دستور serve رو برای سرو شدن برنامه بزنید
cd my-app ng serve --open
الان برنامه روی آدرس http://localhost:4200 در حال اجراست و میتونید با مرورگر بهش دسترسی پیدا کنید.
حالا میتونید کامپوننت های خودتون رو ایجاد کرده و کارتون رو شروع کنید، بد نیست قبل از شروع کار با انگولار یه نگاهی به سینتکس typescript بندازید.
برای شروع میتونید از ادیتور phpstorm یا webstorm استفاده کنید که یک ابزار خیلی قوی برای کار با انگولار داره…
در روزهای بعد سعی میکنم مفاهیم پایه ای انگولار رو شروع کنم
موفق باشید 🙂
-
شروع کار با فریمورک انگولار
انگولار یه فریمورک خوب جاوا اسکریپت هست که برای ساختن برنامه های تک صفحه ای سمت کاربر استفاده میشه که شما میتونید کارهای خفن رو با تعداد خط کد خیلی کم نسبت به جاوااسکریپت معمولی انجام بدید . اگه میبینید یسری سایت ها مثل یوتیوب و… دارن بدون رفرش شدن لینک های جدید رو لود میکنن و کلی کارا توی یک صفحه، احتمالا یکی از این دو تا کار رو انجام میدن : یا از یه فریم ورک SPA استفاده میکنن یا همون Single Page Application و یا خودشون کلی کد javascript زدن که این جریان رو مدیریت میکنه. البته انگولار رو توسعه دهنده های گوگل توسعه دادن و قطعا توی کارای خودشونم ازش استفاده میکنن.
چرا انگولار یاد بگیریم؟
اگه تصمیم گرفتید که انگولار کار کنید و نمیدونید که کارتون درست هست یا نه! من چند تا دلیل میگم بهتون که مصمم تر از همیشه شروع کنید و یاد بگیرید و توی این حرف هام اصلا تاکیدی روی خوب بودن انگولار ندارم.
دلیل اول این هست که فریمرک های مختلف تفاوت خیلی زیادی با همدیگه ندارن و اگه شما خیلی دو دل هستید که مثلا انگولار کار کنید یا React یا هر چیز دیگه ای، باید بگم الان نگران نیاشید، بعد از یاد گرفتن یکی از این فریمورک ها خیلی راحت میتونید از یک فریمورک سوییچ کنید روی یکی دیگه و وقت تلف کردن برای اینکه بدونید کدوم فریمورک بهتره اصلا مناسب نیست.
دلیل بعدیم که بعد از سال ها تجربه بهش رسیدم اینه که هر چیزی که ترند تره بهتره… ینی اگه حس میکنید تعداد برنامه نویس های انگولار بیشترن ینی جامعه گسترده تری دارن و احتمالا اگه مشکلی برای شما پیش بیاد قبلا برای یکی دیگه پیش اومده، سوال پرسیده و حل شده و شما میتونید از اون استفاده کنید برای حل مشکلتون.
دلیل سوم اینه که انگولار چارچوب مشخصی داره که توسعه دهنده رو مجاب میکنه که تحت این چارچوب کار کنه و همین در آینده میتونه مفید باشه. شما وقتی از وسط کار به یه تیم اضافه میشید میدونید که تقریبا چه خبره و راحت میتونید مچ بشید با گروه…
و انگولار کلی چیزا رو بصورت پیشفرض داره و خیلی راحت میتونید ازشون استفاده کنید در حالی که تو فریمورک های دیگه باید اونارو پیاده کنید – البته این خوبی حساب نمیشه ولی برای کسی که داره تازه شروع میکنه این بهتره و شما خیلی سریع تر میتونید نسخه اولیه یه سیستم رو بالا بیارید باهاش نسبت به سایر فریمورک ها.
منابع یادگیری انگولار
هر چند گوگل خودش میتونه منبع خوبی باشه ولی من به عنوان کسی که قبلا این راه رو رفتم منابع زیر رو پیشنهاد میکنم بهتون :
- سایت رسمی انگولار https://angular.io/docs
- کلی ویدئو توی یوتیوب 🙂
- ویدئوی سایت Udemy در این لینک
- ویدئو های سایت git.ir که میتونید بصورت رایگان دانلود کنید