JavaScript'i tarayıcı olmadan mı çalıştırıyorsunuz?


129

Tarayıcı olmadan Javascript programlamaya bakıyorum. Komut dosyalarını Linux veya Mac OS X komut satırından çalıştırmak istiyorum, tıpkı diğer herhangi bir komut dosyası dilini çalıştırdığımız gibi (ruby, php, perl, python ...)

$ javascript my_javascript_code.js

Örümcek maymunu (Mozilla) ve v8'i (Google) inceledim, ancak bunların her ikisi de gömülü görünüyor.

Komut satırından çalıştırılacak komut dosyası dili olarak Javascript kullanan var mı?

Neden bu konuya baktığımı merak eden varsa, node.js ile uğraşıyorum . Node.js'nin performansı, javascript'in büyük verileri işlemek için uygun bir betik dili olup olmadığını merak etmeme neden oluyor.


node.js bir javascript komut satırı yorumlayıcısı değil mi?
Nathan

5
node.js bir yorumlayıcı değildir, Google'ın V8 javascript uygulaması üzerine inşa edilmiş bir eşzamansız çerçevedir. V8'in javascript intererpter'ının bir düğüm kurulumuna dahil olduğuna inanıyorum

1
V8'in CLI tercümanı popüler hale gelirse, bu gerçekten iyi bir öğretim aracı olabilir. JavaScript ile programlamayı öğrenmenin biraz eğlenceli olabileceğini düşünüyorum. Lua dürüst olmak gerekirse en iyi seçim olabilir (JS'nin "sınıfları" herkesin kafasını karıştırır), ancak JS'nin web'e atılma yeteneği tamircilere hitap eder. Bu V8 CLI'yi kendim deneyebilirim.
jasonmp85

@ jasonmp85 yeni bir anahtar sözcükle işlevleri yürütmek, nesne örnekleri oluşturur. Bir örnekte bir özelliğe / yönteme başvurduğunuzda, nesnenin kendisi buna sahip değilse, yapıcı işlevinin prototip özelliği kontrol edilir. Bunu genel yöntemler için kullanın ve özel yöntemleri / props'ları etkili bir şekilde elde etmek için yapıcı işlevine yerel değişkenleri tanımlayın (bunlar teknik olarak kapatılan ref' değişkenleridir). Son.
Erik Reppen

Yanıtlar:


46

Konuyla ilgili bu soruyu buldum , ancak doğrudan bağlantılar istiyorsanız, işte bunlar:

  • Rhino'yu diğerlerinin de belirttiği gibi kurabilirsiniz. Bu gönderi , onu kurup çalıştırmanın kolay bir yolunu ve onu kolayca çağırmak için bir komutun nasıl değiştirileceğini gösterir.
  • Mac kullanıyorsanız, WebKit'in JavaScript motorunu çalıştıran JavaScriptCore'u kullanabilirsiniz. İşte bunun üzerine bir yazı
  • Chome / Google'ın V8 yorumlayıcısını da kullanabilirsiniz. İşte talimatlar
  • OSA olarak JavaScript ilginçtir çünkü (AFAIK), komut dosyası yazılabilir OS X uygulamalarıyla AppleScript'teymişsiniz gibi (korkunç sözdizimi olmadan) etkileşime girmenize izin verir.

Node.js'nin bir kabukla gelmemesine şaşırdım, ancak sanırım daha çok epoll / seçici tabanlı geri arama / olay odaklı web sunucusuna benziyor, bu yüzden belki de tam JS özellik setine ihtiyacı yok, ama ben İç işleyişine pek aşina değilim.

Node.js ile ilgilendiğinizi göründüğünden ve V8'e dayandığından, JavaScript programlamanız için tutarlı bir temele sahip olabilmeniz için bir V8 ortamı kurma konusundaki talimatları izlemeniz en iyisi olabilir (umarım JSC ve V8 çoğunlukla aynı, ama emin değilim).


Chrome / Google V8 yorumlayıcı bağlantısı tam olarak aradığım şeydi! Teşekkür ederim!
Daniel

2
0.1.101'deki NodeJS, ortama CLI erişimi sağlayan bir düğüm repl'ine sahiptir. JS'yi test etmek / öğrenmek için harika.
CyberFonic

Ubuntu üzerinde nodejs v0.10.25 ile nodejsterminalde yazmak REPL'e erişim sağlar.
Иван Бишевац

Varsa, yukarıdakilerden hangisi HTML DOM'u içerir?
Old Geezer

57

Ana Cevap

Evet, sorunuzu yanıtlamak için JavaScript'i tarayıcı olmadan komut satırından "normal" bir kodlama dili olarak kullanmak mümkündür. Başkaları henüz bahsetmediğinden, bahsetmeye değer olduğunu görüyorum:

Debian tabanlı sistemlerde (ve buna en azından Ubuntu, Linux Mint ve aptosid / sidux dahildir), Rhino ve daha önce bahsedilen diğerlerini yükleme seçeneklerinin yanı sıra başka seçenekleriniz de vardır:

  • libmozjs-24-binMozilla'nın Spidermonkey motorunu komut satırına basit bir şekilde sağlayacak olan paketi kurun ve js24aynı zamanda etkileşimli bir tercüman olarak da kullanılabilir. ( 24İsimdeki, Firefox'un 24 sürümüne karşılık geldiği anlamına gelir).

  • libv8-devSize Google'ın V8 motorunu sağlayacak olan paketi yükleyin . Örneklerinden biri olarak, /usr/share/doc/libv8-dev/examples/shell.cc.gzçok basit bir şekilde açıp derleyebileceğiniz dosyaya sahiptir (örn., g++ -Os shell.cc -o shell -lv8).

  • Paketini kurmak nodejsve çalıştırılabilir olarak mevcut olacaktır nodejsve bir şekilde bir alternatif temin etmek üzere (Debian anlamda) jsyürütülebilir. JIT derlemesi, V8'in izniyle sağlanmıştır.

  • Paketi kurun libjavascriptcoregtk-3.0-binve WebKit'in JavaScriptCore yorumlayıcısını ( jsc) komut satırından normal bir yorumlayıcı olarak kullanın. Ve bu, bir Mac'e erişmenize gerek kalmaz. Birçok platformda (örneğin, x86 ve x86_64), bu yorumlayıcı bir JIT derleyicisiyle birlikte gelir.

