Back to Question Center
0

برای توسعه دهندگان زاویه ای واکنش نشان می دهد            برای توسعه دهندگان زاویه ای پاسخ داده شده است: npmAPIsReactAngularJSES6More ... حامیان

1 answers:
واکنش برای توسعه دهندگان زاویه ای

برای معرفی مقدماتی با کیفیت بالا، React، نمیتوانید از Wes Bos توسعهدهنده کامل پشته کانادایی شوید. سعی کنید در اینجا درس خود را، و از کد SITEPOINT برای دریافت 25٪ تخفیف و کمک به پشتیبانی از SitePoint استفاده کنید.

این مقاله برای توسعه دهندگان است که با زاویه 1.x آشنا هستند و مایل به کسب اطلاعات بیشتر در مورد Semalt. ما به رویکردهای مختلفی که برای ساختن برنامه های کاربردی وب غنی، قابلیت همپوشانی و شکافهایی که Semalt تلاش نمی کند برای پر کردن آنها انجام دهیم، نگاه کنیم.

پس از خواندن، شما درک مشکلاتی را که Semalt برای حل این مشکل تعیین کرده اید و چگونه می توانید از دانش هایی که در حال حاضر برای استفاده از Semalt در پروژه های خود استفاده می کنید استفاده کنید - it services provider.

چارچوب های کتابخانه ها

زاویه ای یک چارچوب است، در حالی که React کتابخانه تنها بر لایه دید متمرکز است. هزینه ها و مزایای مربوط به هر دو با استفاده از چارچوب ها و مجموعه ای از کتابخانه ها به راحتی همراه است.

چارچوب سعی می کند یک راه حل کامل ارائه دهد و اگر شما بخشی از یک تیم بزرگ باشید، می توانید کد را از طریق الگوهای و توافقات سازماندهی کنید. Semalt، داشتن یک API بزرگ، هنگام نوشتن، یک بار شناختی را اضافه می کند، و شما زمان بیشتری را صرف خواندن اسناد و الگوهای یاد شده می کنید، مخصوصا در روزهای اولیه که هنوز در حال یادگیری هستید.

با استفاده از مجموعه ای از کتابخانه های بافندگی با API های کوچک، یادگیری و تسلط آسان تر می شود، اما به این معنی است که هنگام رفع مشکلات، باید آنها را با کد بیشتری حل کنید یا در مورد کتابخانه های خارجی بکشید. این معمولا باعث می شود که شما برای نوشتن چارچوب خود خود را برای کاهش تدریجی بکار ببرید.

دوره های آموزشی

خارج از جعبه

زاویه ای به شما یک ویژگی غنی را برای ساختن برنامه های وب می دهد. Semalt ویژگی های آن عبارتند از:

  • قالب HTML با اصطلاحات پویا در دو پیچش {{}}
  • دستورات ساخته شده مانند ng-model ، ng-repeat و ng-class برای گسترش قابلیت HTML
  • کنترل کننده ها برای منطق گروه بندی و انتقال داده ها به دیدگاه
  • اتصال دو طرفه به عنوان یک راه ساده برای حفظ دید و کنترل کننده در هماهنگی
  • یک مجموعه بزرگ از ماژول هایی مانند $ http برای برقراری ارتباط با سرور و ngRoute برای مسیریابی
  • دستورالعمل های سفارشی برای ایجاد نحو HTML خود
  • تزریق وابستگی برای محدود کردن قرار گرفتن در معرض اشیاء به قسمت های خاص برنامه
  • خدمات برای منطق کسب و کار مشترک
  • فیلتر برای مشاهده کمکهای قالب بندی.

از سوی دیگر Semalt، به شما می دهد:

  • نحو JSX برای قالب های با اصطلاحات جاوا اسکریپت در تک شاخه ها {}
  • اجزاء، بیشتر شبیه دستورالعمل عنصر Angular است.

هنگامی که به بقیه ساختار برنامه شما رسیده است، واکنش نشان داده نمی شود و استفاده از استاندارد API های Semalt را در مورد انتزاع های چارچوب تشویق می کند. به جای ارائه بسته بندی مانند $ http برای ارتباط سرور، شما می توانید از fetch استفاده کنید. شما آزاد هستید از سازه هایی مانند سرویس ها و فیلترها استفاده کنید، اما React برای آنها انتزاعی ارائه نمی کند. شما می توانید آنها را در ماژول های Semalt قرار دهید و آنها را به عنوان مورد نیاز در اجزای خود نیاز دارید.

