รัน JavaScript โดยไม่มีเบราว์เซอร์?


129

ฉันกำลังมองหาการเขียนโปรแกรม Javascript โดยไม่มีเบราว์เซอร์ ฉันต้องการเรียกใช้สคริปต์จากบรรทัดคำสั่ง Linux หรือ Mac OS X เหมือนกับที่เราใช้ภาษาสคริปต์อื่น ๆ (ruby, php, perl, python ... )

$ javascript my_javascript_code.js

ฉันมองไปที่สไปเดอร์ลิง (Mozilla) และ v8 (Google) แต่ทั้งคู่ดูเหมือนจะฝังตัว

มีใครที่ใช้ Javascript เป็นภาษาสคริปต์ที่จะดำเนินการจากบรรทัดคำสั่งหรือไม่

ถ้าใครอยากรู้ว่าทำไมฉันกำลังมองนี้ฉันได้รับการ poking รอบNode.js ประสิทธิภาพของ node.js ทำให้ฉันสงสัยว่าจาวาสคริปต์อาจเป็นภาษาสคริปต์ที่ทำงานได้สำหรับการประมวลผลข้อมูลขนาดใหญ่


node.js เป็นล่ามบรรทัดคำสั่ง javascript ใช่ไหม?
นาธาน

5
node.js ไม่ได้เป็นล่าม แต่เป็นเฟรมเวิร์กแบบ async ที่สร้างจากการใช้งานจาวาสคริปต์ V8 จาก Google แม้ว่าฉันจะเชื่อว่าจาวาสคริปต์ intererpter ของ V8 รวมอยู่ในการติดตั้งโหนด

1
หากล่าม CLI ของ V8 ได้รับความนิยมอาจเป็นเครื่องมือการสอนที่ดีจริงๆ ฉันคิดว่าการเรียนรู้โปรแกรมใน JavaScript อาจเป็นเรื่องสนุก Lua อาจเป็นทางเลือกที่ดีที่สุด ("คลาส" ของ JS สร้างความสับสนให้กับทุกคน) แต่ความสามารถของ JS ที่จะถูกโยนลงบนเว็บจะดึงดูดคนจรจัด ฉันอาจลอง V8 CLI นี้ด้วยตัวเอง
jasonmp85

@ jasonmp85 ดำเนินการฟังก์ชั่นด้วยคำหลักใหม่สร้างอินสแตนซ์ของวัตถุ เมื่อคุณอ้างอิงคุณสมบัติ / เมธอดบนอินสแตนซ์ถ้าวัตถุนั้นไม่มีคุณสมบัติต้นแบบของฟังก์ชันตัวสร้างจะถูกตรวจสอบ ใช้สิ่งนี้สำหรับวิธีสาธารณะและกำหนด vars ให้กับฟังก์ชั่นคอนสตรัคเตอร์เพื่อรับวิธี / อุปกรณ์ส่วนตัวอย่างมีประสิทธิภาพ (นี่คือเทคนิคปิด vars อ้างอิง) ตอนจบ.
Erik Reppen

คำตอบ:


46

ฉันพบคำถามที่เกี่ยวข้องในหัวข้อ แต่ถ้าคุณต้องการลิงค์โดยตรงพวกเขาคือ:

  • คุณสามารถติดตั้งแรดได้เหมือนคนอื่น ๆ โพสต์นี้แสดงวิธีง่าย ๆ ในการเริ่มต้นใช้งานและวิธีตั้งชื่อแทนคำสั่งให้เรียกใช้ได้อย่างง่ายดาย
  • หากคุณใช้ Mac คุณสามารถใช้ JavaScriptCore ซึ่งเรียกใช้เครื่องมือ JavaScript ของ WebKit นี่คือโพสต์ของมัน
  • คุณสามารถใช้ล่าม V8 ของ Chome / Google ได้เช่นกัน นี่คือคำแนะนำ
  • JavaScript ในขณะที่ OSA นั้นน่าสนใจเพราะมันช่วยให้คุณ (AFAIK) โต้ตอบกับแอพ OS X แบบสคริปต์ได้ราวกับว่าคุณอยู่ใน AppleScript (โดยไม่มีไวยากรณ์ที่แย่มาก)

ฉันประหลาดใจที่ node.js ไม่ได้มาพร้อมกับเชลล์ แต่ฉันคิดว่ามันเป็นเหมือนเว็บเซิร์ฟเวอร์ที่เน้นการเรียกกลับ / ตัวเลือกแบบ epoll / selector-based ดังนั้นอาจจะไม่ต้องการชุดคุณสมบัติ JS เต็มรูปแบบ แต่ฉัน ไม่คุ้นเคยกับการทำงานภายในของมันมากเกินไป

