首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RequireJS没有执行所有文件

RequireJS没有执行所有文件
EN

Stack Overflow用户
提问于 2017-10-13 20:24:19
回答 1查看 275关注 0票数 1

我设计这个应用程序有一个main.js文件,它在所有页面上执行。在适用的情况下,我正在创建每个页面的JavaScript文件。每页JS执行得很好,但我注意到main.js通常只加载与每页javascript文件一起包含的硬刷新。我将在下面说明这个设置:

代码语言:javascript
复制
<script src="/admin/js/require.config.js"></script>
<script src="/admin/js/lib/require.js" data-main="./app/user/form"></script>

require.config.js

代码语言:javascript
复制
var require = {
    baseUrl: '/admin/js',
    paths: {
        main: 'app/main',
        bootstrap: 'lib/bootstrap',
        "datatables.net": 'lib/jquery.datatables',
        datepicker: 'lib/bootstrap-datetimepicker',
        dropzone: 'lib/dropzone',
        moment: 'lib/moment',
        notify: 'lib/bootstrap-notify',
        paper: 'lib/paper-dashboard',
        jquery: 'lib/jquery',
        select: 'lib/bootstrap-select',
        sortable: 'lib/Sortable.min',
        swal: 'lib/sweetalert2',
        switchTags: 'lib/bootstrap-switch-tags',
        wizard: 'lib/jquery.bootstrap.wizard.min',
        validate: 'lib/jquery.validate.min',
        yummySearch: '/yummy/js/yummy-search',
        zxcvbn: 'lib/zxcvbn'
    },
    shim:{
        bootstrap:{
            deps: ['jquery']
        },
        validate: {
            deps: ['jquery']
        },
        wizard:{
            deps: ['bootstrap'] 
        },
        select:{
            deps: ['bootstrap']
        },
        datepicker:{
            deps: ['bootstrap','moment']
        },
        switchTags:{
            deps: ['bootstrap']
        },
        paper: {
            deps: ['bootstrap','switchTags']
        },
        notify: {
            deps: ['jquery','bootstrap']
        },
        "datatables.net": {
            deps: ['jquery']
        },
        main: {
            deps: ['paper','notify','moment','datepicker','swal']
        }
    },
    deps: ['main']
};

main.js

代码语言:javascript
复制
require(['jquery','swal','yummySearch','notify'], function($, swal) {
    console.log('does not always execute');
});

app/user/form.js

代码语言:javascript
复制
define(['jquery','swal','validate','datatables.net'], function($,swal) {
    console.log('will always run when loaded via data-main');
})

如果有更好的方法,我愿意重新设计这个体系结构,但是我想至少找出我正在经历的这个问题。

EN

回答 1

Stack Overflow用户

发布于 2017-10-17 14:58:33

据我所知,deps属性在requirejs配置中是一个要加载的依赖项数组。当require在加载require.js之前被定义为一个配置对象时非常有用,并且您希望在require.js()定义之后立即指定要加载的依赖项。这样说,它只发生一次,确切地说是在加载require.js时,也是main.js只执行一次的原因。

请注意,使用deps就像对任何其他模块执行require([])调用一样,但在加载require.js和加载程序处理配置之后立即调用。

如果希望在每个页面上运行main.js,则需要手动运行required

app/user/form.js

代码语言:javascript
复制
define(['main','jquery','.... other deps'], function(main, $, others) {
    console.log('main will always run');
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46737534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档