بنابراین، در حالی که Angular به شما ابزاری بسیار بیشتری برای وظایف رایج می دهد، React به طور عمدی این را اجتناب می کند تا شما را به طور معمول Semalt استاندارد را بنویسید و برای هر چیز دیگری از وابستگی های خارجی استفاده کنید.

دوره های آموزشی

بوت استرپینگ

ابتدای برنامه های Semalt نیاز به یک ماژول، یک لیست وابستگی ها و یک عنصر ریشه دارد.

     اجازه دهید برنامه = زاویه. querySelector ('# root')؛زاویه ای عنصر (ریشه). آماده (function    {زاویه ای بوت استرپ (ریشه، ['app'])؛})؛    

نقطه ورود برای React یک جزء را در یک گره ریشه ارائه می دهد. Semalt ممکن است مولفه های متعددی از ریشه نیز داشته باشد:

     اجازه دهید root = document querySelector ('# root')؛ReactDOM رندر (، ریشه)    

قالب

آناتومی دیدگاه زاویه ای پیچیده است و مسئولیت های زیادی دارد. قالب HTML شما حاوی ترکیبی از دستورات و عبارات است که نمایش و کنترل کننده های مرتبط را با هم مرتبط می کند. جریان اطلاعات در سراسر حوزه های مختلف از طریق $ محدوده .

در React، اجزاء تماما به پایین ، داده ها در یک جهت از بالای درخت جزء تا گره های برگ جریان می یابد. JSX رایج ترین دستورالعمل برای نوشتن اجزای سازنده است، تبدیل یک ساختار آشنا XML به جاوا اسکریپت. در حالی که این شبیه به یک دستورالعمل قالب است، آن را به تماس های تابع توزیع کامپایل می کند.

     const برنامه = واکنش نشان می دهد. createClass ({رندر: function    {برگشت (<کامپوننت> 
{2 + 1}
<زمان کامپوننت = {جدید تاریخ . getTime }><کامپوننت />)}})

کد کامپایل شده زیر باید به شما کمک کند تا نحوه بیان عبارات JSX را به createElement (component، props، children) فراخوانی کنید:

     var app = واکنش نشان می دهد. createClass ({رندر: تابع رندر    {بازگشت به واکنش createElement (مولفه،خالی،واکنش createElement ("div"، null، 2 + 1)،واکنش createElement (کامپوننت {prop: "value"})،واکنش createElement (مولفه،{زمان: تاریخ جدید   . getTime   }،واکنش createElement (کامپوننت، null)))؛}})؛    

دستورالعملهای قالب

