我想通过r.js -o app.build.js
完成后,结果会破坏我的网站。
作为附加的剪辑,您可以看到页面一直在重新加载,控制台显示一次又一次重新加载缩小的模块
https://www.youtube.com/watch?v=CQvWQ28nG1c&feature=youtu.be
有什么想法吗?
<script type="text/javascript" src="http://mysite/js/require.js"
data-main="http://mysite/js/dist/app.out.js" defer async="true">
</script>
http://www.foolpin.com/review/%E9%BB%83%E5%AE%89
{
name: "app.main.js",
mainConfigFile: 'app.main.js',
out: "dist/app.out.js",
optimize: "uglify2",
preserveLicenseComments: false,
generateSourceMaps: false,
optimizeAllPluginResources: false,
findNestedDependencies: false,
wrap: true,
wrapShim: true,
include: ["./require.js"],
}
requirejs.config({
paths: {
require: './require',
jquery: './vendor/js/jquery-2.1.1.min',
underscore: './vendor/js/underscore-min',
backbone: './vendor/js/backbone-min',
hbs: './vendor/js/hbs/hbs',
handlebars: './vendor/js/handlebars-v4.0.5',
},
hbs: { // optional
helpers: true, // default: true
templateExtension: 'hbs', // default: 'hbs'
partialsUrl: '' // default: ''
},
shim: {
handlebars: {
exports: 'Handlebars'
},
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
underscore: {
exports: '_'
}
},
});
requirejs(["app_config", "app"],function(cfg, App, noop_ahoy){
return App.initialize();
});
我有多个文件,某些文件本身具有无穷无尽的功能
这会是问题吗?
https://gist.github.com/poc7667/555a754a105a88cde13d
define([
...
"jquery"
],function(
答案 0 :(得分:1)
这个问题是由一些可能容易犯错的事情引起的。使用RequireJS时,始终使用您提供的代码或类似内容加载包:
<script type="text/javascript" src="http://mysite/js/require.js"
data-main="http://mysite/js/dist/app.out.js" defer async="true">
</script>
关键是你只有src="path/to/require.js
和data-main="path/to/bundle.js"
。这很重要。
您的错误是在捆绑包中包含RequireJS,并将脚本标记更改为
<script type="text/javascript" src="http://mysite/js/bundle.js"
data-main="http://mysite/js/bundle.js" defer async="true">
</script>
通过Matrix中的一些小故障,这会导致一遍又一遍地递归加载同一个脚本,因为bundle.js中的某个地方需要require
,并且它再次获取bundle.js并且一切都变得疯狂。这是我唯一能想到的。现在你的页面似乎不再使用捆绑的脚本,所以我无法验证这一点。
解决方案是不在捆绑包中包含RequireJS本身。它就在文档中。