mockjs主要有兩種語法規范: 數據模板定義規范DTD && 數據占位符定義規范DPD;
數據模板中的每個屬性由三部分組成: 屬性名、規則、屬性值;
屬性名和規則之間用 “|” 進行分割;生成規則是可選的,一共有七種規則,但是規則的含義具體要根據屬性值來進行確定,不同的屬性值對應的規則含義是不同的;屬性值中可以包含 @占位符,並且屬性值還指定了最終值的初始值以及類型;
我們在實際的應用中,屬性值的類型其實就是我們 js 中數據的類型:string、number、boolean、object、array、function以及正則reg ;
1)、屬性值為 string
' name| min-max' : string ; //通過重復string生成一個字符串,string的重復次數 大於等於min ; 小於等於max ;
' name| count' : string; //通過重復string生成一個字符串,重復次數為 count ;
2)、屬性值為 number
' name| min-max' : number ; //生成一個大於等於min 小於等於 max 的整數;
' name| +1' : number ; //屬性值自動加1,初始值為 number ;
‘ name| min-max.dmin-dmax’ : number ; //生成一個浮點數,整數部分大於等於min,小於等於max; 小數部分保留 dmin 到 dmax 位;
3)、屬性值為 boolean
' name| 1' : boolean ; //隨機生成一個布爾值,值為 true 和 false 的概率均為 50%;
' name| min-max' : boolean ; //隨機生成一個布爾值,值為 true 的概率為 min/( min + max) ; 值為 false 的概率為 max/( min + max);
4)、屬性值為 object
' name| count' : object ; //從object中隨機抽取count 個屬性;
' name| min-max' : object; //從object中隨機抽取 min 到 max 個屬性;
5)、屬性值為 array
' name| 1': array ; //從array中隨機選取一個值最為最終值;
' name| +1' : array; //從array 中順序選擇一個元素,最為最終值;
' name| min-max' : array ; //通過重復array 生成一個新數組,重復的次數大於等於min, 小於等於max ;
' name| count' : array; //通過重復array 生成一個新數組,重復的次數為 count ;
6)、屬性值為 function
' name' : function ; // 執行function,使其最終的返回值最為 最終的屬性值;函數的上下文為 name 所在的對象;
7)、屬性值為 RegExp
' name' : reg ; //根據正則去生成一個符合這個正則表達式規則的屬性值;
數據占位符只是在屬性值字符串中占據一個位置,最終並不出現在屬性值中, 占位符的格式為 @占位符 || @占位符(參數 [,參數]);
使用數據占位符的時候需要注意的是: 1)、用@來標識的其后的是占位符;2)、占位符應用的是Mock.random的方法; 3)、通過Mock.random.extend()來擴展自定義占位符; 4)、占位符也可以引用數據模板中的數據而且會優先引用;5)、占位符支持相對路徑也支持絕對的路徑;