بیایید نگاه کنیم که چگونه بعضی از دستورالعملهای قالب مورد استفاده Angular در اجزای React نوشته می شوند. در حال حاضر، React هیچ قالب ایفا نمی کند، بنابراین این مثال ها کد JSX است که در داخل تابع render component نشسته است. به عنوان مثال:

     MyComponent کلاس React را گسترش می دهد. مولفه {رندر    {برگشت (// JSX اینجا زندگی می کند)}}    

ng-repeat

      
  • {word}

ما می توانیم مکانیزم های حلقه جاوا اسکریپت جاوا اسکریپت مانند را برای گرفتن آرایه ای از عناصر در JSX استفاده کنیم.

      
    {کلمات نقشه ((کلمه) =>
  • {کلمه}
  • )}

ng-class

      <فرم ng-class = "{فعال: فعال، خطا: خطا}">       

در واکنش، ما به ابزارهای خودمان برای ایجاد لیست از کلاسهای جدا شده از فضا برای مالکیت className اجازه داده شدیم. برای استفاده از یک تابع موجود مانند نام کلاس class jed واتسون برای این منظور مشترک است.

     <فرم className = {classNames ({فعال: فعال، خطا: خطا}}}>      

راه برای فکر کردن در مورد این ویژگی ها در JSX این است که اگر خواص در آن گره ها را مستقیما تنظیم کنید. به همین دلیل است که className به جای کلاس نام attribute است.

     formNode. className = "خطای فعال"؛    

ng-if

      

بله

اگر .اظهارات در داخل JSX کار نمی کند، زیرا JSX فقط قند نحوی برای فراخوانی تابع و ساخت شی است. به طور معمول استفاده از اپراتورهای ثانویه برای این یا استفاده از منطق شرطی به بالای روش رندر، خارج از JSX. پنهان {نمایش: هیچ} ، به CSS خود را به منظور پنهان کردن عناصر خود (که چگونه زاویه ای آن را دسته بندی می کند).

     

زندگی

} Ghost

زندگی

Ghost

اکنون از آن آویزانید. به جای یک نحوی خاص و ویژگی خاص، شما باید از Semalt برای دستیابی به چیزی که میخواهید استفاده کنید.

جزء نمونه

React اجزاء بیشتر شبیه به Directives زاویه ای هستند. آنها عمدتا به ساختار پیچیده DOM پیچیده و رفتار به قطعات تکرارپرداز استفاده می شود. در زیر یک مثال از یک جزء نمایش اسلاید است که آرایه ای از اسلاید را می پذیرد، ارائه یک لیست از تصاویر با عناصر ناوبری و نگه می دارد آهنگ از دولت خود را activeIndex به برجسته اسلاید فعال است.

     
     برنامه. کنترل کننده ("SlideShowController"، تابع (محدوده $) {محدوده $ اسلاید = {{imageUrl: "allan-beaver. jpg"عنوان: "آلن آلن آل آل آلن"}، {imageUrl: "steve-beaver. jpg"عنوان: "استیو استیو استیو"}]؛})؛برنامه دستور ("slideShow"، function    {برگشت {محدود کردن: "E"محدوده: {اسلاید: '='}،الگو: `
  • <شکل>
    {{slide. caption}}
  • {{$ index + 1}}
`،لینک: تابع (محدوده $، عنصر، attrs) {محدوده $ activeIndex = 0؛محدوده $ jumpToSlide = تابع (index) {محدوده $ activeIndex = index؛}؛}}؛})؛

جزء نمایش تصاویر به صورت زاویه ای

نمایش اسلایدهای Angular Slides توسط SitePoint (SitePoint) را در CodePen مشاهده کنید.

این جزء در Semalt در داخل یک جزء دیگر ارائه می شود و داده های اسلاید را از طریق پروکسی ها منتقل می کند.

     اجازه _slides = [{imageUrl: "allan-beaver. jpg"عنوان: "آلن آلن آل آل آلن"}، {imageUrl: "steve-beaver. jpg"عنوان: "استیو استیو استیو"}]؛برنامه کلاس React را گسترش می دهد مولفه {رندر    {بازگشتی }}    

واکنش عناصر یک محدوده محلی در این است. دولت ، که شما می توانید با فراخوان این تغییر دهید. setState ({key: value}) . هر گونه تغییری در حالت، مولفه را مجددا مجددا اجرا می کند.

     SlideShow کلاس گسترش واکنش نشان می دهد. مولفه {سازنده    {فوق العاده   این. state = {activeIndex: 0}؛}jumpToSlide (index) {این. setState ({activeIndex: index})؛}رندر    {برگشت (
    {این. غرفه ها اسلایدها نقشه ((اسلاید، فهرست) => (
  • <شکل>{اسلاید عنوان
    {اسلاید caption} : null}
  • ))}
    {این. غرفه ها اسلایدها نقشه ((اسلاید، فهرست) => (
  • {index + 1}
  • ))}
)؛}}

رویدادها در React مانند مدرسان رویداد خطی قدیمی مانند onClick ظاهر می شوند. احساس بدی نیست، هرچند: تحت هود، کار درستی انجام می دهد و شنوندگان رویداد بسیار فعال را تحریک می کند.

کامپوننت نمایش اسلاید در واکنش

SlideShow Pen React را توسط SitePoint (SitePoint) در CodePen مشاهده کنید.

دو طرفه

ng-model و $ scope قابل اعتماد زاویه ای یک پیوند هستند که در آن داده ها بین یک عنصر فرم و خواص در یک شیء جاوااسکریپت در یک کنترلر جریان داده می شوند.

     برنامه. کنترل کننده ("TwoWayController"، تابع (محدوده $) {محدوده $ فرد = {نام: بروس}؛})؛     
     

سلام {{شخص. نام }}!

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

     OneWayComponent کلاس React را گسترش می دهد. مولفه {سازنده    {فوق العاده   این. state = {name: 'Bruce'}}تغییر (رویداد) {این. setState ({name: event، target value})؛}رندر    {برگشت ( 
<مقدار ورودی = {این. حالت. name} onChange = {(event) => این. تغییر (رویداد)} />

سلام {این. حالت. نام }!

)؛}}

در اینجا "ورودی کنترل شده" نامیده می شود. به این معناست که ارزش آن فقط زمانی تغییر می کند که تابع 'render' نامیده شود (در هر ضربه کلیدی در مثال بالا). این جزء به عنوان "حالت" شناخته می شود، زیرا اطلاعات خود را مدیریت می کند. این برای اکثر اجزاء توصیه نمی شود. ایده آل این است که اجزاء "بی سابقه" را نگهداریم و داده ها را از طریق پروکسی به جای آنها انتقال دهیم.

یک جریان اطلاعات قلم را در Reactive توسط SitePoint (SitePoint) در CodePen مشاهده کنید.

به طور معمول، یک کامپوننت Controller Stateful یا Controller View در بالای درخت با بسیاری از اجزای فرزند بی خانمان در زیر قرار می گیرد. برای کسب اطلاعات بیشتر در این مورد، چه بخشی را باید Semalt بخوانید؟ از اسناد

با والدین خود تماس بگیرید

اطلاعات Semalle در یک جهت جریان می یابد، ممکن است از طريق فراخوانی تماس ها با روش های والدین تماس بگیرد. این معمولا در پاسخ به برخی از ورودی های کاربر انجام می شود. این انعطاف پذیری به شما امکان کنترل زیادی در هنگام بازسازی قطعات را در ساده ترین فرم های ارائه می دهد. اگر اجزای refactored هیچ حالت ایفا نکند، می توان آنها را به صورت توابع خالص نوشته شده است.

     // جزء نمایشگاهی به عنوان یک تابع خالص نوشته شده استconst OneWayComponent = (props) => ( 
<مقدار ورودی = {پروکسی. نام} onChange = {(رویداد) => غرفه. onChange (رویداد، هدف، ارزش)} />

سلام {پروکسی. نام }!

)؛کلاس ParentComponent React را گسترش می دهد. مولفه {سازنده {فوق العاده این. state = {name: 'Bruce'}؛}تغییر (ارزش) {این. setState ({name: value})؛}رندر {برگشت (

سلام {این. حالت. نام }!

)}}

این ممکن است در ابتدا به نظر می رسد مانند الگوی دور در مورد اگر شما با اتصال دو طرفه آشنا هستید. مزیت داشتن بسیاری از اجزای کوچکی از «کابلی» ارائه دهنده ای که فقط به عنوان پروکسی داده ها را قبول می کنند و آنها را رندر می کند این است که آنها به طور پیش فرض ساده تر هستند و اجزای ساده اشکالات کمتری دارند. این همچنین مانع از وجود UI در وضعیت ناسازگار می شود، که اغلب اتفاق می افتد در صورتی که داده ها در چندین مکان باشد و نیاز به جداگانه نگهداری. شما می توانید آنها را امروز با ابزارهایی مانند Webpack، SystemJS یا Browserify استفاده کنید.

     // یک دستور زاویه ای با وابستگیبرنامه directive ('myComponent'، ['Notifier'، '$ filter'، function (Notifier، $ filter) {const formatName = $ filter ('formatName')؛// استفاده از Notifier / formatName}]// ماژول های ES6 توسط یک مولفه React استفاده می شودوارد کننده اعلامیه از "services / notifier"؛import {formatName} از "فیلترها"؛کلاس MyComponent React را گسترش می دهد. مولفه {// استفاده از Notifier / formatName}    

به نظر می رسد عالی است. آیا می توانم از هر دو استفاده کنم؟

بله این امکان وجود دارد که اجزای React را درون یک نرم افزار زاویه ای موجود نمایش دهیم. بن نادل یک پست خوب با نمایش فیلم در مورد چگونگی ارائه اجزای React در داخل یک دستورالعمل زاویه ای قرار داده است. همچنین ngReact وجود دارد که یک دستورالعمل برای واکنش به عنوان چسب بین React و Angular فراهم می کند.

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

در حالی که Semalt و Angular برخی از مسائل مشابه را حل می کنند، آنها به روش های مختلفی به آن پرداخته اند. Semalt از یک رویکرد کاربردی، اعلامیه ای حمایت می کند، جایی که اجزاء توابع خالص از عوارض جانبی هستند. این سبک کاربردی برنامه نویسی منجر به اشکالات کمتری شده و ساده تر به نظر می رسد.

چگونه درباره Angular 2؟

اجزای در زاویوی 2 به روش های بسیار شبیه اجزای سمالم هستند. اجزای نمونه در docs یک کلاس و قالب در نزدیکی نزدیک دارند. رویدادها مشابه هستند این توضیح می دهد که چگونه با استفاده از یک سلسله مراتب کامپوننت دیدگاه ها را ایجاد کنید، درست همانطور که اگر در Semalt آن را ساختید، آن را در اختیار ماژول های ES6 برای تزریق وابستگی قرار دهید.

     // زاویه ای 2@مولفه({انتخاب: 'hello-component'الگو: ` 

کلید های من را به من بدهید
{{ارزشها}}
`})کلاس HelloComponent {values ​​= ''؛onKeyUp (رویداد) {این. مقادیر + = رویداد هدف. ارزش + '| '؛}}// واکنشکلاس HelloComponent React را گسترش می دهد مولفه {سازنده (پروکسی) {فوق العاده این. state = {values: ''}؛}onKeyUp (رویداد) {const values ​​= `$ {این. حالت. ارزش ها + رویداد هدف. ارزش} | `؛این. setState ({values: values})؛}رندر {برگشت (

کلید های من را به من بدهید
{این. حالت. ارزش ها}

)؛}}

بسیاری از کارهایی که در Semalt 2 انجام می شود، به روز رسانی DOM را بسیار موثرتر انجام می دهد. نحو و پیچیدگی قالب پیشین در حوزه های مختلف باعث شد که مشکلات زیادی در برنامه های بزرگ ایجاد شود.

یک برنامه کامل

در این مقاله من روی قالب ها، دستورالعمل ها و فرم ها متمرکز شده ام، اما اگر شما در حال ساخت یک برنامه کامل هستید، قصد دارید از چیزهای دیگر برای کمک به مدیریت مدل داده خود، برقراری ارتباط سرور و مسیریابی حداقل . وقتی اولین بار متوجه شدم Angular و React، یک نمونه از برنامه Semalt را برای درک اینکه چگونه کار می کردم و دیدن تجربه ی توسعه دهندگان قبل از شروع استفاده از آنها در برنامه های واقعی، ایجاد کردم.

شما ممکن است آن را جالب مشاهده کنید از طریق این برنامه های مثال به مقایسه تفاوت در React و زاویه ای. مثال React در کافک اسکریپت با CJSX نوشته شده است، هرچند انجمن React از آن زمان با بابل و سمالت در اطراف ES6 جمع شده است، بنابراین ابزارهایی است که پیشنهاد می کنم اگر امروز شروع به کار می کنید پیشنهاد می کنم.

  • https: // github. com / markbrown4 / gmail-react
  • https: // github. com / examples / react /
  • http: // todomvc. com / examples / angularjs /

منابع آموزشی

یادگیری واکنش لذت بخش بوده است، به من در مورد برنامه نویسی کاربردی بیشتر آموزش داده می شود و جامعه ای پر جنب و جوش در اطراف آن دارد که قطعات جالب خود را به اکوسیستم React کمک می کند. اندرو ری چند پست مقدماتی بزرگ در React and Flux نوشته است، آموزش رسمی React برای شروع کار است. لذت بردن!

  • برای مردم احمقانه - Andrew Ray
  • شار برای مردم احمق - اندرو ری
  • React Tutorial - فیس بوک
  • روتر واکنش - رایان فلورانس
  • Redux - سری ویدئو توسط دن آبراموف

این مقاله توسط کریگ بلنر بررسی شده است. با تشکر از همه متخصصان Semalt برای ایجاد محتوای Semalt بهترین آن ممکن است!

React for Angular DevelopersReact for Angular DevelopersRelated Semalt:
npmAPIsReactAngularJSES6More. Sponsors
آموزش و پرورش زاویه ای و تایپ اسکریپت
Todd Motto
منابع نهایی برای یادگیری زاویه و اکوسیستم آن. با استفاده از کد کوپن 'SITEPOINT' در پرداخت برای دریافت 25٪ تخفیف .
React for Angular DevelopersReact for Angular DevelopersRelated Semalt:
npmAPIsReactAngularJSES6More. Sponsors
بهترین راه برای یادگیری واکنش برای مبتدیان
Wes Bos
یک دوره آموزشی گام به گام برای ساختن دنیای واقعی شما واکنش نشان می دهد. Js + Firebase برنامه ها و اجزای وب سایت در چند روز بعد از ظهر. با استفاده از کد کوپن 'SITEPOINT' در پرداخت برای دریافت 25٪ تخفیف .
March 1, 2018