تعامل با جاوااسکریپت¶
تا به حال معماری Elm، نوع داده، دستور و اشتراک را دیدهایم. همچنین، Elm را روی سیستم نصب کردهایم.
اما وقتی نیاز به کار با جاوااسکریپت دارید، چه اتفاقی میافتد؟ شاید یک Browser API وجود داشته باشد که هنوز بسته معادل در Elm ندارد. شاید بخواهید یک ویجت جاوااسکریپت را درون برنامه خود جاسازی کنید. این فصل سه مکانیزم تعامل با جاوااسکریپت را معرفی میکند:
قبل از اینکه به این سه مکانیزم بپردازیم، باید بدانیم چگونه برنامه Elm را به جاوااسکریپت کامپایل کنیم!
یادداشت
اگر در حال ارزیابی Elm برای استفاده در محل کار هستید، توصیه میکنم اطمینان یابید که این سه مکانیزم قادر به پوشش تمام نیازهای شما باشند. میتوانید با نگاهی به این نمونهها یک مرور سریع از این فصل داشته باشید. لطفا اگر از چیزی اطمینان ندارید، در انجمن کاربری پرس و جو کنید و اگر بطور کامل اطمینان ندارید، توصیه میکنم بعدا به Elm برگردید.
کامپایل به JavaScript¶
با اجرای دستور elm make، بطور پیشفرض فایل HTML تولید میشود. بنابراین اگر بگویید:
فایلی به نام index.html تولید میشود که میتوانید آن را باز کرده و شروع به کار با آن کنید. اگر نیاز به تعامل با جاوااسکریپت داشتید، میتوانید بجای آن، فایل جاوااسکریپت تولید کنید:
با اجرای این دستور، یک فایل جاوااسکریپت تولید میشود که یک تابع ()Elm.Main.init را در دسترس قرار میدهد. بنابراین وقتی main.js را دارید، میتوانید فایل HTML را مطابق با نیاز خود سفارشیسازی کنید.
قرارگیری در HTML¶
در ادامه، یک قالب حداقلی HTML برای نمایش فایل main.js در مرورگر وب آمده است:
میخواهم توجه شما را به خطوط مهم این قالب جلب کنم:
-
قسمت
<head>- یک خط برای بارگیری فایل کامپایل شدهmain.jsداریم. این الزامی است! اگر یک ماژول به نامMainکامپایل کنید، یک تابع()Elm.Main.initدر جاوااسکریپت خواهید داشت. اگر یک ماژول به نامHomeکامپایل کنید، یک تابع()Elm.Home.initدر جاوااسکریپت خواهید داشت. -
قسمت
<body>- باید دو کار در اینجا انجام دهیم. اول، یک<div>ایجاد میکنیم که میخواهیم برنامه Elm بر آن مسلط شود. شاید این درون یک برنامه بزرگتر باشد که با چیزهای دیگر احاطه شده است؟ اشکالی ندارد! دوم، یک<script>داریم تا برنامه Elm را راهاندازی کنیم. در اینجا تابع()Elm.Main.initرا برای شروع برنامه فراخوانی میکنیم وnodeمورد نظر برای برنامه را پاس میدهیم.
اکنون که میدانیم چگونه برنامه Elm را در یک فایل HTML جاسازی کنیم، وقت آن است که به بررسی سه گزینه تعامل با جاوااسکریپت بپردازیم: پرچم، پورت و عنصر سفارشی!
یادداشت
این یک فایل عادی HTML است، بنابراین میتوانید هر چیزی که میخواهید در آن قرار دهید! بسیاری از توسعهدهندگان فایلهای CSS و JS اضافی را در <head> قرار میدهند. بنابراین، اشکالی ندارد که CSS را بهصورت دستی بنویسید یا به نوعی آن را تولید کنید. چیزی مانند <link rel="stylesheet" href="whatever-you-want.css"> را در <head> قرار دهید و به آن دسترسی پیدا کنید. (گزینههای دیگری برای تعریف CSS درون Elm وجود دارد، اما خارج از بحث ماست!)