2008-09-03 31 views
31

Để gỡ lỗi và thử nghiệm Tôi đang tìm kiếm một trình bao JavaScript có tính năng tự động hoàn thành và nếu có thể có sự mâu thuẫn đối tượng (như ipython). Số điện thoại JavaScript Shell trực tuyến thực sự rất hay, nhưng tôi đang tìm một thứ gì đó cục bộ mà không cần trình duyệt.Trình tương tác JavaScript hoàn thành

Cho đến nay tôi đã thử nghiệm trình thông dịch JavaScript độc lập, spidermonkey và google V8. Nhưng không ai trong số họ đã hoàn thành. Ít nhất Rhino với jline và spidermonkey có một số loại lịch sử lệnh thông qua phím lên/xuống, nhưng không có gì nhiều hơn nữa.

Mọi đề xuất?

Câu hỏi này được hỏi lại here. Nó có thể chứa một câu trả lời mà bạn đang tìm kiếm.

Trả lời

19

Tê giác vỏ kể từ 1.7R2 cũng hỗ trợ hoàn thành. Bạn có thể tìm thêm thông tin here.

4

Trong Windows, bạn có thể chạy tệp này từ dấu nhắc lệnh trong cscript.exe và nó cung cấp một trình bao tương tác đơn giản. Không hoàn thành.

// shell.js 
// ------------------------------------------------------------------ 
// 
// implements an interactive javascript shell. 
// 
// from 
// http://kobyk.wordpress.com/2007/09/14/a-jscript-interactive-interpreter-shell-for-the-windows-script-host/ 
// 
// Sat Nov 28 00:09:55 2009 
// 

var GSHELL = (function() { 

    var numberToHexString = function (n) { 
     if (n >= 0) { 
      return n.toString(16); 
     } else { 
      n += 0x100000000; 
      return n.toString(16); 
     } 
    }; 
    var line, scriptText, previousLine, result; 

    return function() { 
     while(true) { 
      WScript.StdOut.Write("js> "); 
      if (WScript.StdIn.AtEndOfStream) { 
       WScript.Echo("Bye."); 
       break; 
      } 
      line = WScript.StdIn.ReadLine(); 
      scriptText = line + "\n"; 
      if (line === "") { 
       WScript.Echo(
        "Enter two consecutive blank lines to terminate multi-line input."); 
       do { 
        if (WScript.StdIn.AtEndOfStream) { 
         break; 
        } 
        previousLine = line; 
        line = WScript.StdIn.ReadLine(); 
        line += "\n"; 
        scriptText += line; 
       } while(previousLine != "\n" || line != "\n"); 
      } 
      try { 
       result = eval(scriptText); 
      } catch (error) { 
       WScript.Echo("0x" + numberToHexString(error.number) + " " + error.name + ": " + 
          error.message); 
      } 
      if (result) { 
       try { 
        WScript.Echo(result); 
       } catch (error) { 
        WScript.Echo("<<>>"); 
       } 
      } 
      result = null; 
     } 
    }; 
})(); 

GSHELL(); 

Nếu muốn, bạn có thể tăng thêm thư viện tiện ích khác bằng tệp .wsf. Lưu ở trên để "shell.js", và tiết kiệm sau đây để "shell.wsf":

<job> 
    <reference object="Scripting.FileSystemObject" /> 
    <script language="JavaScript" src="util.js" /> 
    <script language="JavaScript" src="shell.js" /> 
</job> 

... nơi util.js là:

var quit = function(x) { WScript.Quit(x);} 
var say = function(s) { WScript.Echo(s); }; 
var echo = say; 
var exit = quit; 
var sleep = function(n) { WScript.Sleep(n*1000); }; 

... và sau đó chạy shell.wsf từ dòng lệnh.

5

chỉnh sửa: sau khi sử dụng nút REPL nhiều hơn một chút, tôi đã phát hiện ra đánh giá này là quá tích cực. Có một số vấn đề nghiêm trọng với việc thực hiện nó, bao gồm cả việc không thể đánh chìm văn bản bị giết, các vấn đề với các dòng chỉnh sửa dài hơn chiều rộng đầu cuối và một số vấn đề khác. Nó có thể là tốt hơn để chỉ sử dụng tê giác.

node.jsREPL (node-repl trên hệ thống có nút được cài đặt) là trình bao ngữ cảnh hệ thống dựa trên thiết bị đầu cuối tốt nhất mà tôi đã nhìn thấy từ trước tới nay. Tôi đang so sánh nó với tê giác và vỏ v8 tích hợp. Nó cung cấp lịch sử hoàn thành tab và lịch sử chỉnh sửa, cũng như tô màu các đánh giá. Bạn cũng có thể nhập các mô-đun CommonJS hoặc ít nhất các mô-đun được thực hiện bởi nút.

Nhược điểm là bạn phải tạo nút. Đây không phải là một vấn đề lớn, khi xây dựng ứng dụng, nhưng có thể là một thách thức nếu bạn không thường làm những việc như vậy.

0

jslibs (thời gian chạy javascript độc lập) cũng có thể phù hợp cho mục đích này.

Các vấn đề liên quan