<script data-main="scripts/config" src="scripts/require.js"></script>
<script src="scripts/other.js"></script>
//config.js
require.config({
paths: {
foo: 'libs/foo-1.1.3'
}
});
//other.js
require( ['foo'], function( foo ) {
});
requirejs文档有这样一句话:
注意:你在data-main中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。
因为项目里面requirejs的配置都是公用的,我就想将配置单独设在config.js里面用data-main的形式加载,但是不能在加载other.js之前保证config.js加载完,所以有时候other.js里面的依赖会加载了scripts/foo.js,而不是require.config指定的libs/foo-1.1.3。
请问这样怎么处理,一般项目requirejs配置大家都是怎么处理的?
开发调试的dev
环境需要config.js
,因为你尚未打包依赖。配置如下:
html
<script type="text/javascript" src="dev/js/libs/require.js"></script> <script type="text/javascript" src="dev/js/config.js"></script> <script type="text/javascript" src="dev/js/app/index.js"></script>
配置写在require.js
后。
打包后的build
环境,如果打包文件index.js
没有外部依赖(比如依赖dialog
,dialog
是远程组件),那么在打包后,你根本是不需要config.js
配置文件的。即:
html
<script type="text/javascript" src="build/js/libs/require.js"></script> <script type="text/javascript" src="build/js/app/index.js"></script>
否则,打包后,仅仅只需要配置文件对远程的依赖组件进行配置,命名另一个配置文件为config-remote.js
。配置如下:
javascript
require.config({ baseUrl: staticHost,//这个参数设置是没有必要的 paths: { 'dialog': 'http://xxx/xxxx/dialog' } });
有远程依赖的打包上线后的配置为:
html
<script type="text/javascript" src="build/js/libs/require.js"></script> <script type="text/javascript" src="build/js/config-remote.js"></script> <script type="text/javascript" src="build/js/app/index.js"></script>
一般我们会在最后用Requirejs的node工具r.js打包成一个js文件。
所以,不存在加载顺序的问题。
作者可申请解除账号屏蔽,所有内容将会重新显示。
这个英文文档我也看了。
我感觉你那句话理解错了
注意:你在data-main中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。
你看它后面的解释,它是说require.config里加载libs/foo-1.1.3不一定比require早,会导致require加载时,去加载foo模块,结果没有了,就出错。foo模块是加载libs/foo-1.1.3成功后给的别名。
//config.js
require.config({
paths: {
foo: 'libs/foo-1.1.3'
}
});
和<script src="scripts/other.js"></script>这个没有关系。
这段英文这样写是很容易让人误解为和other.js有关系。
它后面也给了答案:
把这个config这段写到html里面,不要写到js里面。
shim:{
other:['a','b']
}
如果要加载other.js
之前先加载其它的文件,你可以在shim
中配置依赖:
shim:{
other:['a','b']
}
这表示,other
依赖a,b
两个模块,你在加载other
的时候会先按顺序加载a,b
,成功后在加载other
- win7系统如何使用WinSxS工具安全删除WinSxS文件夹垃圾?
- 升级win10技术预览版用户使用注意事项详解
- js实现简易的单数字随机抽奖(0-9)
- Asp.net 图片文件防盗链(尊重劳动成果)及BeginRequest事件学习
- Android使用ViewPager实现自动轮播
- c#实现识别图片上的验证码数字
- win7系统使用ituns设置iphone铃声图文教程
- C++实现读入二进制数并转换为十进制输出
- AngularJS实现分页显示数据库信息
- windowsXP注册表怎么备份?
- JS判断移动端访问设备并加载对应CSS样式
- js实现商品抛物线加入购物车特效
- ASP.NET通过第三方网站Bitly实现短链接地址程序
- DevExpress获取TreeList可视区域节点集合的实现方法
- 举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
- 在WinXP下如何直接查看缩略图不用双击打开
- JavaScript中的数据类型转换方法小结
- 原生JavaScript实现连连看游戏(附源码)
- zepto.js中tap事件阻止冒泡的实现方法
- php获取文件大小的方法
- 前台js对象在后台转化java对象的问题探讨
- master数据库损坏的解决办法有哪些
- 怎么快速隐藏Win8桌面图标 win8隐藏桌面图标图文教程
- js判断浏览器版本以及浏览器内核的方法
- 微信开发自定义菜单网页授权问题
- lua 函数条件与返回的区别是什么?
- php调用python,如何安全使用passthru,exec,system?
- php语言开发的网站,如何实现批量打印快递单的功能?
- 看了几个例子也没理解RBAC
- 请问 : 掌握TCP/IP通信机制,对Socket通信和HTTP通信有较深刻的理解,具有iOS平台的网络编程经验。
- 用win32 API如何取得已插入U盘的盘符
- postcss 哪个插件支持“//”注释
- javascript 中 +a 代表什么呢
- 作为socket长连接服务器,Swoole如果要做到主动对已经连接过来的,用户uid=123的那个用户,推送一条消息应该怎么写?
- 不导入头文件,一样可以使用特定类创建对象?
- jackson JSON 转对象 JSON 名必须要和对象里面一一对应吗?少不可以吗?
- uitableview如何在滚动的时候调用- (UITableViewCell *)tableView:cellForRowAtIndexPath:方法
- 请教,像豆瓣网这样的翻屏效果是怎么实现的?
- 遇到一个比较纠结的问题,关于前端代码打包和后端同步的问题。
- 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
- Magento网站如何过滤VPN到国外之后发起的请求
- mac 上面的推荐个好用SVN
- Bootstrap的CSS文件里面上下文有很多重复的选择器是怎么回事?
- laravel5 一个页面中有两个列表,如何分开分页