Javascript 使用RequireJS分离脚本
我最近开发了一个web应用程序,我想把它分成几个模块。 我搜索了一下,发现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
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,我应该下载它并包含在我的文件夹中吗?它为什么会显示出来?谢谢非常多,我完全忘记了数据库对象,同样对于提供的代码,现在可以正常工作了:)