เนื่องจากคุณสนใจ node.js และเนื่องจากมันใช้ V8 มันอาจเป็นการดีที่สุดที่จะทำตามคำแนะนำในการตั้งค่าสภาพแวดล้อม V8 ดังนั้นคุณสามารถมีพื้นฐานที่สอดคล้องกันสำหรับการเขียนโปรแกรมจาวาสคริปต์ของคุณ (ฉันควรหวังว่า JSC และ V8 ส่วนใหญ่ เหมือนกัน แต่ฉันไม่แน่ใจ)


ลิงก์สำหรับล่าม Chrome / Google V8 เป็นสิ่งที่ฉันกำลังมองหา! ขอบคุณ!
แดเนียล

2
NodeJS ใน 0.1.101 มี node-repl ซึ่งให้การเข้าถึง CLI แก่คุณ มันยอดเยี่ยมสำหรับการทดสอบ / การเรียนรู้ JS
CyberFonic

ด้วย nodejs v0.10.25 บน Ubuntu การพิมพ์nodejsใน terminal ให้การเข้าถึง REPL
ИванБишевац

ข้อใดต่อไปนี้ถ้ามีให้รวม DOM HTML ด้วย
แก่เก่า

57

คำตอบหลัก

ใช่เพื่อตอบคำถามของคุณเป็นไปได้ที่จะใช้ JavaScript เป็นภาษาสคริปต์ "ปกติ" จากบรรทัดคำสั่งโดยไม่มีเบราว์เซอร์ เนื่องจากคนอื่นยังไม่ได้พูดถึงมันฉันเห็นว่ามันมีค่าควรแก่การกล่าวถึง:

บนระบบที่ใช้ Debian (ซึ่งรวมถึง Ubuntu, Linux Mint และ aptosid / sidux อย่างน้อย) นอกเหนือจากตัวเลือกในการติดตั้งแรดและอื่น ๆ ที่กล่าวถึงแล้วคุณมีตัวเลือกอื่น ๆ :

  • ติดตั้งlibmozjs-24-binแพคเกจซึ่งจะให้เอนจิ้น Spidermonkey ของ Mozilla บนบรรทัดคำสั่งอย่างง่ายjs24ซึ่งสามารถใช้เป็นล่ามแบบโต้ตอบได้ ( 24ในชื่อหมายความว่ามันสอดคล้องกับ Firefox รุ่นที่ 24)

  • ติดตั้งlibv8-devแพคเกจซึ่งจะให้เครื่องมือ V8 ของ Google แก่คุณ มันมีหนึ่งในตัวอย่างของไฟล์/usr/share/doc/libv8-dev/examples/shell.cc.gzที่คุณสามารถคลายการบีบอัดและรวบรวมได้ง่ายมาก (เช่นg++ -Os shell.cc -o shell -lv8)

  • ติดตั้งแพคเกจnodejsและจะสามารถใช้ได้ทั้งแบบปฏิบัติการnodejsและเป็นทางเลือก (ใน Debian-sense) เพื่อให้jsไฟล์ปฏิบัติการ การรวบรวม JIT นั้นได้รับการอนุเคราะห์จาก V8

  • ติดตั้งแพ็กเกจlibjavascriptcoregtk-3.0-binและใช้ล่าม JavaScriptCore ของ WebKit เป็นล่ามjscทั่วไปจากบรรทัดคำสั่ง และนี่คือโดยไม่จำเป็นต้องมีการเข้าถึง Mac ในหลาย ๆ แพลตฟอร์ม (เช่น x86 และ x86_64) ล่ามนี้จะมาพร้อมกับคอมไพเลอร์ JIT

ดังนั้นเมื่อไม่มีการคอมไพล์คุณจะมีเอ็นจิน JavaScript สามตัวที่มีน้ำหนักมาก

ภาคผนวก

เมื่อคุณติดตั้งสิ่งต่าง ๆ แล้วคุณสามารถสร้างไฟล์โดยใช้#!/usr/bin/jsบรรทัด Shebang และสิ่งต่างๆจะใช้งานได้:

$ 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 บน iMac และ

node somefile.js

ในทุบตีจะทำงาน


พระเจ้าช่วย! @ aw04 อย่างแน่นอน
theapache64

สำหรับฉันมันเป็นnodejs somefile.jsเพราะฉันได้ติดตั้งแพคเกจ
nodejs

นี่เป็นคำตอบที่ถูกต้องในปีพ. ศ. 2562 โหนดเป็นวิธีที่แพร่หลายและง่ายที่สุดเสมอ
wilsonhobbs

10

ฉันรู้ว่าคุณถามเกี่ยวกับ Linux และ Mac ฉันจะให้คำตอบสำหรับ Windows ในกรณีที่คนอื่นที่สนใจ Windows ค้นหาคำถามของคุณ

