2017-03-09 31 views
0

可以說我有兩個文件front.js和other.js。我需要從other.js添加代碼裏面front.js
在客戶端js內導入代碼;在當前範圍內,在任何位置

front.js -

// blah 
var obj= { 
    a: function(){ 
     // more blah 
    }, 

    b: function(){ 
     // more blah 
    }, 

    /* 
    get 
    c: function(){ 
     // more blah 
    }, 
    here 
    */ 

    d: function(){ 
     // more blah 
    } 
}; 
// blah 

other.js -

c: function(){ 
    // more blah 
}, 
// this ^^ is all that there is in the file (invalid js) 

我怎樣才能在正確的導入代碼other.js位置在front.js

+1

'c:46,'是無效的javascript,所以你不能命名一個文件'other.js'。一種選擇是將'other.js'作爲一個模塊,用於導出一個值,然後在'front.js'中引用它。但似乎你需要動態組裝'js'代碼,但很難告訴你想要做什麼,沒有額外的細節 –

+0

c:46,是無效的js,yup,我知道這一點。我正在尋找一個帶有不同js文件的項目(不一定是有效的js),如果連接在一起,它將是有效的js。想要調試它,而不需要製作一個大的js文件或將不同的文件重構成適當的模塊! – vjjj

回答

0

謝謝@Bergi,你的提示是在正確的方向!

我最終這樣做的:

比方說front.js是

// blah 
var obj= { 
    a: function(){ 
     // more blah 
    }, 

    // other.js 

    c: function(){ 
     // more blah 
    } 
}; 
// blah 

和other.js是 -

b: function(){ 
    // more blah 
}, 


做一個app.js與

var bigstr= "", otherstr= ""; 
var count= 0; 

var frontstream= fs.createReadStream("path/to/front.js"); 

frontstream.on("data", function(chunk){ 
     bigstr+= chunk; 
}); 

frontstream.on("error", function(error){ 
     console.log("front error"); 
}); 

frontstream.on("end", function(){ 
     var otherstream= fs.createReadStream("path/to/other.js"); 

     otherstream.on("data", function(chunk){ 
       otherstr+= chunk; 
     }); 

     otherstream.on("error", function(){ 
       console.log("other error"); 
     }); 

     otherstream.on("end", function(){ 
       count+= 1; 
       check(); 
     }); 
}); 

function check(){ 
     if(count===1){ 
       bigstr= bigstr.replace("// other.js", otherstr); 

       fs.writeFile("path/to/newfront.js", bigstr, function(err){ 
         if(!err){ 
           console.log("done"); 
         } 
       }); 
     } 
} 
1

這不是一個客戶方模塊加載程序(甚至是模塊系統中一般情況下,依賴於有效的代碼結構)會做,這是一個多麼構建腳本一樣。它只會掃描您的文件中的include指令,並逐字將其替換爲引用文件的內容。查看this answer查看加入文件的簡單示例。

相關問題