2009-05-29 21 views
16

Đầu tiên, hãy báo trước. Tập lệnh chính là không chạy trong một trang web. Tôi sẽ chạy file .js trong Windows bằng Windows Script Host.Làm cách nào để tạo một thư viện javascript trong một tệp riêng biệt và "bao gồm" nó trong một tệp khác?

Vấn đề: Tôi muốn tạo một "thư viện" javascript chứa một số đối tượng, mỗi đối tượng có một số hàm. Tôi hy vọng thư viện này sẽ nhận được khá lớn với thời gian và muốn giữ nó trong một tập tin javascript riêng biệt (chúng ta hãy gọi nó là Library.js). Tôi muốn truy cập các đối tượng từ Library.js từ tập lệnh khác (hãy gọi số này User.js).

Về bản chất, tôi đang tìm kiếm một cái gì đó tương tự như C/C++ "bao gồm" mô hình.

Có cách nào để triển khai điều này trong javascript không? (Hãy nhớ rằng, đây không phải là dựa trên web)

+1

Dưới đây là một câu hỏi tương tự: http://stackoverflow.com/questions/316166/how-do-i-include-a-common-file- in-vbscript-similar-to-c-include – Helen

Trả lời

19

This page right here là gần nhất tôi có thể tìm thấy. Nó nói về các tệp .wsf cho phép bạn kết hợp nhiều tập lệnh (có thể được viết bằng các ngôn ngữ khác nhau) trong một tệp.

Đối với câu hỏi của bạn cần một cái gì đó như:

user.wsf

<job id="IncludeExample"> 
    <script language="JScript" src="library.js"/> 
    <script language="JScript"> 
     <![CDATA[ 
     // use your library functions here 
     ]]> 
    </script> 
</job> 

Có thể có những cách tốt hơn, nhưng tôi không phải là một chuyên gia WSH.

+0

Geesh ... Đánh tôi với câu trả lời .... ;-) – Dscoduc

1

Bạn có thể đạt được mục tiêu của mình bằng cách sử dụng Máy chủ Windows Script thay vì tệp .js hoặc .vbs cụ thể. Bạn có thể tìm thêm thông tin tại the MSDN site.

Từ liên kết:

Windows Script (* .wsf) tập tin là một tài liệu văn bản chứa Extensible Markup Language (XML) mã. Nó kết hợp một số tính năng cung cấp cho bạn tăng tính linh hoạt của tập lệnh. Vì tệp tập lệnh Windows không phải là cụ thể cho động cơ, chúng có thể chứa tập lệnh từ bất kỳ công cụ tạo tập lệnh tương thích nào của Windows Script . Chúng hoạt động làm vùng chứa.

Bạn sẽ Cal tập tin lthe sử dụng cú pháp giống như một .js và .vbs file:

wscript.exe myScriptFile.wsf

CẬP NHẬT: Correction lưu ý ...

+0

Máy chủ tập lệnh là cscript.exe hoặc wscript.exe, chứ không phải vbscript.exe. – Helen

13

Tôi biết đây là câu hỏi cũ và câu hỏi đã được trả lời và chấp nhận.

Tôi biết về các tệp .WSF và cách chúng hoạt động; họ phục vụ mục đích.

Tuy nhiên, tôi cũng thấy thuận tiện khi thực hiện "bao gồm" từ bên trong tệp .js thuần túy chạy trong WSH. Đây là giải pháp của tôi cho điều đó.

function includeFile (filename) { 
     var fso = new ActiveXObject ("Scripting.FileSystemObject"); 
     var fileStream = fso.openTextFile (filename); 
     var fileData = fileStream.readAll(); 
     fileStream.Close(); 
     eval(fileData); 
    } 

Với chức năng tiện ích xác định, tôi có thể làm điều này từ bên trong một module javascript:

includeFile("externalFile1.js"); 
includeFile("externalFile2.js"); 
includeFile("etc.js"); 

... và sau đó tôi có thể gọi bất kỳ chức năng hoặc cù bất kỳ biến quy định tại những mô-đun đó.

Một kỹ thuật tương tự như làm việc với các file .vbs:
How do I include a common file in VBScript (similar to C#include)?

+0

+1 cho liên kết đến http://stackoverflow.com/questions/316166 – 0xC0000022L

+3

Tôi đã thử hàm 'includeFile' này nhưng tiếc là' eval' bên trong hàm này không có hiệu lực đối với phần còn lại của tệp. Có vẻ như 'eval' chỉ hoạt động bên trong hàm và không có hiệu ứng toàn cầu. Tôi đã phải thực hiện somethink như: eval (includeFile ("something.js")); Trong trường hợp 'includeFile' trả về giá trị' fileData' (trả về tệpData). – MrHIDEn

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