Windows มีเอ็นจิ้น Javascript ที่สามารถใช้ได้จากบรรทัดคำสั่ง

Windows ทุกรุ่นตั้งแต่ Windows 98 ได้รวมสิ่งที่เรียกว่า " The Windows Script Host " เป็นวิธีมาตรฐานของ windows เพื่อสนับสนุนสคริปต์ "เอ็นจิน" ตั้งแต่เปิดตัวครั้งแรก WSH รองรับ JScript ซึ่งเป็นจาวาสคริปต์เวอร์ชันของ Microsoft เหนือสิ่งอื่นใดซึ่งหมายความว่าจากบรรทัดคำสั่ง windows คุณสามารถเรียกชื่อไฟล์ * .js ใด ๆ และมันจะทำงานในเอ็นจิ้น JScript (ผ่าน wscript.exe หรือ cscript.exe อย่างใดอย่างหนึ่ง)

คุณสามารถดูคำถามนี้: ProgId หรือ CLSID สำหรับกลไก Javascript ของ IE9 คืออะไร (ชื่อรหัส "Chakra")เพื่อเรียนรู้วิธีการเรียกใช้โปรแกรม Javascript Javascript IE9 ที่มีประสิทธิภาพสูงกว่าจาก cscript.exe


8

นับตั้งแต่ไม่มีใครพูดถึง: ตั้งแต่ Java 1.6 Java JDK ยังมาพร้อมกับ commandline JavaScript และ REPL

มันขึ้นอยู่กับ Rhino: https://developer.mozilla.org/en/docs/Rhino

ใน Java 1.6 และ 1.7 คำสั่งนั้นเรียกว่าjrunscript( jrunscript.exeบน Windows) และสามารถพบได้ในโฟลเดอร์ bin ของ JDK

เริ่มต้นจาก Java 1.8 จะมีการใช้งาน JavaScript ใหม่รวมอยู่ด้วย (Nashorn: https://blogs.oracle.com/nashorn/ )

ดังนั้นใน Java 1.8 คำสั่งจึงถูกเรียกjjs( jjs.exeบน Windows)


6

FWIW, node.js มาพร้อมกับเชลล์ลองพิมพ์ใน:

node-repl

เมื่อคุณติดตั้ง node.js เพื่อดูการทำงาน มันค่อนข้างมาตรฐานในการติดตั้ง rlwrap เพื่อให้มันทำงานได้ดี


ฉันค้นหา node-repl รวมถึงการใช้ hash-bang ทั้งสองอย่างดีมากในการรับโปรแกรมด่วนที่ทำงานกับ NodeJS มันรวดเร็วและใช้งานง่าย
CyberFonic

3

คุณอาจต้องการที่จะตรวจสอบแรด

Rhino Shell ให้วิธีเรียกใช้สคริปต์ JavaScript ในโหมดแบตช์:

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

3

ฉันรู้ว่านี้เป็นรุ่นเก่า แต่คุณควรลองZombie.js เบราว์เซอร์ที่ไม่มีส่วนหัวที่รวดเร็วและเหมาะอย่างยิ่งสำหรับการทดสอบ!


3

ฉันใช้ Ubuntu 12.10 และ js จาก commandline

มันสามารถใช้ได้กับการติดตั้ง java ของฉัน:

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

ตัวอย่างบางส่วน:

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!' ]

ท้องฟ้ามีขีด จำกัด แล้วเดินต่อไปเรื่อย ๆ



2

ฉันพบสิ่งนี้โอเพนซอร์สที่ดีจริงๆ ECMAScript JS Engine ที่เขียนอย่างสมบูรณ์ในภาษา C เรียกว่าduktape

Duktape เป็นเครื่องมือ Javascript ที่สามารถฝังตัวได้โดยให้ความสำคัญกับการพกพาและขนาดกะทัดรัด

โชคดี!


1

มีJavaScript เป็น OSAซึ่งเป็นส่วนเสริมที่ให้ JavaScript เป็นทางเลือกแทน appleScript ฉันใช้มันเมื่อประมาณ 10 ปีที่แล้วไม่รู้ว่ามันยังใช้งานได้กับระบบปฏิบัติการรุ่นปัจจุบันหรือไม่


1

JSDBสำหรับ Linux, Windows และ Mac ควรมีขนาดพอดีกับบิล มันใช้เอ็นจิ้น Spidermonkey Javascript ของ Mozilla และดูเหมือนว่าจะไม่ยุ่งยากในการติดตั้งเมื่อเทียบกับ node.js (อย่างน้อยครั้งสุดท้ายที่ฉันลองใช้ node.js เมื่อสองสามปีที่แล้ว)

ฉันพบ JSDB จากรายการ Javascript shells ที่น่าสนใจ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.