Если я правильно понял ваш вопрос, вы хотите использовать Integrity Sub Resource для скриптов, на которые ссылается через require js. Обратите внимание, что для этого вам потребуется RequireJS версии 2.1.19 или новее (см. http://requirejs.org/docs/download.html ).
Для рабочего примера (ссылка на jQuery) см. этот плункер: http://plnkr.co/edit/kzqLjUThJRtoEruCCtMt?p=preview . Надеемся, вы сможете копировать этот метод в свой проект.
В моем примере используются атрибуты целостности / crossorigin для:
index.html
) main.js
и интересная вещь для вас) Это построено на крюке RequireJS onNodeCreated
и в коде, например
onNodeCreated: function(node, config, module, path) {
node.setAttribute('integrity', integrityForModule);
node.setAttribute('crossorigin', 'anonymous');
}
Обратите внимание, что в этом примере НЕ используется SRI для файла конфигурационного файла main.js
. Для этого либо
index.html
main.js
(файл конфигурации) через дополнительный тег скрипта (с целостностью / кроссовером), а не через атрибут data-main
На мой взгляд, если вы пытаетесь сделать все более ясно, лучше документировать ожидание на идентификаторе X, добавив аннотацию типа, а не результат функции.
val x: () => Long = () => System.currentTimeMillis
Затем компилятор гарантирует, что функция на правой стороне соответствует этой ожидании.
Фабиан дал простой путь, но некоторые другие способы, если вам нравится микроуправление сахаром, включают:
val x = new (() => Long) {
def apply() = System.currentTimeMillis
}
или
val x = new Function0[Long] {
def apply() = System.currentTimeMillis
}
или даже
val x = new {
def apply(): Long = System.currentTimeMillis
}
поскольку в большинстве ситуаций не имеет значения, происходит ли это от функции, только если она применима.