JSDoc3, fest.bem
#!+ /**
* @class Folder
* @param {Object} [attrs] аттрибуты (опционально)
#!- */
var Folder = function (attrs) {
this.attrs = attrs;
};
Folder.prototype = /** @lends Folder.prototype */{
#!+ /**
* Установить свойство
* @param {string} key имя свойства (обязательно)
* @param {*} value значение (обязательно)
* @returns {Folder}
#!- */
set: function (key) { ... },
#!+ /**
* Получить свойство
* @param {string} key имя свойства (обязательно)
* @returns {*}
#!- */
get: function (key) { ... }
};
/** * @class Folder * @param {Object} [attrs] аттрибуты (опционально) */ var Folder = function (attrs) { this.attrs = attrs; }; Folder.prototype = /** @lends Folder# */{ /** * Установить свойство * @param {string} key имя свойства (обязательно) * @param {*} value значение (обязательно) * @returns {Folder} */ set: function (key) { ... }, /** * Получить свойство * @param {string} key имя свойства (обязательно) * @returns {*} */ get: function (key) { ... } };
var Folder = Model.extend(/** Folder# */{ method: _createFunction("...") });
var Folder = Model.extend(/** Folder# */{ /** #! * @method Folder#method #!+ * @param {string} foo * @param {number} bar #!- * @returns {*} */ method: _createFunction("...") });
define(["Folder", "Letter"], function (Folder, Letter) { // ... });
define(["Folder", "Letter"], function ( /** Folder */Folder, /** Letter */Letter ) { // ... });
module.exports = { open: function (chunk) { #! chunk.pushStr(">!--", true); }, close: function (chunk) { #! chunk.pushStr("--<", true); } };
module.exports = { open: function (chunk, node) { chunk #!+ .vars("__fest_if", { #! value: this.getAttr(node, "test", "expr"), #! defaults: false #!- }) #! .add("if(__fest_if) {") ; }, close: function (chunk) { #! chunk.add("}"); } };
<!-- Определяем блок "btn" --> <div bem:block="btn"> #!+ <!-- Добавляем модификатор "btn_icon" в зависимости от параметров --> #!- <bem:mod name="icon" test="params.icon"/> #!+ <!-- Определяем элемент "btn__text" --> <span bem:elem="text"> #!+ <!-- Добавляем модификатор "btn__text_pad" в зависимости от модификатора "btn_icon" --> #!- <bem:mod name="pad" has-mod="icon"/> <fest:value>params.text</fest:value> #!- </span> </div>
<!-- Используем блок "btn" --> #! <bem:btn>{ text: "foo", mods: ["main"] }</bem:btn> #! <bem:btn>{ text: "bar", icon: true }</bem:btn>