首页 > 代码库 > backbone与require的共存问题解决
backbone与require的共存问题解决
如果向下面那样直接列出script标签可能会出现错误,
<script type="text/javascript" src="http://www.mamicode.com/dep/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="http://www.mamicode.com/dep/underscore-1.6.0.min.js"></script> <script type="text/javascript" src="http://www.mamicode.com/dep/backbone-1.1.2.js"></script> <script type="text/javascript" src="http://www.mamicode.com/dep/require-2.1.11.min.js"></script>
原因有两点:
1、backbone中有define等关键字
2、js的加载与执行顺序是无序的,所以有可能require先加载执行使backbone
解决方案:
第一步:配置require.config
require.config({ baseUrl: ‘/src/‘, paths:{ underscore: ‘/dep/underscore-1.6.0.min‘, jquery: ‘/dep/jquery-1.11.1.min‘, backbone: ‘/dep/backbone-1.1.2.min‘ }, shim: { ‘backbone‘: { deps: [ ‘underscore‘, ‘jquery‘ ] } } });
第二部:require入口模块
require([‘enter‘], function(main){ main.enter(); });
最后一步:在入口模块中依赖backbone
define([‘backbone‘], function (backbone) { // 异步加载某模块,可在此处做一些路由处理 var enter = function(model){ model = model||‘helloWorld‘; window.require([model], function(helloWorld){ var $container = $(‘#main‘); helloWorld.init($container); }); }; return { enter: enter }; });
说明:
1、以后的业务模块中就不需要依赖backbone了,因为非模块加载已经全局化
2、在其他模块中使用时是Backbone,大写的B啊
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。