Javascript 使用RequireJS分离脚本

Javascript 使用RequireJS分离脚本,javascript,node.js,requirejs,Javascript,Node.js,Requirejs,我最近开发了一个web应用程序,我想把它分成几个模块。 我搜索了一下,发现RequireJs是最好的。我读了《博士》和一些关于它的教程,然后想到了这个 requirejs.config({ baseUrl: "js/lib", shim: { 'jquery-1.12.1.min': ['jquery-1.12.1.min'], 'materialize.min': ['materialize.min'], 'knockou

我最近开发了一个web应用程序,我想把它分成几个模块。 我搜索了一下,发现RequireJs是最好的。我读了《博士》和一些关于它的教程,然后想到了这个

    requirejs.config({
    baseUrl: "js/lib",
    shim: {
        'jquery-1.12.1.min': ['jquery-1.12.1.min'],
        'materialize.min': ['materialize.min'],
        'knockout-3.4.0': ['knockout-3.4.0'],
        'pouchdb-5.3.0.min': ['pouchdb-5.3.0.min']
    },
    waitSeconds: 0,
    paths: {
        'jquery-1.12.1.min': 'jquery-1.12.1.min',
        'materialize.min': 'materialize.min',
        'knockout-3.4.0': 'knockout-3.4.0',
        'pouchdb-5.3.0.min': 'pouchdb-5.3.0.min',
    }   
});
require(["jquery-1.12.1.min", "knockout-3.4.0", "materialize.min", "pouchdb-5.3.0.min"], function($, ko) { //My main functions and other stuff ... }
我的索引包含以下内容:

requirejs.config({
    baseUrl: 'js/lib',
    waitSeconds: 0,
    paths: {
        app: '../app',
        jquery: 'jquery-1.12.1.min',
        materialize: 'materialize.min',
        knockout: 'knockout-3.4.0',
        pouchdb: 'pouchdb-5.3.0.min',
        hammer: 'hammer.min'
    },
    shim: {
        hammer: {
            deps: ['jquery']
        },
        pouchdb: {
            deps: ['jquery']
        },
        knockout: {
            deps: ['jquery'],
            exports: 'ko'
        },
        materialize: {
            deps: ['jquery', 'hammer'],
        },
        jquery: {
            exports: '$'
        }
    }
});

但我的
Jquery
KO
物化.css
backdb
似乎没有像我在网络中的chrome开发工具上看到的那样加载:

我还阅读了有关垫片配置如何设置依赖项的内容,并希望它们按顺序排列。我真的不知道我错过了什么,任何帮助都将不胜感激

文件夹结构是:

js:  
   lib:
     ->jquery-1.12.1.min.js
     ->knockout-3.4.0.js
     ->pouchdb-5.3.0.min.js
     ->materialize.min.js 
     ->require.js 
   main.js
   converter.js
使用,requirejs将模块id前缀(配置中的名称)替换为相应的值

使用可以导出全局变量并配置依赖项(materialize依赖于jquery,因此在导入materialize.js之前必须导入jquery)


好的,看来require和materialze.css在hammer.js上有问题,我建议您去下载并将其包含在lib文件夹中。 然后在main.js中添加以下内容:

requirejs.config({
    baseUrl: 'js/lib',
    waitSeconds: 0,
    paths: {
        app: '../app',
        jquery: 'jquery-1.12.1.min',
        materialize: 'materialize.min',
        knockout: 'knockout-3.4.0',
        pouchdb: 'pouchdb-5.3.0.min',
        hammer: 'hammer.min'
    },
    shim: {
        hammer: {
            deps: ['jquery']
        },
        pouchdb: {
            deps: ['jquery']
        },
        knockout: {
            deps: ['jquery'],
            exports: 'ko'
        },
        materialize: {
            deps: ['jquery', 'hammer'],
        },
        jquery: {
            exports: '$'
        }
    }
});
您包括您和jquery对它的依赖关系。我看到您没有将PockDB对象放入函数中:

define([“jquery”、“knockout”、“pockdb”、“materialize”]),function($,ko,pockdb){…


希望这有帮助

Ok我使用了您提供的代码并添加了对其他人的依赖性:
baseUrl:“js/lib”,waitSeconds:0,路径:{'jquery':'jquery-1.12.1.min','materialize':'materialize.min','knockout':'knockout-3.4.0','pockdb':'pockdb-5.3.0.0.min',},垫片:{'pockDB'{deps:['knockout']},'knockout':{deps:['materialize']},'materialize':{deps:['jquery']},'jquery':{exports:'$'}}
但我得到一个错误:404 hammer.js(未找到)我在示例中添加了hammer。Knockout不依赖于materialize。仍然是404 for hammer.min:/您删除了Knockout和materialize之间的依赖关系吗?我做了一个测试,所有的lib都被下载了。问题是我得到了404 for hammer.js,我应该下载它并包含在我的文件夹中吗?它为什么会显示出来?谢谢非常多,我完全忘记了数据库对象,同样对于提供的代码,现在可以正常工作了:)