Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Технология (от др.-греч. τέχνη — искусство, мастерство, умение; λόγος — мысль, причина; методика, способ производства) — в широком смысле — совокупность методов, процессов и материалов, используемых в какой-либо отрасли деятельности, а также научное описание способов технического производства; в узком — комплекс организационных мер, операций и приемов, направленных на изготовление, обслуживание, ремонт и/или эксплуатацию изделия с номинальным качеством и оптимальными затратами, и обусловленных текущим уровнем развития науки, техники и общества в целом.
define(["exports", "./sniff", "./_base/lang", "./dom", "./dom-style", "./dom-prop"],
function (exports, has, lang, dom, style, prop) {
// code
});
var exports = require("exports"),
has = require("./sniff"),
lang = require("./_base/lang"),
dom = require("./dom"),
style = require("./dom-style"),
prop = require("./dom-prop");
require('pewpew-ololo' + someVar);. Соответственно LMD умеет рабоать с модулями динамически, но приходится писать конфиг, который делает жизнь ни чуть не сложнее.requirejs.config({
<...>
paths: {
jquery: 'third-party/jquery.min',
underscore: 'third-party/underscore.min',
backbone: 'third-party/backbone.min',
<...>
},
});
И если даже что-то изменится, то достаточно будет поменять путь к файлу в загрузчике.'dataAccess': devMode ? 'dataAccessMock' : 'dataAccessWs'
'dataAccess/userData', будет подгружен модуль из папки, соответствующей текущему контексту.require.config( { paths: [] } ); алиасы к библиотекам. А по поводу обёртки да, такой формат будет удобнее, если миллион зависимостей. Вот в документации пишут про него.
define([
"exports",
"sniff",
"_base/lang"
],
function(exports,has,lang){
...
})
define(function(){
return function(){
var A = function(){}
A.prototype = { ... }
return A;
}
})
define(function (require) {
});
define("A", function(){ ... });
define ("B", ["A"], function("B"){ ... });
define("A", ["B"], function(B){ ... });
define("B", ["A"], function(A){ ... });
require() на самом деле больше плюсов, чем минусов: он явный(документация зависимостей по коду, IDE не ругается на глобалы), с помощью него возможна ленивая инициализация модуля. Это полезный слой абстракции, который может изменить способ загрузки модуля (.coffee -> .js), а так же позволяет собирать статистику без наглых хаков.var r = require;
r("pewpew-ololo");
"*": "*.js" и включить в сборку все модули. $jam.Lazy — «а у нас в квартире газ, а нас свой водолаз» :) Все подобные фичи это дело времени."i18n": "ru.json" и "i18n": "en.json"
Модульный подход к разработке web-приложений с использованием JavaScript: AMD и RequireJS