Maison > interface Web > js tutoriel > Comment utiliser requirejs pour modulariser une entrée pour plusieurs pages ?

Comment utiliser requirejs pour modulariser une entrée pour plusieurs pages ?

零下一度
Libérer: 2017-06-26 09:51:48
original
1663 Les gens l'ont consulté

Description

Tous ceux qui connaissent requirejs savent que chaque page nécessitant un développement modulaire doit avoir un fichier js d'entrée pour la configuration du module. Mais maintenant, il y a un problème très embarrassant. S'il y a beaucoup de pages, alors il y aura de nombreux fichiers d'entrée correspondant aux données principales. En théorie, ce n'est pas grave, mais lorsque vous utilisez grunt pour le fusionner et le compresser plus tard, il y aura de nombreuses entrées js. Bien que cette entrée js compresse tout le contenu du module configuré, il existe en fait de nombreuses entrées dans les fichiers fusionnés et compressés de chacun. Codes qui se chevauchent, donc compte tenu de cela, j'ai pensé à unifier tous les fichiers d'entrée et à en utiliser un. Le moment venu, en utilisant Grunt pour fusionner et compresser, il n'y aura qu'un seul fichier d'entrée, ce qui est également très pratique.

Principe de mise en œuvre

1. La page présente requirejs et définit les attributs de l'identifiant et les informations de la page actuelle

<script src="/res/js/require.js?1.1.11" data-main="/res/js/require.config" id="current-page" current-page ="news" target-module="/res/js/module/newsCtrl"  defer async="true" ></script>
Copier après la connexion

2. config.js pour initialiser différentes informations de page en fonction de différentes pages

/**
 * 1、所有页面使用公共的require配置
 * 2、根据current-page去加载相应地模块,不需要的模块不要去加载
 * 3、每个模块都要按约定去对外暴露一个init的初始化方法,用于页面信息加载时间监听
 * 
 */require.config({ 
    urlArgs: "ver=1.0_" + (new Date).getTime(),   
    paths: {      "jquery": "/res/js/base/jquery-1.11.3.min","vue":'/res/js/base/vue.min',"common": "/res/js/widgets/common"},
    shim: {'scroll': {      
            deps: ['jquery'],
            exports: 'jQuery.fn.scroll'    
        },'vue':{
            exports:'vue'},'common':['jquery']
    }
});


require(["jquery"], function ($) {
    require(["common"], function (common) {var currentPage = $("#current-page").attr("current-page");var targetModule = $("#current-page").attr("target-module");if (targetModule) {// 页面加载完毕后再执行相关业务代码比较稳妥$(function () {
                require([targetModule], function (targetModule) {// 不要在这里写业务代码//全部统一调用init方法//也就是每个模块都暴露一个init方法用于事件监听,页面内容加载等                    targetModule.init(currentPage);
                });
            });return;
        }
    });
});
Copier après la connexion

3 Définir le module et implémenter la méthode d'initialisation d'initialisation pour la surveillance des événements et l'initialisation des informations de page

define(['jquery', "common"], function ($, common) {    var newCtrl = {};
    newCtrl.init = function (page) {
        common.info("开始初始化页面信息");
    };
    newCtrl.login = function () {};return newCtrl;
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal