Загружайте только необходимые файлы js, используя requirejs
Я разрабатываю приложение, в котором я использовал requirejs и остов на внешнем интерфейсе.
Я настроил requirejs для загрузки всех файлов js.
Мой файл main.js выглядит примерно так:
require.config({
baseUrl: 'js',
paths: {
"jquery": 'lib/jquery',
"jquery.ui.widget" : "lib/jquery.ui.widget",
"jquery.knob" : "lib/jquery.knob",
"jquery.iframe-transport" : "lib/jquery.iframe-transport",
"jquery.fileupload" : "lib/jquery.fileupload",
"socket" : "lib/socket.io",
"handlebars": 'lib/handlebars',
"underscore": 'lib/underscore',
"bootstrap" : 'lib/bootstrap',
"backbone": 'lib/backbone',
"views" : "views",
"models" : "models",
"collections" : "collections",
"text" : "lib/helper/text"
}
});
require(['jquery',
'handlebars',
'underscore',
'backbone',
'login',
'jquery.ui.widget',
'jquery.knob',
'jquery.iframe-transport',
'jquery.fileupload',
],function($,
Handlebars,
_,
Backbone,
Login){
Login();
});
мои логин файлы выглядят так:
define(function(require){
return function(){
var LoginView = require("views/login_view");
$("#createAccount").click(function(){
$("#signInContainer").addClass("hide");
$("#register").removeClass("hide");
});
var view = new LoginView({el : "body"});
}
});
объект представления - это объект Backbone.View, который начинается следующим образом:
define(function(require){
var User = require("models/user");
var Dashboard = require("views/dashboard");
//... rest of the code
}
Файл Login_view.js содержит 2 других файла js, необходимых для него.
Точно так же на всех других страницах, которые будут вызываться после входа в систему, также есть такие требования.
Проблема заключается в следующем: когда страница загружается, загружаются все такие вложенные требования. например, также загружаются операторы внутри файла Js Dashboard, который требуется для входа в систему.
Я хочу решение, посредством которого я хочу, чтобы только начальные файлы были загружены. Файлы внутри панели мониторинга должны загружаться только тогда, когда я хочу создать экземпляр объекта панели мониторинга.
1 ответ
Вам нужно изменить логику кода и использовать requireJS для запроса файла js только по требованию. Ниже приведен пример загрузки панели инструментов, когда пользователь щелкает элемент на странице.
define(function(require){
var User = require("models/user");
//...my code
//ex on user click
$("#myElement").on("click",function(){
require(["views/dashboard"],function(Dashboard){
//code for Dashboard here
});
});
}