參考了這篇文章 js——new Function 一個可以隨時動態執行字符串js代碼的神器
因為一些原因,想要js代碼塊配置在數據庫中返回,例如時間,我需要用到第三方庫 moment。然后動態的得到startDate 和 endDate
配置在數據庫中的startDate值是$moment().subtract(1,'year')
一年前的日期,而endDate值是$moment()
。
去掉$
符就是我想要的js代碼
$
符號只是用于區分值和js代碼。在js中我最終是replaceAll('$', '')
替換掉的。
實際邏輯如下:
import moment from 'moment';// 在使用的地方引入moment庫
// startDate 和 endDate
var endDate = "moment()";
var startDate = "moment().subtract(1,'year')"
/**
將 moment 庫傳進去這樣在執行startDate/endDate代碼的時候就會將入參的moment拿到并執行想要的代碼,
這里是通過return返回的,因此我用date1接收了返回值。
*/
var date1 = new Function('moment','return ' + startDate)(moment);
var date2 = new Function('moment','return ' + endDate )(moment);