آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

62
ﺳﯿﺪ ﮐﺎوه اﺣﻤﺪی اﺑﻬﺮی آﯾﺎ ﻫﻨﻮز ﺑﻪ ﭼﺎرﭼﻮبﻫﺎی ﺟﺎوااﺳﮑﺮﯾﭙﺖ ﻧﯿﺎز دارﯾﻢ؟

Upload: web-standards-school

Post on 23-Jan-2017

174 views

Category:

Education


6 download

TRANSCRIPT

Page 1: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

سید کاوه احمدی ابهری آیا هنوز به چارچوب های جاوااسکریپت نیاز داریم؟

Page 2: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

:پروژهاز سوال های اول یک

Page 3: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o کیفیت کد oسرعت توسعه oسرعت اجرا o نوظهورمفاهیم

ی ب ها

چارچوJS

Page 4: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 5: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

کسی انتظار زیادی از وب سایت ها :نداشت

HTML

بظهور و

Page 6: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

:رشد اینترنت

کسب و کارها عالقه بیشتری به نحوه ی به تصویر کشیده

شدن خود در فضای مجازی پیدا کردند

پشتیبانی مرورگرها JSو CSSاز

افزایش یافت

پیاده سازی های front-end

پیچیده تری را شاهد بودیم

Page 7: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Web Platform =

HTML + CSS +

JavaScript

Page 8: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 9: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

oناسازگاری بین مرورگرها oهر روز مفاهیم جدید

Page 10: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

http://www.tutorialspoint.com/html/html_layer_tag.htm

<layer id="layer1" top="250" left="50" width="200" height="200" bgcolor="red"> <H1>Layer 1</H1> <P>Lots of content for this layer.</P> <P>More Content for layer 1.</P> </layer>

Page 11: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug

Page 12: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

http://en.wikipedia.org/wiki/DOM_events#Internet_Explorer-specific_model

Page 14: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx

