循环中支持 continue/break/return 控制。 1 string code 2 var sum 0;3 for (var i 0; i 5; i) {4 sum i;5 }6 sum;7 ;8 var script new Script();9 script.Context.Langs new[] { “js” };10 Assert.AreEqual(10L, script.Eval(code));复制代码18、for of遍历值循环中支持 continue/break/return 控制。复制代码1 string code 2 var list [‘tom’, ‘jim’, ‘john’];3 var s ‘’;4 for(var item of list) {5 s item ‘,’;6 }7 s8 ;9 var script new Script();10 script.Context.Langs new[] { “js” };11 Assert.AreEqual(“tom,jim,john,”, script.Eval(code));复制代码19、for in遍历数组或集合循环中支持 continue/break/return 控制。复制代码1 string code 2 var list [‘tom’, ‘jim’, ‘john’];3 var s ‘’;4 for(var i in list) {5 s list[i] ‘,’;6 }7 s8 ;9 var script new Script();10 script.Context.Langs new[] { “js” };11 Assert.AreEqual(“tom,jim,john,”, script.Eval(code));复制代码20、for in遍历对象或字典循环中支持 continue/break/return 控制。复制代码1 string code 2 var person { ‘name’: ‘Bob’, age: 25 };3 var s ‘’;4 for(var key in person) {5 s key ‘:’ person[key] ‘,’;6 }7 s8 ;9 var script new Script();10 script.Context.Langs new[] { “js” };11 Assert.AreEqual(“name:Bob,age:25,”, script.Eval(code));复制代码21、while循环循环中支持 continue/break/return 控制。复制代码1 string code 2 var i 0;3 var sum 0;4 while (i 5) {5 sum i;6 i;7 }8 sum;9 ;10 var script new Script();11 script.Context.Langs new[] { “js” };12 Assert.AreEqual(10L, script.Eval(code));复制代码22、require引用模块使用require引用模块并返回模块实例如 var fs require(‘fs’) 。如果父级上下文环境或者所在语言环境已引用相同模块则不会重复安装模块直接返回该模块实例。四、fs文件模块注服务端项目请谨慎添加文件模块避免脚本中恶意删除、修改文件。1安装nuget包install-package AScript.Lang.JavaScript.fs2添加fs模块JavaScriptLang.Instance.AddModule(“fs”, new JavaScriptFileSystemModule());3同步读写文件复制代码1 string s 2 var fs require(‘fs’);3 fs.writeFileSync(‘test.txt’, ‘hello world’, ‘utf-8’);4 fs.readFileSync(‘test.txt’, ‘utf-8’)5 ;6 var script new Script();7 script.Context.Langs new[] { “js” };8 var result script.Eval(s);9 Assert.AreEqual(“hello world”, result);复制代码4异步读写文件复制代码1 string s 2 var fs require(‘fs’);3 await fs.writeFile(‘test.txt’, ‘async write’, ‘utf-8’);4 await fs.readFile(‘test.txt’, ‘utf-8’)5 ;6 var script new Script();7 script.Context.Langs new[] { “js” };8 var result await script.EvalAsync(s);9 Assert.AreEqual(“async content”, result);复制代码5其他方法复制代码1 var fs require(‘fs’);2 fs.appendFileSync(‘test.txt’, ‘append content’, ‘utf-8’); // 同步追加文件3 fs.appendFile(‘test.txt’, ‘append context’, ‘utf-8’); // 异步追加文件4 fs.copyFileSync(‘test.txt’, ‘test_copy.txt’); // 同步拷贝文件5 fs.copyFile(‘test.txt’, ‘test_copy.txt’); // 异步拷贝文件6 fs.unlinkSync(‘test.txt’); // 同步删除文件7 fs.unlink(‘test.txt’); // 异步删除文件8 var reader fs.createReadStream(‘test.txt’); // 读文件流9 var writer fs.createWriteStream(‘test2.txt’); // 写文件流10 reader.pipe(writer); // 读取文件流并写入目标文件流11 // 读文件流事件open/data/error/end/close12 reader.on(‘data’, function(chunk) {13 console.log(chunk);14 });15 reader.on(‘end’, function() {16 console.log(‘end’);17 });18 // 写文件流事件open/error/finish/close19 writer.on(‘open’, ()console.log(‘open’));20 writer.on(‘close’, ()console.log(‘close’));21 writer.write(‘hello’);22 writer.end();复制代码五、axios模块1安装nuget包install-package AScript.Lang.JavaScript.axios2添加axios模块JavaScriptLang.Instance.AddModule(“axios”, new JavaScriptAxiosModule());3get复制代码1 string s 2 var axios require(‘axios’);3 await axios.get(‘http://test.com/api/user/list’);4 ;5 var script new Script();6 script.Context.Langs new[] { “js” };7 var result script.Eval(s);8 var data result.data;复制代码4post复制代码1 string s 2 var axios require(‘axios’);3 await axios.post(‘http://test.com/api/user/update’, {code:‘123’,name:‘tom’});4 ;5 var script new Script();6 script.Context.Langs new[] { “js” };7 var result script.Eval(s);8 var data result.data;复制代码5其他方法复制代码1 var axios require(‘axios’);2 var instance axios.create({baseURL:‘http://test.com’});3 instance.get(‘/api/user/list’)4 .then(res{})5 .catch(err{});6 instance.post(‘/api/user/update’, {code:‘123’,name:‘tom’})7 .then(res{})8 .catch(err{});9 instance.put(‘/api/user’, {});10 instance.delete(‘/api/user’, {});11 // mock12 var mockInstance axios.createMock([{code:‘123’,name:‘tom’}, {code:‘124’,name:‘john’}]);13 var resp await mockInstance.get(‘http://test.com/api/user/list’); // resp.data: [{code:‘123’,name:‘tom’}, {code:‘124’,name:‘john’}]

本月热点