Yani, neredeyse hiç derleme olmadan, emrinizde üç tane ağır JavaScript motoruna sahip olacaksınız.

ek

Bir şeyler yükledikten sonra, #!/usr/bin/jsshebang satırı ile dosyalar oluşturabilirsiniz ve her şey işe yarayacaktır:

$ 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!
$

23

Node.js'yi bir iMac'e kurdum ve

node somefile.js

bash'da çalışacak.


AMAN TANRIM! @ aw04 Absolutely
theapache64

benim nodejs somefile.jsiçin nodejs paketini kurduğumdan beri
user2490003

bu, 2019'da doğru cevaptır. Node.JS her zaman en yaygın ve en basit yöntemdir.
wilsonhobbs

10

Linux ve Mac hakkında soru sorduğunuzu biliyorum; Windows ile ilgilenen diğer kişilerin sorunuzu bulması olasılığına karşı Windows için cevabı sağlayacağım.

Windows, komut satırından kullanılabilen bir Javascript motoru içerir.

Windows 98'den beri Windows'un tüm sürümlerinde " Windows Komut Dosyası Ana Bilgisayarı " adı verilen bir şey bulunur . Bu, komut dosyası "motorlarını" desteklemenin Windows standardı bir yoludur. WSH, ilk sürümden bu yana Microsoft'un Javascript sürümü olan JScript'i desteklemektedir. Diğer şeylerin yanı sıra, bu, bir Windows komut satırından herhangi bir * .js dosyasının adını çağırabileceğiniz ve JScript motorunda çalışacağı anlamına gelir. (wscript.exe veya cscript.exe aracılığıyla)

Şu soruyu görebilirsiniz: cscript.exe'den daha yüksek performanslı IE9 Javascript motorunu nasıl çalıştıracağınızı öğrenmek için IE9'un Javascript motoru (kod adı "Chakra") için ProgId veya CLSID nedir .


8

Kimse bahsetmediği için: Java 1.6'dan beri Java JDK ayrıca bir JavaScript komut satırı ve REPL ile birlikte gelir.

Rhino'ya dayanmaktadır: https://developer.mozilla.org/en/docs/Rhino

Java 1.6 ve 1.7'de komut çağrılır jrunscript( jrunscript.exeWindows'ta) ve JDK'nin bin klasöründe bulunabilir.

Java 1.8'den başlayarak, paketlenmiş yeni bir JavaScript uygulaması (Nashorn: https://blogs.oracle.com/nashorn/ )

Yani Java 1.8'de komut denir jjs( jjs.exeWindows'ta)


6

FWIW, node.js bir kabukla birlikte gelir, şunu yazmayı deneyin:

node-repl

eylemde görmek için node.js'yi kurduğunuzda. Güzel çalışması için rlwrap yüklemek oldukça standarttır.


NodeJS ile çalışan hızlı programları elde etmede hem node-repl hem de hash-bang kullanmanın çok iyi olduğunu buluyorum. Hızlı ve kullanımı kolaydır.
CyberFonic

3

Rhino'yu kontrol etmek isteyebilirsiniz .

Rhino Kabuğu, JavaScript komut dosyalarını toplu modda çalıştırmanın bir yolunu sağlar:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]

3

Bunun eski olduğunu biliyorum ama Zombie.js'yi de denemelisiniz . Son derece hızlı ve test için ideal olan başsız bir tarayıcı!


3

Komut satırından Ubuntu 12.10 ve js kullanıyorum

Java yüklememde mevcut:

el@apollo:~/foo$ java -version
java version "1.6.0_27"
el@apollo:~/foo$ which js
/usr/bin/js

Bazı örnekler:

el@apollo:~/foo$ js
> 5
5

> console.log("hello");
hello
undefined

> var f = function(){ console.log("derp"); };
undefined
> f();
derp

> var mybool = new Boolean();
undefined
> mybool
{}
> mybool == true
false
> mybool == false
true

> var myobj = {};
undefined
> myobj.skipper = "on my mark, engage!"
'on my mark, engage!'
> myobj.skipper.split(" ");
[ 'on',
  'my',
  'mark,',
  'engage!' ]

Gökyüzü sınırdır, o zaman yolunuza devam edin.



2

Bu gerçekten şık açık kaynak ECMAScript uyumlu JS Motorunu tamamen duktape adlı C ile yazılmış buldum

Duktape, taşınabilirlik ve kompakt ayak izine odaklanan, yerleştirilebilir bir Javascript motorudur.

İyi şanslar!


1

AppleScript'e alternatif olarak JavaScript sağlayan bir uzantı olan OSA olarak JavaScript var . Bunu yaklaşık 10 yıl önce kullanıyorum, hala mevcut işletim sistemi sürümleriyle çalışıp çalışmadığını bilmiyorum


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.