یونیکس - اجرای جاوااسکریپت بدون مرورگر؟


من در حال بررسی برنامهنویسی جاوااسکریپت بدون استفاده از مرورگر هستم. میخواهم اسکریپتها را از خط فرمان لینوکس یا مک او اس اکس اجرا کنم، درست مانند زمانی که هر زبان اسکریپتنویسی دیگری (روبی، پیاچپی، پرل، پایتون...) را اجرا میکنیم.

javascript my_javascript_code.js

من به اسپایدر مونکی (موزیلا) و وی۸ (گوگل) نگاه کردم، اما به نظر میرسد هر دو اینها توکار هستند.

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

اگر کسی کنجکاو است که چرا دارم به این موضوع نگاه میکنم، من در حال بررسی node.js بودهام. عملکرد node.js باعث میشود من تعجب کنم که آیا جاوااسکریپت ممکن است یک زبان اسکریپتنویسی قابل استفاده برای پردازش دادههای بزرگ باشد.

پاسخ شماره ۱

پاسخ اصلی

بله، برای پاسخ به سوال شما، امکان استفاده از جاوااسکریپت به عنوان یک زبان اسکریپت نویسی «معمولی» از خط فرمان و بدون مرورگر وجود دارد. از آنجایی که دیگران هنوز به این موضوع اشاره نکردهاند، میبینم که ارزش ذکر کردن دارد:

در سیستمهای مبتنی بر دبیان (و این شامل اوبونتو، لینوکس مینت، و aptosid/sidux، حداقل)، علاوه بر گزینههای نصب راینو و دیگران که قبلاً ذکر شدهاند، شما گزینههای دیگری نیز دارید:

  • بسته libmozjs-78-0 را نصب کنید، که موتور Spidermonkey موزیلا را در خط فرمان به صورت یک js24 ساده در اختیار شما قرار میدهد، که همچنین میتواند به عنوان یک مفسر تعاملی استفاده شود. (عدد 24 در نام به این معناست که با نسخه 24 فایرفاکس مطابقت دارد).

  • بسته libv8-dev را نصب کنید، که موتور V8 گوگل را در اختیار شما قرار میدهد. این بسته، یکی از نمونههایش، فایل /usr/share/doc/libv8-dev/examples/shell.cc.gz را دارد که میتوانید آن را استخراج و به سادگی کامپایل کنید (به عنوان مثال، g++ -Os shell.cc -o shell -lv8).

  • بسته nodejs را نصب کنید و این بسته هم به عنوان فایل اجرایی nodejs و هم به عنوان جایگزین (به معنای دبیان) برای ارائه فایل اجرایی js در دسترس خواهد بود. کامپایل JIT به عنوان یک لطف از سوی V8 فراهم شده است.

  • بسته libjavascriptcoregtk-4.0-bin را نصب کنید و از مفسر JavaScriptCore وبکیت (jsc) به عنوان یک مفسر معمولی از خط فرمان استفاده کنید. و این بدون نیاز به دسترسی به مک است. در بسیاری از پلتفرمها (مثلاً x86 و x86_64)، این مفسر با یک کامپایلر JIT ارائه خواهد شد.

بنابراین، با تقریباً بدون کامپایل، شما سه موتور بزرگ جاوااسکریپت را در اختیار خواهید داشت.

ضمیمه

پس از نصب موارد، میتوانید به سادگی فایلهایی با خط shebang #!/usr/bin/js بسازید و همه چیز به راحتی کار خواهد کرد:

cat foo.js 
#!/usr/bin/js

console.log("Hello, world!");
ls -lAF /usr/bin/js /etc/alternatives/js /usr/bin/nodejs
lrwxrwxrwx 1 root root      15 Jul 16 04:26 /etc/alternatives/js -> /usr/bin/nodejs*
lrwxrwxrwx 1 root root      20 Jul 16 04:26 /usr/bin/js -> /etc/alternatives/js*
-rwxr-xr-x 1 root root 1422004 Apr 28 20:31 /usr/bin/nodejs*
chmod a+x foo.js 
./foo.js 
Hello, world!
js ./foo.js
Hello, world!
$

نسخههای قدیمیتر:
libmozjs-24-bin، libmozjs-52، libmozjs-60، libmozjs-91، libjavascriptcoregtk-3.0-bin

پاسخ شماره ۲

من این سؤال مرتبط در مورد موضوع را پیدا کردم، اما اگر لینکهای مستقیم میخواهید، اینها هستند:

  • میتوانید Rhino را همانطور که دیگران اشاره کردهاند نصب کنید. این پست یک روش آسان برای راهاندازی آن و چگونگی ایجاد نام مستعار برای یک دستور به منظور اجرای آسان آن را نشان میدهد
  • اگر از مک استفاده میکنید، میتوانید از JavaScriptCore استفاده کنید که موتور جاوااسکریپت WebKit را فراخوانی میکند. در اینجا یک پست درباره آن است
  • شما همچنین میتوانید از مفسر V8 کروم/گوگل استفاده کنید. در اینجا دستورالعملها آمده است
  • جاوااسکریپت به عنوان OSA جالب است زیرا به شما اجازه میدهد (تا جایی که میدانم) با برنامههای OS X قابل اسکریپت نویسی طوری تعامل داشته باشید که گویی در AppleScript هستید (بدون نحو وحشتناک آن)

من تعجب میکنم که Node.js با یک شل ارائه نمیشود، اما حدس میزنم که در واقع بیشتر شبیه یک وبسرور مبتنی بر callback/event با epoll/selector است، بنابراین شاید به مجموعه کامل ویژگیهای JS نیاز نداشته باشد، اما من با کارکردهای داخلی آن زیاد آشنا نیستم.

چون به نظر میرسد که به node.js علاقهمند هستید و چون بر پایه V8 است، ممکن است بهترین کار این باشد که آن دستورالعملها برای راهاندازی یک محیط V8 را دنبال کنید تا بتوانید یک پایه ثابت برای برنامهنویسی جاوااسکریپت خود داشته باشید (امیدوارم که JSC و V8 عمدتاً مشابه باشند، اما مطمئن نیستم).

پاسخ شماره ۳

من Node.js را روی یک آیمک نصب کردهام و

node somefile.js

در بش کار خواهد کرد.

پاسخ شماره ۴

میدانم که شما درباره لینوکس و مک پرسیدهاید؛ من قصد دارم پاسخ برای ویندوز را ارائه کنم، در صورتی که دیگر افرادی که به ویندوز علاقهمند هستند، سوال شما را پیدا کنند.

ویندوز شامل یک موتور جاوااسکریپت است که میتوان از خط فرمان از آن استفاده کرد.

تمام نسخههای ویندوز، از ویندوز ۹۸ به بعد، شامل چیزی به نام «Windows Script Host» بودهاند. این یک روش استاندارد ویندوز برای پشتیبانی از «موتورهای» اسکریپت است. از زمان اولین نسخه، WSH از JScript، نسخه مایکروسافت از جاوااسکریپت، پشتیبانی میکند. از جمله موارد دیگر، این بدان معناست که از خط فرمان ویندوز میتوانید فقط با فراخوانی نام هر فایل *.js، آن را در موتور JScript اجرا کنید. (از طریق wscript.exe یا cscript.exe)

شما میتوانید این سوال را ببینید: ProgId یا CLSID موتور جاوااسکریپت IE9 (با نام رمز «Chakra») چیست تا یاد بگیرید چگونه میتوان موتور جاوااسکریپت با کارایی بالاتر IE9 را از cscript.exe فراخوانی کرد.