به نام خدا

آموزش JQuery , JavaScript , Ajax  (برنامه نویسی سمت کلاینت)

اردیبهشت 98 - رسول پاشایی

اهمیت یادگیری تکنولوژی های سمت کاربر چیست؟

تکامل (سریعتر) تکنولوژی های سمت کاربر

حمل پذیری بالا

هزینه تولید کمتر

تعامل بالا

“Any application that can be written in JavaScript, will eventually be written in JavaScript.”
 — Jeff Atwood 2007, Author, Entrepreneur, Cofounder of StackOverflow

Atwood’s Law

برگی از تاریخ

علی

  • سال 78 از دانشگاه فارق التحصیل شد

  • برنامه دسکتاپ با C

  • برای ورود به بازار وب، PHP را یاد گرفت

  • کمی هم JavaScript یادگرفت برای اعتبار سنجی فرم ها و پویا سازی و ...

  • یادگیری Java و Object-C  برای نوشتن برنامه های موبایلی

نازنین

  • دوسال قبل فارق التحصیل شد

  • یک وب اپلیکشن  متوسط با معماری MVC انجام داد

  • برای Android  و iOS برنامه موبایلی نوشت

  • برای Windows و Linux و OSX برنامه دسکتاپی نوشت

  • در حال نوشن برنامه های Serverless هست

مخاطبین دوره

  • برنامه نویسان وبی که  تصمیم دارند قابلیت تعامل با کاربر را در برنامه های خود افزایش دهند
  • برنامه نویسان وبی که  تصمیم دارند سرعت اجرا و کارایی برنامه های خود را افزایش دهند
  • طراحان سایت
  • برنامه نویسان دسکتاپ یا موبایل که تمایل دارند JavaScript  را به عنوان زبان برنامه نویسی انتخاب کنند
  • برنامه نویسانی که قصد یادگیری فریمورک هایی نظیر Angular یا  React را دارند

پیش نیاز های دوره

  • Programming Basics
    • Function
    • Variables
    • Control Flow
    • OOP
      • Class
      • Object
      • Inheritance
      • ...
  • HTML
  • CSS
    • Css Selector

JavaScript

What is JavaScript?

Interpreted

  • High-Level
  • Dynamic
  • Weakly typed
  • Prototype based
  • Multi-paradigm 
    • Event driven
    • Functional
    • Imperative

Brandon Eich

  • 1995
  • Scheme
  • Java Syntax
  • 10 Days
  • Mocha
  • LiveScript
  • JavaScript

Influence

  • Self
    • Prototypal inheritance
    • Dynamic objects
  • Scheme
    • Lambda
    • Loose typing
  • Java
    • Syntax
    • Conventions
  • Perl
    • Regex

Scheme Sample

(let loop ((n 1))
  (if (> n 10)
      '()
      (cons n
	    (loop (+ n 1)))))

===> (1 2 3 4 5 6 7 8 9 10)

Many contrast

  • Best ideas
  • Worst Ideas
  • And a lot between

Good, Bad, Ugly 

JavaScript vs Java

JavaScript Program

ECMAScript

Platform  (Browser, Node, Electron, ... )

Run-time (V8, Spidermonkey, Chakra, ...)

JavaScript Is Everywhere

  • Chrome - V8

  • Firefox - SpiderMonkey

  • MS Edge - Chakra

Web Browser

  • Node

  • Rhino

  • Deno

Server

  • Electron

  • AppJS

  • nodewebkit

  • Bracket Shell

Desktop App

  • Cordova

  • Capacitor

  • NativeScript

  • ReactNative

Mobile App

  • MongoDB

  • PunchDB

  • NeDB

Database

  • Espruino

  • Duktape

IOT

Languages That Compile To JavaScript

  • Dart
  • TypeScript
  • Elm
  • PureScript
  • CoffeScripts
  • ClojureScript
  • Scala.js
  • Reason

What is ECMAScript?

ECMAScript Versions

Course Content

Language

  • Building Blocks
  • Dynamic Programming
  • Object Oriented Programming
  • Debugging
  • Reflection
  • Events

DOM Manipulation

  • DOM
  • Validation
  • Animation
  • Event Handling
  • Drag & Drop
  • Keyboard Events

Data Transfer

  • Ajax
  • CORS
  • Web Service
  • JSON
  • Binary File
  • JSONP

JavaScript Libraries

  • JQuery
    • Plugins
    • DOM Selection
    • DOM Manipulation
    • Event Handling
    • Ajax
  • Mustache
  • Lodash
  • Ramda
  • Leaflet

Tips

  • JavaScript Template
  • iFrame
  • Security
  • HTTP Message
  • Obfuscation
  • Minifying

یاد آوری

HTTP

Hypertext Transfer Protocol

URL

Uniform Resource Locator
  • Web Server
    • Runs in server-side
    • Dynamic/Static content
    • Full access to server resources
    • Example
      • Apache 
      • NodeJS
      • IIS
      • Tomcat
  • Web Browser
    • Runs in client
    • Render content
    • Example
      • Chrome 
      • Firefox
      • IE
      • Safari

Web Site

vs

Web Application

Request / Response

Header

Body

HTTP Request methods

Response Status Codes

  • Informational 1XX
  • Successful 2XX
  • Redirection 3XX
  • Client Error 4XX
  • Server Error 5XX

HTML

Hypertext Markup Language

Sample HTML

<!DOCTYPE html>
<html>
  <head>
    <title>This is a title</title>
  </head>
  <body>
    <p>Hello world!</p>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" id="bootstrap-css">
    <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
    <title>Login</title>
  </head>
  <body>
    <div class="container">
    <div class="row">
    <div class="span12">
      <form class="form-horizontal" action='' method="POST">
        <fieldset>
          <div id="legend">
            <legend class="">Login</legend>
          </div>
          <div class="control-group">
            <!-- Username -->
            <label class="control-label"  for="username">Username</label>
            <div class="controls">
              <input type="text" id="username" name="username" placeholder="" class="input-xlarge" required data-validation-endpoint="check-username-exists.php" >
            </div>
          </div>
          <div class="control-group">
            <!-- Password-->
            <label class="control-label" for="password">Password</label>
            <div class="controls">
              <input type="password" id="password" name="password" placeholder="" class="input-xlarge">
            </div>
          </div>
          <div class="control-group">
            <!-- Button -->
            <div class="controls">
              <button class="btn btn-success">Login</button>
            </div>
          </div>
        </fieldset>
      </form>
    </div>
  </div>
    </div>
  </body>
</html>

Minify

#page>div.logo+ul#navigation>li*5>a{Item $}
<div id="page">
    <div class="logo"></div>
    <ul id="navigation">
        <li><a href="">Item 1</a></li>
        <li><a href="">Item 2</a></li>
        <li><a href="">Item 3</a></li>
        <li><a href="">Item 4</a></li>
        <li><a href="">Item 5</a></li>
    </ul>
</div>

Caching

Why is this important?

Main Types of Client-Side Caching

  • HTTP Response Code
  • JavaScript/Ajax
  • HTML5/PWA

Getting Started!

JS

By pashaie

JS

  • 76