var xmlHttp = null; if (window.XMLHttpRequest) { // If IE7, Mozilla, Safari, and so on: Use native object. xmlHttp = new XMLHttpRequest(); } else { if (window.ActiveXObject) { // ...otherwise, use the ActiveX control for IE5.x and IE6. xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0'); } }

Page 15: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

SEO AJAX RWD etc.

Page 16: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Snippet, GIST, etc.

JavaScript Libraries

پیاده سازی برخی کارکردهای اولیه

cross-browserبا قابلیت استفاده مجدد و به شکل

Page 17: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 18: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

رهایی از پیچیدگی های DOM برای انجام عملیات

متداول

پنهان کردن ناسازگاری های مرورگرها از چشم توسعه

دهندگان سرعت توسعه باالتر

UIهای کم هزینه تر AJAX

Page 19: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

افزایش ترافیک وب سایت ها

crowd sourcing

Client-side

Binding

Page 20: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Model-driven Development(MDD)

Event-driven Development

Page 21: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Single Page Applications World-Class Web UX

Page 22: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

JavaScript Frameworks

مرورگرها حتی در مورد مفاهیم پایه نیز

با هم توافق ندارند

پلت فرم وب برای رفع نیازهای مطرح شده توسعه داده نشده

استکدهای

جاوااسکریپت نوشته شده عمدتا نامرتب

!بودند

Page 23: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Snippet, GIST, etc.

JavaScript Libraries

JavaScript Frameworks

Page 24: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 25: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Martin Fowler

http://martinfowler.com/bliki/InversionOfControl.html

Page 26: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

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

.بازمی گرداندهر فراخوانی کاری را انجام می دهد و کنترل را به کاربر

!کنترل دست کاربر است

Page 27: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

. دهدچارچوب مشخص می کند که کاربر کدهای خود را کجا و به چه شکل باید قرار

.می کندرا فراخوانی خود کدهای کاربر زمان های مورد نظر چارچوب در

!کنترل دست چارچوب است

Page 28: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 29: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 30: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 31: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

مشکالت استفاده از چارچوب ها

Page 32: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

oمی کنیم؟الیه های انتزاعی ایجاد چرا : سوال

oتا بتوان بدون درگیر شدن با پیچیدگی های یک چیز، از آن استفاده کرد.

o جاوااسکریپت الیه های انتزاعی روی پلتفرم وب هستندچارچوب های!

oDirective ها درAngularJS

oVirtual DOM درReact

Page 33: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o انتزاع ها نشتی دارنداما !

o می دهدشما را در معرض پیاده سازی زمینه ی خود قرار.

Page 34: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

پیمایش سطری یا ستونی یک آرایه دو بعدی

می تواند کارایی متفاوتی .داشته باشد

اجرای دو پرسجوی که خروجی SQLمتفاوت

مشابهی باز می گردانند ممکن است از نظر سرعت تفاوت های فاحشی با هم

.داشته باشند

Page 35: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 36: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

$timeout(function() { $scope.status.isSearching = false; $scope.status.searchResults = ...

setTimeout(function() { $scope.status.isSearching = false; $scope.status.searchResults = ... $scope.$digest();

http://blog.500tech.com/is-reactjs-fast/

Page 37: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

مشکالت استفاده از چارچوب ها

Page 38: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 40: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 41: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 42: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 43: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 44: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

مشکالت استفاده از چارچوب ها

Page 45: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 46: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 47: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

به شکاندن بخش های یکپارچه و بزرگ کد

در اجزای متعامد که می توانند در هر ترکیبی

. گیرنداستفاده قرار کنار یکدیگر مورد

Page 48: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Web Components

Page 49: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

.اضافه شده اند DOMو مشخصات HTMLبه W3Cمجموعه ای از ویژگی ها که توسط

به ما امکان می دهد ویجت ها یا کامپوننت های با قابلیت استفاده مجدد در برنامه های .وب ایجاد کنیم

. را به وب بیاوریم) CBSE(می توانیم با آن مهندسی کامپیوتر مبتنی بر کامپوننت

HTMLرا برای المان های -و در عین حال بر هم کنش -برای ما امکان محصورسازی .امکان پذیر می سازند

Page 50: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

http://webcomponents.org/

Page 51: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

JavaScript Frameworks

Polyfill Web Components

Page 52: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o اضافه کردن کارکردهای خاصی که در مرورگرهای مدرن دیده می شود به

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

oبخشی از پلتفرم وب نیستند و محدود به جاوااسکریپت نمی شوند.

o کنترل را در دست نمی گیرند به عبارت دیگر چارچوب هایی نیستند که روش های

.خود برای توسعه روی وب را پیش بگیرند

Page 53: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

var fruits = { banana: "yellow", strawberry: "red", pumpkin: "orange", apple: "red" }; var isRedFruit = function (name) { return this[name] === "red"; }; ["pumpkin", "strawberry", "apple", "banana", "strawberry"].filter(isRedFruit, fruits); // returns ["strawberry", "apple", "strawberry"]

ES5

Page 54: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

if (typeof Array.prototype.filter !== "function") { Array.prototype.filter = function (fn, thisp) { if (this === null) throw new TypeError; if (typeof fn !== "function") throw new TypeError; var result = []; for (var i = 0; i < this.length; i++) { if (i in this) { var val = this[i]; if (fn.call(thisp, val, i, this)) { result.push(val); } } } return result; }; };

Page 55: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟
Page 56: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

Polyfill VS Shim

Page 57: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o تعریف قطعه هایHTML می توانند توسط جاوااسکریپت بـه یـک سـند اضـافه که .شوند

o می توانیم محتوایی را نگهداری کنیم که زمان بارگـذاری صـفحه رنـدر نمی شـود امـا .می تواند بعد از بارگذاری صفحه توسط جاوااسکریپت از آن نمونه سازی شود

o اینکه استفاده مجدد از قطعه های کدHTML.

o کالینتمدیریت المان های درون صفحه را به فراخور نیاز کاربر در سمت.

Page 58: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o سندهای روشی برای الحاق و استفاده مجدد ازHTML در سندهایHTML استدیگر .

o می توان برای آنpolyfill نوشت.

o تنها اسناد نهHTML بلکهCSS وJS نیز می توانیم به یـک سـند را .وارد کنیم

o پـس . می شونداجرا پس از وارد شدن محتوا به صفحه اسکریپت ها .و نحوه ی اجرای اسکریپت ها قابل ردیابی استمحل

Page 59: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o ساماندهی کدها و نگهداری برایHTML، CSS وJS های مـرتبط بـه

.استهم در یکجا مناسب

oبه این روش می توان چسبندگی بین اجزای مختلف را کاهش داد.

Page 60: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o تگ های خود را ایجاد کنیددیگر می توانید.

o شما همیشه می توانستید تگ های خود را داشته باشید

o اما با استفاده ازCustom Elements می توان توابـعCallback

.متفاوتی را به المان تعریف شده منسوب کرد

o برای آن تعریف نمودو توابع دیگری را یا خصوصیات.

Page 61: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟

o المان هـای زیردرخت از امکان می دهد یک به مرورگرDOM بـه یـک را

.سند رندر شده که روی صفحه در حال نمایش است تزریق کند

o بدون اثرگذاری روی درختDOM سند اصلی.

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

Page 62: آیا هنوز به چارچوبهای جاوااسکریپت نیاز داریم؟